new version

This commit is contained in:
Michael Kifer 1997-11-01 01:46:51 +00:00
parent 9645c179af
commit 328b4b7052
13 changed files with 627 additions and 249 deletions

View file

@ -195,6 +195,7 @@ Don't put `-c' here, as it is added automatically."
;; File containing the shell command to be executed at Ex prompt,
;; e.g., :r !date
(defvar ex-cmdfile nil)
(defvar ex-cmdfile-args "")
;; flag used in viper-ex-read-file-name to indicate that we may be reading
;; multiple file names. Used for :edit and :next
@ -457,7 +458,11 @@ reversed."
"\\|" "^[ \t]*ta.*"
"\\|" "^[ \t]*una.*"
"\\|" "^[ \t]*su.*"
"\\|['`][a-z][ \t]*"
"\\|" "['`][a-z][ \t]*"
;; r! assumes that the next one is a shell command
"\\|" "\\(r\\|re\\|rea\\|read\\)[ \t]*!"
;; w ! assumes that the next one is a shell command
"\\|" "\\(w\\|wr\\|wri\\|writ.?\\)[ \t]+!"
"\\|" "![ \t]*[a-zA-Z].*"
"\\)"
"!*")))
@ -851,14 +856,16 @@ reversed."
(message "%s" ret))
ret))
;; Get a file name and set ex-variant, `ex-append' and `ex-offset' if found
;; Get a file name and set `ex-variant', `ex-append' and `ex-offset' if found
;; If it is r!, then get the command name and whatever args
(defun viper-get-ex-file ()
(let (prompt)
(setq ex-file nil
ex-variant nil
ex-append nil
ex-offset nil
ex-cmdfile nil)
ex-cmdfile nil
ex-cmdfile-args "")
(save-excursion
(save-window-excursion
(setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
@ -908,6 +915,8 @@ reversed."
;; if file name comes from history, don't leave
;; minibuffer when the user types space
(setq viper-incomplete-ex-cmd nil)
(setq ex-cmdfile-args
(substring ex-file (match-end 0) nil))
;; this must be the last clause in this progn
(substring ex-file (match-beginning 0) (match-end 0))
)
@ -958,6 +967,7 @@ reversed."
(defun ex-cmd-accepts-multiple-files-p (token)
(member token '("edit" "next" "Next")))
;; Read file name from the minibuffer in an ex command.
;; If user doesn't enter anything, then "" is returned, i.e., the
;; prompt-directory is not returned.
(defun viper-ex-read-file-name (prompt)
@ -1548,10 +1558,12 @@ reversed."
(setq ex-file buffer-file-name)))
(if ex-cmdfile
(progn
(setq command (ex-expand-filsyms ex-file (current-buffer)))
(setq command
(concat (ex-expand-filsyms ex-file (current-buffer))
ex-cmdfile-args))
(shell-command command t))
(insert-file-contents ex-file)))
(ex-fixup-history viper-last-ex-prompt ex-file))
(ex-fixup-history viper-last-ex-prompt ex-file ex-cmdfile-args))
;; this function fixes ex-history for some commands like ex-read, ex-edit
(defun ex-fixup-history (&rest args)
@ -1935,7 +1947,8 @@ Please contact your system administrator. "
(if ex-cmdfile
(progn
(viper-enlarge-region beg end)
(shell-command-on-region (point) (mark t) ex-file))
(shell-command-on-region (point) (mark t)
(concat ex-file ex-cmdfile-args)))
(if (and (string= ex-file "") (not (buffer-file-name)))
(setq ex-file
(read-file-name

View file

@ -204,28 +204,28 @@ the Ex command :map!.")
(viper-deflocalvar viper-replace-minor-mode nil
"Minor mode in effect in replace state (cw, C, and the like commands).")
;; Mode for vital things like \C-z and \C-x)
;; This is t, by default. So, any new buffer will have C-z defined as
;; switch to Vi, unless we switched states in this buffer
(viper-deflocalvar viper-emacs-intercept-minor-mode t)
;; Mode for vital things like \C-z and \C-x) This is set to t, when viper-mode
;; is invoked. So, any new buffer will have C-z defined as switch to Vi, unless
;; we switched states in this buffer
(viper-deflocalvar viper-emacs-intercept-minor-mode nil)
(viper-deflocalvar viper-emacs-local-user-minor-mode t
(viper-deflocalvar viper-emacs-local-user-minor-mode nil
"Minor mode for local user bindings effective in Emacs state.
Users can use it to override Emacs bindings when Viper is in its Emacs
state.")
(viper-deflocalvar viper-emacs-global-user-minor-mode t
(viper-deflocalvar viper-emacs-global-user-minor-mode nil
"Minor mode for global user bindings in effect in Emacs state.
Users can use it to override Emacs bindings when Viper is in its Emacs
state.")
(viper-deflocalvar viper-emacs-kbd-minor-mode t
(viper-deflocalvar viper-emacs-kbd-minor-mode nil
"Minor mode for Vi style macros in Emacs state.
The corresponding keymap stores key bindings of Vi macros defined with
`viper-record-kbd-macro' command. There is no Ex-level command to do this
interactively.")
(viper-deflocalvar viper-emacs-state-modifier-minor-mode t
(viper-deflocalvar viper-emacs-state-modifier-minor-mode nil
"Minor mode used to make major-mode-specific modification to Emacs state.
For instance, a Vi purist may want to bind `dd' in Dired mode to a function
that deletes a file.")

View file

@ -389,9 +389,6 @@ viper-insert-basic-map. Not recommended, except for novice users.")
(define-key viper-vi-basic-map "~" 'viper-toggle-case)
(define-key viper-vi-basic-map "\C-?" 'viper-backward-char)
(define-key viper-vi-basic-map "_" 'viper-nil)
;;; Escape from Emacs to Vi for one command
(global-set-key "\C-c\\" 'viper-escape-to-vi) ; everywhere
;;; This is viper-vi-diehard-map. Used when viper-vi-diehard-minor-mode is on.

View file

@ -116,10 +116,13 @@ considered related."
(not (viper-sit-for-short viper-multiclick-timeout t)))
;; Returns window where click occurs
(defsubst viper-mouse-click-window (click)
(if viper-xemacs-p
(event-window click)
(posn-window (event-start click))))
(defun viper-mouse-click-window (click)
(let ((win (if viper-xemacs-p
(event-window click)
(posn-window (event-start click)))))
(if (window-live-p win)
win
(error "Click was not over a live window"))))
;; Returns window where click occurs
(defsubst viper-mouse-click-frame (click)

View file

@ -8,7 +8,7 @@
;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
(defconst viper-version "3.001 (Polyglot) of September 23, 1997"
(defconst viper-version "3.002 (Polyglot) of October 23, 1997"
"The current version of Viper")
;; This file is part of GNU Emacs.
@ -385,6 +385,8 @@ it comes up in a wrong Viper state."
;;;###autoload
(defun toggle-viper-mode ()
"Toggle Viper on/off.
If Viper is enabled, turn it off. Otherwise, turn it on."
(interactive)
(if (eq viper-mode t)
(viper-go-away)
@ -1208,6 +1210,26 @@ These two lines must come in the order given.
(define-key viper-vi-intercept-map viper-toggle-key 'viper-toggle-key-action)
(define-key
viper-emacs-intercept-map viper-toggle-key 'viper-change-state-to-vi)
;;; Escape from Emacs and Insert modes to Vi for one command
(define-key
viper-emacs-intercept-map "\C-c\\" 'viper-escape-to-vi)
(define-key
viper-insert-intercept-map "\C-c\\" 'viper-escape-to-vi)
(if viper-mode
(progn
(setq viper-emacs-intercept-minor-mode t
viper-emacs-local-user-minor-mode t
viper-emacs-global-user-minor-mode t
viper-emacs-kbd-minor-mode t
viper-emacs-state-modifier-minor-mode t)
(setq-default viper-emacs-intercept-minor-mode t
viper-emacs-local-user-minor-mode t
viper-emacs-global-user-minor-mode t
viper-emacs-kbd-minor-mode t
viper-emacs-state-modifier-minor-mode t)
))
(if (and viper-mode
@ -1219,7 +1241,7 @@ These two lines must come in the order given.
;; this may not be enough, so we also set default minor-mode-alist.
;; Without setting the default, new buffers that come up in emacs mode have
;; minor-mode-map-alist = nil, unless we call viper-change-state-*
(if (eq viper-current-state 'emacs-state)
(if (and viper-mode (eq viper-current-state 'emacs-state))
(progn
(viper-change-state-to-emacs)
(setq-default minor-mode-map-alist minor-mode-map-alist)