aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMichael Kifer1997-07-25 01:42:53 +0000
committerMichael Kifer1997-07-25 01:42:53 +0000
commitc81246f3a62dbc9a3643788fa121241423db811f (patch)
tree46d07e964ff4d4d531d1c687a43a202c9b615312 /lisp
parentcfd86a2fdd257e6c47061fddbf9179e82757b91f (diff)
downloademacs-c81246f3a62dbc9a3643788fa121241423db811f.tar.gz
emacs-c81246f3a62dbc9a3643788fa121241423db811f.zip
new version
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emulation/viper-cmd.el11
-rw-r--r--lisp/emulation/viper.el30
2 files changed, 35 insertions, 6 deletions
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index d93b8f9b34d..ca27e860415 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -959,7 +959,8 @@ as a Meta key and any number of multiple escapes is allowed."
959;; Vi operator as prefix argument." 959;; Vi operator as prefix argument."
960(defun vip-prefix-arg-com (char value com) 960(defun vip-prefix-arg-com (char value com)
961 (let ((cont t) 961 (let ((cont t)
962 cmd-info mv-or-digit-cmd) 962 cmd-info
963 cmd-to-exec-at-end)
963 (while (and cont 964 (while (and cont
964 (memq char 965 (memq char
965 (list ?c ?d ?y ?! ?< ?> ?= ?# ?r ?R ?\" 966 (list ?c ?d ?y ?! ?< ?> ?= ?# ?r ?R ?\"
@@ -1009,8 +1010,9 @@ as a Meta key and any number of multiple escapes is allowed."
1009 (or (vip-movement-command-p char) 1010 (or (vip-movement-command-p char)
1010 (vip-digit-command-p char) 1011 (vip-digit-command-p char)
1011 (vip-regsuffix-command-p char) 1012 (vip-regsuffix-command-p char)
1013 (= char ?!) ; bang command
1012 (error "")) 1014 (error ""))
1013 (setq mv-or-digit-cmd 1015 (setq cmd-to-exec-at-end
1014 (vip-exec-form-in-vi 1016 (vip-exec-form-in-vi
1015 (` (key-binding (char-to-string (, char))))))) 1017 (` (key-binding (char-to-string (, char)))))))
1016 1018
@@ -1036,14 +1038,14 @@ as a Meta key and any number of multiple escapes is allowed."
1036 ((equal com '(?= . ?=)) (vip-line (cons value ?=))) 1038 ((equal com '(?= . ?=)) (vip-line (cons value ?=)))
1037 (t (error ""))))) 1039 (t (error "")))))
1038 1040
1039 (if mv-or-digit-cmd 1041 (if cmd-to-exec-at-end
1040 (progn 1042 (progn
1041 (setq last-command-char char) 1043 (setq last-command-char char)
1042 (setq last-command-event 1044 (setq last-command-event
1043 (vip-copy-event 1045 (vip-copy-event
1044 (if vip-xemacs-p (character-to-event char) char))) 1046 (if vip-xemacs-p (character-to-event char) char)))
1045 (condition-case nil 1047 (condition-case nil
1046 (funcall mv-or-digit-cmd cmd-info) 1048 (funcall cmd-to-exec-at-end cmd-info)
1047 (error 1049 (error
1048 (error ""))))) 1050 (error "")))))
1049 )) 1051 ))
@@ -1242,6 +1244,7 @@ as a Meta key and any number of multiple escapes is allowed."
1242 (save-excursion 1244 (save-excursion
1243 (set-mark vip-com-point) 1245 (set-mark vip-com-point)
1244 (vip-enlarge-region (mark t) (point)) 1246 (vip-enlarge-region (mark t) (point))
1247 (exchange-point-and-mark)
1245 (shell-command-on-region 1248 (shell-command-on-region
1246 (mark t) (point) 1249 (mark t) (point)
1247 (if (= com ?!) 1250 (if (= com ?!)
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index d3b369c93cf..20b46fea869 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -8,7 +8,7 @@
8 8
9;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. 9;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
10 10
11(defconst viper-version "2.95 of July 9, 1997" 11(defconst viper-version "2.95 of July 23, 1997"
12 "The current version of Viper") 12 "The current version of Viper")
13 13
14;; This file is part of GNU Emacs. 14;; This file is part of GNU Emacs.
@@ -363,6 +363,15 @@ DO NOT set this variable interactively."
363 :tag "Set Viper Mode on Loading" 363 :tag "Set Viper Mode on Loading"
364 :group 'viper) 364 :group 'viper)
365 365
366(defcustom viper-non-vi-major-modes nil
367 "*A list of major modes that should never come up in vi command mode.
368Viper automatically augments this list with some obvious modes, such as
369`dired-mode', `tar-mode', etc. So, don't put modes on this list, unless
370it comes up in a wrong Viper state."
371 :type 'list
372 :group 'viper)
373
374
366 375
367;; The following are provided for compatibility with older VIP's 376;; The following are provided for compatibility with older VIP's
368 377
@@ -454,7 +463,9 @@ This startup message appears whenever you load Viper, unless you type `y' now."
454 (sit-for 4) 463 (sit-for 4)
455 )) 464 ))
456 (viper-set-expert-level 'dont-change-unless))) 465 (viper-set-expert-level 'dont-change-unless)))
457 (vip-change-state-to-vi)))) 466
467 (or (memq major-mode viper-non-vi-major-modes) ; don't switch to Vi
468 (vip-change-state-to-vi)))))
458 469
459 470
460;; This hook designed to enable Vi-style editing in comint-based modes." 471;; This hook designed to enable Vi-style editing in comint-based modes."
@@ -744,10 +755,14 @@ remains buffer-local."
744 (vip-modify-major-mode 'dired-mode 'emacs-state vip-dired-modifier-map) 755 (vip-modify-major-mode 'dired-mode 'emacs-state vip-dired-modifier-map)
745 (vip-set-emacs-state-searchstyle-macros nil 'dired-mode) 756 (vip-set-emacs-state-searchstyle-macros nil 'dired-mode)
746 (add-hook 'dired-mode-hook 'vip-change-state-to-emacs) 757 (add-hook 'dired-mode-hook 'vip-change-state-to-emacs)
758 (setq viper-non-vi-major-modes
759 (append '(dired-mode efs-mode internal-ange-ftp-mode)
760 viper-non-vi-major-modes))
747 761
748 ;; Tar 762 ;; Tar
749 (vip-modify-major-mode 'tar-mode 'emacs-state vip-slash-and-colon-map) 763 (vip-modify-major-mode 'tar-mode 'emacs-state vip-slash-and-colon-map)
750 (vip-set-emacs-state-searchstyle-macros nil 'tar-mode) 764 (vip-set-emacs-state-searchstyle-macros nil 'tar-mode)
765 (setq viper-non-vi-major-modes (cons 'tar-mode viper-non-vi-major-modes))
751 766
752 ;; MH-E 767 ;; MH-E
753 (vip-modify-major-mode 'mh-folder-mode 'emacs-state vip-slash-and-colon-map) 768 (vip-modify-major-mode 'mh-folder-mode 'emacs-state vip-slash-and-colon-map)
@@ -755,6 +770,8 @@ remains buffer-local."
755 ;; changing state to emacs is needed so the preceding will take hold 770 ;; changing state to emacs is needed so the preceding will take hold
756 (add-hook 'mh-folder-mode-hook 'vip-change-state-to-emacs) 771 (add-hook 'mh-folder-mode-hook 'vip-change-state-to-emacs)
757 (add-hook 'mh-show-mode-hook 'viper-mode) 772 (add-hook 'mh-show-mode-hook 'viper-mode)
773 (setq viper-non-vi-major-modes
774 (cons 'mh-folder-mode viper-non-vi-major-modes))
758 775
759 ;; Gnus 776 ;; Gnus
760 (vip-modify-major-mode 'gnus-group-mode 'emacs-state vip-slash-and-colon-map) 777 (vip-modify-major-mode 'gnus-group-mode 'emacs-state vip-slash-and-colon-map)
@@ -766,6 +783,9 @@ remains buffer-local."
766 (add-hook 'gnus-group-mode-hook 'vip-change-state-to-emacs) 783 (add-hook 'gnus-group-mode-hook 'vip-change-state-to-emacs)
767 (add-hook 'gnus-summary-mode-hook 'vip-change-state-to-emacs) 784 (add-hook 'gnus-summary-mode-hook 'vip-change-state-to-emacs)
768 (add-hook 'gnus-article-mode-hook 'viper-mode) 785 (add-hook 'gnus-article-mode-hook 'viper-mode)
786 (setq viper-non-vi-major-modes
787 (append '(gnus-group-mode gnus-summary-mode)
788 viper-non-vi-major-modes))
769 789
770 ;; Info 790 ;; Info
771 (vip-modify-major-mode 'Info-mode 'emacs-state vip-slash-and-colon-map) 791 (vip-modify-major-mode 'Info-mode 'emacs-state vip-slash-and-colon-map)
@@ -774,6 +794,7 @@ remains buffer-local."
774 (defadvice Info-mode (after vip-Info-ad activate) 794 (defadvice Info-mode (after vip-Info-ad activate)
775 "Switch to emacs mode." 795 "Switch to emacs mode."
776 (vip-change-state-to-emacs)) 796 (vip-change-state-to-emacs))
797 (setq viper-non-vi-major-modes (cons 'Info-mode viper-non-vi-major-modes))
777 798
778 ;; Buffer menu 799 ;; Buffer menu
779 (vip-modify-major-mode 800 (vip-modify-major-mode
@@ -783,12 +804,15 @@ remains buffer-local."
783 (defadvice Buffer-menu-mode (after vip-Buffer-menu-ad activate) 804 (defadvice Buffer-menu-mode (after vip-Buffer-menu-ad activate)
784 "Switch to emacs mode." 805 "Switch to emacs mode."
785 (vip-change-state-to-emacs)) 806 (vip-change-state-to-emacs))
807 (setq viper-non-vi-major-modes
808 (cons 'Buffer-menu-mode viper-non-vi-major-modes))
786 809
787 ;; View mode 810 ;; View mode
788 (defvar view-mode-hook) 811 (defvar view-mode-hook)
789 (defvar view-hook) 812 (defvar view-hook)
790 (add-hook 'view-hook 'vip-change-state-to-emacs) 813 (add-hook 'view-hook 'vip-change-state-to-emacs)
791 (add-hook 'view-mode-hook 'vip-change-state-to-emacs) 814 (add-hook 'view-mode-hook 'vip-change-state-to-emacs)
815 (setq viper-non-vi-major-modes (cons 'view-mode viper-non-vi-major-modes))
792 816
793 ;; For VM users. 817 ;; For VM users.
794 ;; Put summary and other VM buffers in Emacs state. 818 ;; Put summary and other VM buffers in Emacs state.
@@ -796,6 +820,8 @@ remains buffer-local."
796 (defvar vm-summary-mode-hooks) 820 (defvar vm-summary-mode-hooks)
797 (add-hook 'vm-mode-hooks 'vip-change-state-to-emacs) 821 (add-hook 'vm-mode-hooks 'vip-change-state-to-emacs)
798 (add-hook 'vm-summary-mode-hooks 'vip-change-state-to-emacs) 822 (add-hook 'vm-summary-mode-hooks 'vip-change-state-to-emacs)
823 (setq viper-non-vi-major-modes
824 (append '(vm-mode vm-summary-mode) viper-non-vi-major-modes))
799 825
800 ;; For RMAIL users. 826 ;; For RMAIL users.
801 ;; Put buf in Emacs state after edit. 827 ;; Put buf in Emacs state after edit.