diff options
| author | Michael Kifer | 1997-07-25 01:42:53 +0000 |
|---|---|---|
| committer | Michael Kifer | 1997-07-25 01:42:53 +0000 |
| commit | c81246f3a62dbc9a3643788fa121241423db811f (patch) | |
| tree | 46d07e964ff4d4d531d1c687a43a202c9b615312 /lisp | |
| parent | cfd86a2fdd257e6c47061fddbf9179e82757b91f (diff) | |
| download | emacs-c81246f3a62dbc9a3643788fa121241423db811f.tar.gz emacs-c81246f3a62dbc9a3643788fa121241423db811f.zip | |
new version
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/emulation/viper-cmd.el | 11 | ||||
| -rw-r--r-- | lisp/emulation/viper.el | 30 |
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. | ||
| 368 | Viper 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 | ||
| 370 | it 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. |