diff lisp/emulation/viper.el @ 64215:a4c59075cac8

* viper-cmd.el (viper--key-maps): new variable. (viper-normalize-minor-mode-map-alist): use viper--key-maps and emulation-mode-map-alists. (viper-envelop-ESC-key): use viper-subseq. (viper-search-forward/backward/next): disable debug-on-error. * viper-keym.el (viper-toggle-key,viper-quoted-insert-key, viper-ESC-key): new defcustoms. * viper-macs.el (ex-map-read-args): use viper-subseq. * viper-util.el (viper-key-to-emacs-key): use viper-subseq. (viper-subseq): copy of subseq from cl.el. * viper.el (viper-go-away,viper-set-hooks): use emulation-mode-map-alists, advise self-insert-command, add-minor-mode. * viper-mous.el (viper-current-frame-saved): use defvar. * viper-init.el: got rid of -face in face names. * ediff-diff.el (ediff-extract-diffs,ediff-extract-diffs3): Make it work with longlines mode * ediff-mult.el (ediff-meta-mode-hook): new variable. * ediff-ptch.el (ediff-file-name-sans-prefix): quote regexp. * ediff-init: got rid of -face in face names.
author Michael Kifer <kifer@cs.stonybrook.edu>
date Sun, 10 Jul 2005 18:46:24 +0000
parents 18a818a2ee7c
children 34bd8e434dd7 fbb2bea03df9
line wrap: on
line diff
--- a/lisp/emulation/viper.el	Sun Jul 10 18:17:18 2005 +0000
+++ b/lisp/emulation/viper.el	Sun Jul 10 18:46:24 2005 +0000
@@ -8,7 +8,7 @@
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 ;; Keywords: emulations
 
-(defconst viper-version "3.11.4 of February 19, 2005"
+(defconst viper-version "3.11.5 of July 8, 2005"
   "The current version of Viper")
 
 ;; This file is part of GNU Emacs.
@@ -320,6 +320,7 @@
 ;; end pacifier
 
 (require 'viper-init)
+(require 'viper-keym)
 
 ;; better be defined before Viper custom group.
 (defvar viper-custom-file-name (convert-standard-filename "~/.viper")
@@ -691,6 +692,12 @@
 
   (setq viper-mode nil)
 
+  (when (and (fboundp 'add-to-ordered-list) (boundp 'emulation-mode-map-alists))
+    (setq emulation-mode-map-alists
+	  (delq 'viper--intercept-key-maps
+		(delq 'viper--key-maps emulation-mode-map-alists))
+	  ))
+
   (viper-delocalize-var 'viper-vi-minibuffer-minor-mode)
   (viper-delocalize-var 'viper-insert-minibuffer-minor-mode)
   (viper-delocalize-var 'viper-vi-intercept-minor-mode)
@@ -874,9 +881,27 @@
       "Switch to emacs state while reading password."
       (viper-change-state-to-emacs)))
 
+  (defadvice self-insert-command (around viper-self-insert-ad activate)
+    "Ignore all self-inserting keys in the vi-state."
+    (if (and (eq viper-current-state 'vi-state) (interactive-p))
+	(beep 1)
+      ad-do-it
+      ))
+
+  (when (and (fboundp 'add-to-ordered-list) (boundp 'emulation-mode-map-alists))
+    ;; needs to be as early as possible
+    (add-to-ordered-list
+     'emulation-mode-map-alists 'viper--intercept-key-maps 100)
+    ;; needs to be after cua-mode
+    (add-to-ordered-list 'emulation-mode-map-alists 'viper--key-maps 500)
+    )
+
   ;; Emacs shell, ange-ftp, and comint-based modes
   (add-hook 'comint-mode-hook 'viper-comint-mode-hook) ; comint
 
+  (add-hook 'eshell-mode-hook
+	    (lambda () (setq viper-auto-indent nil)))
+
   (viper-set-emacs-state-searchstyle-macros nil 'dired-mode) ; dired
   (viper-set-emacs-state-searchstyle-macros nil 'tar-mode) ; tar
   (viper-set-emacs-state-searchstyle-macros nil 'mh-folder-mode) ; mhe
@@ -1058,6 +1083,14 @@
     (define-key viper-insert-intercept-map "\C-x)" nil)
     (define-key viper-emacs-intercept-map "\C-x)" nil))
 
+  (defadvice add-minor-mode (after
+			     viper-advice-add-minor-mode
+			     (toggle name &optional keymap after toggle-fun)
+			     activate)
+  "Run viper-normalize-minor-mode-map-alist after adding a minor mode."
+  (viper-normalize-minor-mode-map-alist)
+  (setq-default minor-mode-map-alist minor-mode-map-alist))
+
   ;; catch frame switching event
   (if (viper-window-display-p)
       (if viper-xemacs-p