Mercurial > emacs
changeset 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 | 0441edbff1bf |
children | 6c19076eecb0 |
files | lisp/ChangeLog lisp/ediff-diff.el lisp/ediff-init.el lisp/ediff-mult.el lisp/ediff-ptch.el lisp/ediff-util.el lisp/ediff-vers.el lisp/ediff.el lisp/emulation/viper-cmd.el lisp/emulation/viper-init.el lisp/emulation/viper-keym.el lisp/emulation/viper-macs.el lisp/emulation/viper-mous.el lisp/emulation/viper-util.el lisp/emulation/viper.el man/viper.texi |
diffstat | 16 files changed, 383 insertions(+), 198 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ChangeLog Sun Jul 10 18:46:24 2005 +0000 @@ -1,3 +1,35 @@ +2005-07-10 Michael Kifer <kifer@cs.stonybrook.edu> + + * 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. + 2005-07-10 Richard M. Stallman <rms@gnu.org> * emacs-lisp/edebug.el (edebug-enter): Call with-timeout-suspend
--- a/lisp/ediff-diff.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-diff.el Sun Jul 10 18:46:24 2005 +0000 @@ -459,24 +459,46 @@ c-prev c-end) ;; else convert lines to points (ediff-with-current-buffer A-buffer - (forward-line (- a-begin a-prev)) - (setq a-begin-pt (point)) - (forward-line (- a-end a-begin)) - (setq a-end-pt (point) - a-prev a-end)) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + ;; we must disable and then restore longlines-mode + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- a-begin a-prev)) + (setq a-begin-pt (point)) + (forward-line (- a-end a-begin)) + (setq a-end-pt (point) + a-prev a-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + )) (ediff-with-current-buffer B-buffer - (forward-line (- b-begin b-prev)) - (setq b-begin-pt (point)) - (forward-line (- b-end b-begin)) - (setq b-end-pt (point) - b-prev b-end)) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- b-begin b-prev)) + (setq b-begin-pt (point)) + (forward-line (- b-end b-begin)) + (setq b-end-pt (point) + b-prev b-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + )) (if (ediff-buffer-live-p C-buffer) (ediff-with-current-buffer C-buffer - (forward-line (- c-begin c-prev)) - (setq c-begin-pt (point)) - (forward-line (- c-end c-begin)) - (setq c-end-pt (point) - c-prev c-end))) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- c-begin c-prev)) + (setq c-begin-pt (point)) + (forward-line (- c-end c-begin)) + (setq c-end-pt (point) + c-prev c-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + ))) (setq diff-list (nconc diff-list @@ -1060,30 +1082,59 @@ c-prev c-end) ;; else convert lines to points (ediff-with-current-buffer A-buffer - (forward-line (- a-begin a-prev)) - (setq a-begin-pt (point)) - (forward-line (- a-end a-begin)) - (setq a-end-pt (point) - a-prev a-end)) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + ;; we must disable and then restore longlines-mode + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- a-begin a-prev)) + (setq a-begin-pt (point)) + (forward-line (- a-end a-begin)) + (setq a-end-pt (point) + a-prev a-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + )) (ediff-with-current-buffer B-buffer - (forward-line (- b-begin b-prev)) - (setq b-begin-pt (point)) - (forward-line (- b-end b-begin)) - (setq b-end-pt (point) - b-prev b-end)) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- b-begin b-prev)) + (setq b-begin-pt (point)) + (forward-line (- b-end b-begin)) + (setq b-end-pt (point) + b-prev b-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + )) (ediff-with-current-buffer C-buffer - (forward-line (- c-begin c-prev)) - (setq c-begin-pt (point)) - (forward-line (- c-end c-begin)) - (setq c-end-pt (point) - c-prev c-end)) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- c-begin c-prev)) + (setq c-begin-pt (point)) + (forward-line (- c-end c-begin)) + (setq c-end-pt (point) + c-prev c-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + )) (if (ediff-buffer-live-p anc-buffer) (ediff-with-current-buffer anc-buffer - (forward-line (- c-or-anc-begin anc-prev)) - (setq anc-begin-pt (point)) - (forward-line (- c-or-anc-end c-or-anc-begin)) - (setq anc-end-pt (point) - anc-prev c-or-anc-end))) + (let ((longlines-mode-val + (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) + (if (eq longlines-mode-val 1) + (longlines-mode 0)) + (forward-line (- c-or-anc-begin anc-prev)) + (setq anc-begin-pt (point)) + (forward-line (- c-or-anc-end c-or-anc-begin)) + (setq anc-end-pt (point) + anc-prev c-or-anc-end) + (if (eq longlines-mode-val 1) + (longlines-mode longlines-mode-val)) + ))) (setq diff-list (nconc diff-list @@ -1425,6 +1476,5 @@ ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body)) ;;; End: - ;;; arch-tag: a86d448e-58d7-4572-a1d9-fdedfa22f648 ;;; ediff-diff.el ends here
--- a/lisp/ediff-init.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-init.el Sun Jul 10 18:46:24 2005 +0000 @@ -854,10 +854,10 @@ ;; A-list of current-diff-face-* symbols associated with buf types (defconst ediff-current-diff-face-alist - '((A . ediff-current-diff-face-A) - (B . ediff-current-diff-face-B) - (C . ediff-current-diff-face-C) - (Ancestor . ediff-current-diff-face-Ancestor))) + '((A . ediff-current-diff-A) + (B . ediff-current-diff-B) + (C . ediff-current-diff-C) + (Ancestor . ediff-current-diff-Ancestor))) (defun ediff-set-overlay-face (extent face) @@ -915,8 +915,6 @@ (t (:inverse-video t)))) "Face for highlighting the selected difference in buffer A." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-current-diff-face-A 'face-alias 'ediff-current-diff-A) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-current-diff-face-A 'ediff-current-diff-A @@ -924,13 +922,13 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-current-diff-A' this variable represents.") -(ediff-hide-face 'ediff-current-diff-A) +(ediff-hide-face ediff-current-diff-face-A) ;; Until custom.el for XEmacs starts supporting :inverse-video we do this. ;; This means that some user customization may be trashed. (if (and ediff-xemacs-p (ediff-has-face-support-p) (not (ediff-color-display-p))) - (copy-face 'modeline 'ediff-current-diff-A)) + (copy-face 'modeline ediff-current-diff-face-A)) @@ -948,8 +946,6 @@ (t (:inverse-video t)))) "Face for highlighting the selected difference in buffer B." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-current-diff-face-B 'face-alias 'ediff-current-diff-B) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-current-diff-face-B 'ediff-current-diff-B @@ -957,13 +953,13 @@ this variable. Instead, use the customization widget to customize the actual face `ediff-current-diff-B' this variable represents.") -(ediff-hide-face 'ediff-current-diff-B) +(ediff-hide-face ediff-current-diff-face-B) ;; Until custom.el for XEmacs starts supporting :inverse-video we do this. ;; This means that some user customization may be trashed. (if (and ediff-xemacs-p (ediff-has-face-support-p) (not (ediff-color-display-p))) - (copy-face 'modeline 'ediff-current-diff-B)) + (copy-face 'modeline ediff-current-diff-face-B)) (defface ediff-current-diff-C @@ -978,8 +974,6 @@ (t (:inverse-video t)))) "Face for highlighting the selected difference in buffer C." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-current-diff-face-C 'face-alias 'ediff-current-diff-C) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-current-diff-face-C 'ediff-current-diff-C @@ -987,13 +981,13 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-current-diff-C' this variable represents.") -(ediff-hide-face 'ediff-current-diff-C) +(ediff-hide-face ediff-current-diff-face-C) ;; Until custom.el for XEmacs starts supporting :inverse-video we do this. ;; This means that some user customization may be trashed. (if (and ediff-xemacs-p (ediff-has-face-support-p) (not (ediff-color-display-p))) - (copy-face 'modeline 'ediff-current-diff-C)) + (copy-face 'modeline ediff-current-diff-face-C)) (defface ediff-current-diff-Ancestor @@ -1008,8 +1002,6 @@ (t (:inverse-video t)))) "Face for highlighting the selected difference in buffer Ancestor." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-current-diff-face-Ancestor 'face-alias 'ediff-current-diff-Ancestor) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-current-diff-face-Ancestor 'ediff-current-diff-Ancestor @@ -1017,13 +1009,13 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-current-diff-Ancestor' this variable represents.") -(ediff-hide-face 'ediff-current-diff-Ancestor) +(ediff-hide-face ediff-current-diff-face-Ancestor) ;; Until custom.el for XEmacs starts supporting :inverse-video we do this. ;; This means that some user customization may be trashed. (if (and ediff-xemacs-p (ediff-has-face-support-p) (not (ediff-color-display-p))) - (copy-face 'modeline 'ediff-current-diff-Ancestor)) + (copy-face 'modeline ediff-current-diff-face-Ancestor)) (defface ediff-fine-diff-A @@ -1038,8 +1030,6 @@ (t (:underline t :stipple "gray3")))) "Face for highlighting the refinement of the selected diff in buffer A." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-fine-diff-face-A 'face-alias 'ediff-fine-diff-A) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-fine-diff-face-A 'ediff-fine-diff-A @@ -1047,7 +1037,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-fine-diff-A' this variable represents.") -(ediff-hide-face 'ediff-fine-diff-A) +(ediff-hide-face ediff-fine-diff-face-A) (defface ediff-fine-diff-B (if ediff-emacs-p @@ -1061,8 +1051,6 @@ (t (:underline t :stipple "gray3")))) "Face for highlighting the refinement of the selected diff in buffer B." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-fine-diff-face-B 'face-alias 'ediff-fine-diff-B) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-fine-diff-face-B 'ediff-fine-diff-B @@ -1070,7 +1058,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-fine-diff-B' this variable represents.") -(ediff-hide-face 'ediff-fine-diff-B) +(ediff-hide-face ediff-fine-diff-face-B) (defface ediff-fine-diff-C (if ediff-emacs-p @@ -1089,8 +1077,6 @@ (t (:underline t :stipple "gray3")))) "Face for highlighting the refinement of the selected diff in buffer C." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-fine-diff-face-C 'face-alias 'ediff-fine-diff-C) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-fine-diff-face-C 'ediff-fine-diff-C @@ -1098,7 +1084,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-fine-diff-C' this variable represents.") -(ediff-hide-face 'ediff-fine-diff-C) +(ediff-hide-face ediff-fine-diff-face-C) (defface ediff-fine-diff-Ancestor (if ediff-emacs-p @@ -1114,8 +1100,6 @@ At present, this face is not used and no fine differences are computed for the ancestor buffer." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-fine-diff-face-Ancestor 'face-alias 'ediff-fine-diff-Ancestor) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-fine-diff-face-Ancestor 'ediff-fine-diff-Ancestor @@ -1123,7 +1107,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-fine-diff-Ancestor' this variable represents.") -(ediff-hide-face 'ediff-fine-diff-Ancestor) +(ediff-hide-face ediff-fine-diff-face-Ancestor) ;; Some installs don't have stipple or Stipple. So, try them in turn. (defvar stipple-pixmap @@ -1151,8 +1135,6 @@ (t (:italic t :stipple ,stipple-pixmap)))) "Face for highlighting even-numbered non-current differences in buffer A." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-even-diff-face-A 'face-alias 'ediff-even-diff-A) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-even-diff-face-A 'ediff-even-diff-A @@ -1160,7 +1142,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-even-diff-A' this variable represents.") -(ediff-hide-face 'ediff-even-diff-A) +(ediff-hide-face ediff-even-diff-face-A) (defface ediff-even-diff-B (if ediff-emacs-p @@ -1174,8 +1156,6 @@ (t (:italic t :stipple ,stipple-pixmap)))) "Face for highlighting even-numbered non-current differences in buffer B." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-even-diff-face-B 'face-alias 'ediff-even-diff-B) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-even-diff-face-B 'ediff-even-diff-B @@ -1183,7 +1163,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-even-diff-B' this variable represents.") -(ediff-hide-face 'ediff-even-diff-B) +(ediff-hide-face ediff-even-diff-face-B) (defface ediff-even-diff-C (if ediff-emacs-p @@ -1202,8 +1182,6 @@ (t (:italic t :stipple ,stipple-pixmap)))) "Face for highlighting even-numbered non-current differences in buffer C." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-even-diff-face-C 'face-alias 'ediff-even-diff-C) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-even-diff-face-C 'ediff-even-diff-C @@ -1211,7 +1189,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-even-diff-C' this variable represents.") -(ediff-hide-face 'ediff-even-diff-C) +(ediff-hide-face ediff-even-diff-face-C) (defface ediff-even-diff-Ancestor (if ediff-emacs-p @@ -1230,8 +1208,6 @@ (t (:italic t :stipple ,stipple-pixmap)))) "Face for highlighting even-numbered non-current differences in the ancestor buffer." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-even-diff-face-Ancestor 'face-alias 'ediff-even-diff-Ancestor) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-even-diff-face-Ancestor 'ediff-even-diff-Ancestor @@ -1239,7 +1215,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-even-diff-Ancestor' this variable represents.") -(ediff-hide-face 'ediff-even-diff-Ancestor) +(ediff-hide-face ediff-even-diff-face-Ancestor) ;; Association between buffer types and even-diff-face symbols (defconst ediff-even-diff-face-alist @@ -1263,8 +1239,6 @@ (t (:italic t :stipple "gray1")))) "Face for highlighting odd-numbered non-current differences in buffer A." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-odd-diff-face-A 'face-alias 'ediff-odd-diff-A) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-odd-diff-face-A 'ediff-odd-diff-A @@ -1272,7 +1246,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-odd-diff-A' this variable represents.") -(ediff-hide-face 'ediff-odd-diff-A) +(ediff-hide-face ediff-odd-diff-face-A) (defface ediff-odd-diff-B @@ -1290,8 +1264,6 @@ (t (:italic t :stipple "gray1")))) "Face for highlighting odd-numbered non-current differences in buffer B." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-odd-diff-face-B 'face-alias 'ediff-odd-diff-B) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-odd-diff-face-B 'ediff-odd-diff-B @@ -1299,7 +1271,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-odd-diff-B' this variable represents.") -(ediff-hide-face 'ediff-odd-diff-B) +(ediff-hide-face ediff-odd-diff-face-B) (defface ediff-odd-diff-C (if ediff-emacs-p @@ -1316,8 +1288,6 @@ (t (:italic t :stipple "gray1")))) "Face for highlighting odd-numbered non-current differences in buffer C." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-odd-diff-face-C 'face-alias 'ediff-odd-diff-C) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-odd-diff-face-C 'ediff-odd-diff-C @@ -1325,7 +1295,7 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-odd-diff-C' this variable represents.") -(ediff-hide-face 'ediff-odd-diff-C) +(ediff-hide-face ediff-odd-diff-face-C) (defface ediff-odd-diff-Ancestor (if ediff-emacs-p @@ -1339,8 +1309,6 @@ (t (:italic t :stipple "gray1")))) "Face for highlighting odd-numbered non-current differences in the ancestor buffer." :group 'ediff-highlighting) -;; backward-compatibility alias -(put 'ediff-odd-diff-face-Ancestor 'face-alias 'ediff-odd-diff-Ancestor) ;; An internal variable. Ediff takes the face from here. When unhighlighting, ;; this variable is set to nil, then again to the appropriate face. (defvar ediff-odd-diff-face-Ancestor 'ediff-odd-diff-Ancestor @@ -1348,30 +1316,30 @@ DO NOT CHANGE this variable. Instead, use the customization widget to customize the actual face object `ediff-odd-diff-Ancestor' this variable represents.") -(ediff-hide-face 'ediff-odd-diff-Ancestor) +(ediff-hide-face ediff-odd-diff-face-Ancestor) ;; Association between buffer types and odd-diff-face symbols (defconst ediff-odd-diff-face-alist - '((A . ediff-odd-diff-face-A) - (B . ediff-odd-diff-face-B) - (C . ediff-odd-diff-face-C) - (Ancestor . ediff-odd-diff-face-Ancestor))) + '((A . ediff-odd-diff-A) + (B . ediff-odd-diff-B) + (C . ediff-odd-diff-C) + (Ancestor . ediff-odd-diff-Ancestor))) ;; A-list of fine-diff face symbols associated with buffer types (defconst ediff-fine-diff-face-alist - '((A . ediff-fine-diff-face-A) - (B . ediff-fine-diff-face-B) - (C . ediff-fine-diff-face-C) - (Ancestor . ediff-fine-diff-face-Ancestor))) + '((A . ediff-fine-diff-A) + (B . ediff-fine-diff-B) + (C . ediff-fine-diff-C) + (Ancestor . ediff-fine-diff-Ancestor))) ;; Help echo -(put 'ediff-fine-diff-A 'ediff-help-echo +(put ediff-fine-diff-face-A 'ediff-help-echo "A `refinement' of the current difference region") -(put 'ediff-fine-diff-B 'ediff-help-echo +(put ediff-fine-diff-face-B 'ediff-help-echo "A `refinement' of the current difference region") -(put 'ediff-fine-diff-C 'ediff-help-echo +(put ediff-fine-diff-face-C 'ediff-help-echo "A `refinement' of the current difference region") -(put 'ediff-fine-diff-Ancestor 'ediff-help-echo +(put ediff-fine-diff-face-Ancestor 'ediff-help-echo "A `refinement' of the current difference region") (add-hook 'ediff-quit-hook 'ediff-cleanup-mess) @@ -1899,6 +1867,8 @@ (set-buffer ,old-buffer) (set-syntax-table ,old-table))))))) +(provide 'ediff-init) + ;;; Local Variables: @@ -1907,7 +1877,5 @@ ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body)) ;;; End: -(provide 'ediff-init) - ;;; arch-tag: fa31d384-1e70-4d4b-82a7-3e96307c46f5 ;;; ediff-init.el ends here
--- a/lisp/ediff-mult.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-mult.el Sun Jul 10 18:46:24 2005 +0000 @@ -205,6 +205,12 @@ This can be toggled with `ediff-toggle-filename-truncation'." :type 'boolean :group 'ediff-mult) + +(defcustom ediff-meta-mode-hook nil + "*Hooks run just after setting up meta mode." + :type 'hook + :group 'ediff-mult) + (defcustom ediff-registry-setup-hook nil "*Hooks run just after the registry control panel is set up." :type 'hook @@ -411,7 +417,8 @@ (kill-all-local-variables) (setq major-mode 'ediff-meta-mode) (setq mode-name "MetaEdiff") - (run-mode-hooks 'ediff-meta-mode-hook)) + ;; don't use run-mode-hooks here! + (run-hooks 'ediff-meta-mode-hook)) ;; the keymap for the buffer showing directory differences
--- a/lisp/ediff-ptch.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-ptch.el Sun Jul 10 18:46:24 2005 +0000 @@ -163,7 +163,7 @@ ;; returns /dev/null, if can't strip prefix (defsubst ediff-file-name-sans-prefix (filename prefix) (save-match-data - (if (string-match (concat "^" prefix) filename) + (if (string-match (concat "^" (regexp-quote prefix)) filename) (substring filename (match-end 0)) (concat "/null/" filename))))
--- a/lisp/ediff-util.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-util.el Sun Jul 10 18:46:24 2005 +0000 @@ -117,7 +117,13 @@ (kill-all-local-variables) (setq major-mode 'ediff-mode) (setq mode-name "Ediff") - (run-mode-hooks 'ediff-mode-hook)) + ;; We use run-hooks instead of run-mode-hooks for two reasons. + ;; The ediff control buffer is read-only and it is not supposed to be + ;; modified by minor modes and such. So, run-mode-hooks doesn't do anything + ;; useful here on top of what run-hooks does. + ;; Second, changing run-hooks to run-mode-hooks would require an + ;; if-statement, since XEmacs doesn't have this. + (run-hooks 'ediff-mode-hook)) @@ -3788,9 +3794,8 @@ type ediff-current-diff-overlay-alist)) (buffer (ediff-get-buffer type)) (face (face-name - (symbol-value - (ediff-get-symbol-from-alist - type ediff-current-diff-face-alist))))) + (ediff-get-symbol-from-alist + type ediff-current-diff-face-alist)))) (set overlay (ediff-make-bullet-proof-overlay (point-max) (point-max) buffer)) (ediff-set-overlay-face (symbol-value overlay) face)
--- a/lisp/ediff-vers.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff-vers.el Sun Jul 10 18:46:24 2005 +0000 @@ -304,13 +304,14 @@ (if (stringp tmp-file) (delete-file tmp-file)) (if (stringp ancestor-file) (delete-file ancestor-file)))) + +(provide 'ediff-vers) + ;;; Local Variables: ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) ;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1) ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body)) ;;; End: -(provide 'ediff-vers) - ;;; arch-tag: bbb34f0c-2a90-426a-a77a-c75f479ebbbf ;;; ediff-vers.el ends here
--- a/lisp/ediff.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/ediff.el Sun Jul 10 18:46:24 2005 +0000 @@ -7,7 +7,7 @@ ;; Keywords: comparing, merging, patching, tools, unix (defconst ediff-version "2.80" "The current version of Ediff") -(defconst ediff-date "June 3, 2005" "Date of last update") +(defconst ediff-date "July 8, 2005" "Date of last update") ;; This file is part of GNU Emacs. @@ -1526,15 +1526,15 @@ (add-to-list 'debug-ignored-errors mess)) +(require 'ediff-util) + +(run-hooks 'ediff-load-hook) + ;;; Local Variables: ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) ;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1) ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body)) ;;; End: -(require 'ediff-util) - -(run-hooks 'ediff-load-hook) - ;;; arch-tag: 97c71396-db02-4f41-8b48-6a51c3348fcc ;;; ediff.el ends here
--- a/lisp/emulation/viper-cmd.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-cmd.el Sun Jul 10 18:46:24 2005 +0000 @@ -36,6 +36,8 @@ (defvar viper-always) (defvar viper-mode-string) (defvar viper-custom-file-name) +(defvar viper--key-maps) +(defvar viper--intercept-key-maps) (defvar iso-accents-mode) (defvar quail-mode) (defvar quail-current-str) @@ -92,7 +94,7 @@ ;; Variables for defining VI commands ;; Modifying commands that can be prefixes to movement commands -(defconst viper-prefix-commands '(?c ?d ?y ?! ?= ?# ?< ?> ?\")) +(defvar viper-prefix-commands '(?c ?d ?y ?! ?= ?# ?< ?> ?\")) ;; define viper-prefix-command-p (viper-test-com-defun viper-prefix-command) @@ -440,23 +442,24 @@ ;; This ensures that Viper bindings are in effect, regardless of which minor ;; modes were turned on by the user or by other packages. (defun viper-normalize-minor-mode-map-alist () - (setq minor-mode-map-alist - (viper-append-filter-alist - (list (cons 'viper-vi-intercept-minor-mode viper-vi-intercept-map) - (cons 'viper-vi-minibuffer-minor-mode viper-minibuffer-map) - (cons 'viper-vi-local-user-minor-mode viper-vi-local-user-map) - (cons 'viper-vi-kbd-minor-mode viper-vi-kbd-map) - (cons 'viper-vi-global-user-minor-mode viper-vi-global-user-map) - (cons 'viper-vi-state-modifier-minor-mode - (if (keymapp - (cdr (assoc major-mode - viper-vi-state-modifier-alist))) - (cdr (assoc major-mode viper-vi-state-modifier-alist)) - viper-empty-keymap)) - (cons 'viper-vi-diehard-minor-mode viper-vi-diehard-map) - (cons 'viper-vi-basic-minor-mode viper-vi-basic-map) - (cons 'viper-insert-intercept-minor-mode - viper-insert-intercept-map) + (setq viper--intercept-key-maps + (list + (cons 'viper-vi-intercept-minor-mode viper-vi-intercept-map) + (cons 'viper-insert-intercept-minor-mode viper-insert-intercept-map) + (cons 'viper-emacs-intercept-minor-mode viper-emacs-intercept-map) + )) + (setq viper--key-maps + (list (cons 'viper-vi-minibuffer-minor-mode viper-minibuffer-map) + (cons 'viper-vi-local-user-minor-mode viper-vi-local-user-map) + (cons 'viper-vi-kbd-minor-mode viper-vi-kbd-map) + (cons 'viper-vi-global-user-minor-mode viper-vi-global-user-map) + (cons 'viper-vi-state-modifier-minor-mode + (if (keymapp + (cdr (assoc major-mode viper-vi-state-modifier-alist))) + (cdr (assoc major-mode viper-vi-state-modifier-alist)) + viper-empty-keymap)) + (cons 'viper-vi-diehard-minor-mode viper-vi-diehard-map) + (cons 'viper-vi-basic-minor-mode viper-vi-basic-map) (cons 'viper-replace-minor-mode viper-replace-map) ;; viper-insert-minibuffer-minor-mode must come after ;; viper-replace-minor-mode @@ -476,8 +479,6 @@ viper-empty-keymap)) (cons 'viper-insert-diehard-minor-mode viper-insert-diehard-map) (cons 'viper-insert-basic-minor-mode viper-insert-basic-map) - (cons 'viper-emacs-intercept-minor-mode - viper-emacs-intercept-map) (cons 'viper-emacs-local-user-minor-mode viper-emacs-local-user-map) (cons 'viper-emacs-kbd-minor-mode viper-emacs-kbd-map) @@ -490,8 +491,16 @@ (cdr (assoc major-mode viper-emacs-state-modifier-alist)) viper-empty-keymap)) - ) - minor-mode-map-alist))) + )) + + ;; in emacs with emulation-mode-map-alists, nothing needs to be done + (unless + (and (fboundp 'add-to-ordered-list) (boundp 'emulation-mode-map-alists)) + (setq minor-mode-map-alist + (viper-append-filter-alist + (append viper--intercept-key-maps viper--key-maps) + minor-mode-map-alist))) + ) @@ -1021,7 +1030,7 @@ (not viper-translate-all-ESC-keysequences)) ;; put keys following ESC on the unread list ;; and return ESC as the key-sequence - (viper-set-unread-command-events (subseq keyseq 1)) + (viper-set-unread-command-events (viper-subseq keyseq 1)) (setq last-input-event event keyseq (if viper-emacs-p "\e" @@ -1032,7 +1041,7 @@ (viper-set-unread-command-events (vconcat (vector (character-to-event (event-key first-key))) - (subseq keyseq 1))) + (viper-subseq keyseq 1))) (setq last-input-event event keyseq (vector (character-to-event ?\e)))) ((eventp first-key) @@ -3732,7 +3741,8 @@ (interactive "P") (let ((val (viper-P-val arg)) (com (viper-getcom arg)) - (old-str viper-s-string)) + (old-str viper-s-string) + debug-on-error) (setq viper-s-forward t) (viper-if-string "/") ;; this is not used at present, but may be used later @@ -3744,7 +3754,8 @@ (if com (progn (viper-move-marker-locally 'viper-com-point (mark t)) - (viper-execute-com 'viper-search-next val com))))) + (viper-execute-com 'viper-search-next val com))) + )) (defun viper-search-backward (arg) "Search a string backward. @@ -3753,7 +3764,8 @@ (interactive "P") (let ((val (viper-P-val arg)) (com (viper-getcom arg)) - (old-str viper-s-string)) + (old-str viper-s-string) + debug-on-error) (setq viper-s-forward nil) (viper-if-string "?") ;; this is not used at present, but may be used later @@ -3858,7 +3870,8 @@ "Repeat previous search." (interactive "P") (let ((val (viper-p-val arg)) - (com (viper-getcom arg))) + (com (viper-getcom arg)) + debug-on-error) (if (null viper-s-string) (error viper-NoPrevSearch)) (viper-search viper-s-string viper-s-forward arg) (if com @@ -3870,7 +3883,8 @@ "Repeat previous search in the reverse direction." (interactive "P") (let ((val (viper-p-val arg)) - (com (viper-getcom arg))) + (com (viper-getcom arg)) + debug-on-error) (if (null viper-s-string) (error viper-NoPrevSearch)) (viper-search viper-s-string (not viper-s-forward) arg) (if com
--- a/lisp/emulation/viper-init.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-init.el Sun Jul 10 18:46:24 2005 +0000 @@ -855,15 +855,13 @@ (t (:underline t :stipple "gray3"))) "*Face used to flash out the search pattern." :group 'viper-highlighting) -;; backward-compatibility alias -(put 'viper-search-face 'face-alias 'viper-search) ;; An internal variable. Viper takes the face from here. (defvar viper-search-face 'viper-search "Face used to flash out the search pattern. DO NOT CHANGE this variable. Instead, use the customization widget -to customize the actual face object `viper-search-face' +to customize the actual face object `viper-search' this variable represents.") -(viper-hide-face 'viper-search) +(viper-hide-face viper-search-face) (defface viper-replace-overlay @@ -871,15 +869,13 @@ (t (:underline t :stipple "gray3"))) "*Face for highlighting replace regions on a window display." :group 'viper-highlighting) -;; backward-compatibility alias -(put 'viper-replace-overlay-face 'face-alias 'viper-replace-overlay) ;; An internal variable. Viper takes the face from here. (defvar viper-replace-overlay-face 'viper-replace-overlay "Face for highlighting replace regions on a window display. DO NOT CHANGE this variable. Instead, use the customization widget -to customize the actual face object `viper-replace-overlay-face' +to customize the actual face object `viper-replace-overlay' this variable represents.") -(viper-hide-face 'viper-replace-overlay) +(viper-hide-face viper-replace-overlay-face) (defface viper-minibuffer-emacs @@ -887,15 +883,13 @@ (t (:weight bold))) "Face used in the Minibuffer when it is in Emacs state." :group 'viper-highlighting) -;; backward-compatibility alias -(put 'viper-minibuffer-emacs-face 'face-alias 'viper-minibuffer-emacs) ;; An internal variable. Viper takes the face from here. (defvar viper-minibuffer-emacs-face 'viper-minibuffer-emacs "Face used in the Minibuffer when it is in Emacs state. DO NOT CHANGE this variable. Instead, use the customization widget -to customize the actual face object `viper-minibuffer-emacs-face' +to customize the actual face object `viper-minibuffer-emacs' this variable represents.") -(viper-hide-face 'viper-minibuffer-emacs) +(viper-hide-face viper-minibuffer-emacs-face) (defface viper-minibuffer-insert @@ -903,15 +897,13 @@ (t (:slant italic))) "Face used in the Minibuffer when it is in Insert state." :group 'viper-highlighting) -;; backward-compatibility alias -(put 'viper-minibuffer-insert-face 'face-alias 'viper-minibuffer-insert) ;; An internal variable. Viper takes the face from here. (defvar viper-minibuffer-insert-face 'viper-minibuffer-insert "Face used in the Minibuffer when it is in Insert state. DO NOT CHANGE this variable. Instead, use the customization widget -to customize the actual face object `viper-minibuffer-insert-face' +to customize the actual face object `viper-minibuffer-insert' this variable represents.") -(viper-hide-face 'viper-minibuffer-insert) +(viper-hide-face viper-minibuffer-insert-face) (defface viper-minibuffer-vi @@ -919,15 +911,13 @@ (t (:inverse-video t))) "Face used in the Minibuffer when it is in Vi state." :group 'viper-highlighting) -;; backward-compatibility alias -(put 'viper-minibuffer-vi-face 'face-alias 'viper-minibuffer-vi) ;; An internal variable. Viper takes the face from here. (defvar viper-minibuffer-vi-face 'viper-minibuffer-vi "Face used in the Minibuffer when it is in Vi state. DO NOT CHANGE this variable. Instead, use the customization widget -to customize the actual face object `viper-minibuffer-vi-face' +to customize the actual face object `viper-minibuffer-vi' this variable represents.") -(viper-hide-face 'viper-minibuffer-vi) +(viper-hide-face viper-minibuffer-vi-face) ;; the current face to be used in the minibuffer (viper-deflocalvar
--- a/lisp/emulation/viper-keym.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-keym.el Sun Jul 10 18:46:24 2005 +0000 @@ -50,25 +50,6 @@ ;;; Variables -(defcustom viper-toggle-key "\C-z" - "The key used to change states from emacs to Vi and back. -In insert mode, this key also functions as Meta. -Must be set in .viper file or prior to loading Viper. -This setting cannot be changed interactively." - :type 'string - :group 'viper) - -(defcustom viper-quoted-insert-key "\C-v" - "The key used to quote special characters when inserting them in Insert state." - :type 'string - :group 'viper) - -(defcustom viper-ESC-key "\e" - "Key used to ESC. -Must be set in .viper file or prior to loading Viper. -This setting cannot be changed interactively." - :type 'string - :group 'viper) ;;; Emacs keys in other states. @@ -176,6 +157,78 @@ ;; and, after .viper is loaded, we add this keymap to viper-vi-basic-map. (defvar viper-mode-map (make-sparse-keymap)) +;; Some important keys used in viper +(defcustom viper-toggle-key [(control ?z)] ; "\C-z" + "The key used to change states from emacs to Vi and back. +In insert mode, this key also functions as Meta. + +Enter as a sexp. Examples: \"\\C-z\", [(control ?z)]." + :type 'sexp + :group 'viper + :set (lambda (symbol value) + (let ((old-value (if (boundp 'viper-toggle-key) + viper-toggle-key + [(control ?z)]))) + (mapcar + (lambda (buf) + (save-excursion + (set-buffer buf) + (when (and (boundp 'viper-insert-basic-map) + (keymapp viper-insert-basic-map)) + (when old-value + (define-key viper-insert-basic-map old-value nil)) + (define-key viper-insert-basic-map value 'viper-escape-to-vi)) + (when (and (boundp 'viper-vi-intercept-map) + (keymapp viper-vi-intercept-map)) + (when old-value + (define-key viper-vi-intercept-map old-value nil)) + (define-key + viper-vi-intercept-map value 'viper-toggle-key-action)) + (when (and (boundp 'viper-emacs-intercept-map) + (keymapp viper-emacs-intercept-map)) + (define-key viper-emacs-intercept-map old-value nil) + (define-key + viper-emacs-intercept-map value 'viper-change-state-to-vi)) + )) + (buffer-list)) + (set-default symbol value) + ))) + +(defcustom viper-quoted-insert-key "\C-v" + "The key used to quote special characters when inserting them in Insert state." + :type 'string + :group 'viper) + +(defcustom viper-ESC-key [(escape)] ; "\e" + "Key used to ESC. +Enter as a sexp. Examples: \"\\e\", [(escape)]." + :type 'sexp + :group 'viper + :set (lambda (symbol value) + (let ((old-value (if (boundp 'viper-ESC-key) + viper-ESC-key + [(escape)]))) + (mapcar + (lambda (buf) + (save-excursion + (set-buffer buf) + (when (and (boundp 'viper-insert-intercept-map) + (keymapp viper-insert-intercept-map)) + (when old-value + (define-key viper-insert-intercept-map old-value nil)) + (define-key + viper-insert-intercept-map value 'viper-intercept-ESC-key)) + (when (and (boundp 'viper-vi-intercept-map) + (keymapp viper-vi-intercept-map)) + (when old-value + (define-key viper-vi-intercept-map old-value nil)) + (define-key + viper-vi-intercept-map value 'viper-intercept-ESC-key)) + )) + (buffer-list)) + (set-default symbol value) + ))) + ;;; Variables used by minor modes @@ -197,6 +250,10 @@ ;; to its Emacs state in various major modes. (defvar viper-emacs-state-modifier-alist nil) +;; The list of viper keymaps. Set by viper-normalize-minor-mode-map-alist +(viper-deflocalvar viper--key-maps nil) +(viper-deflocalvar viper--intercept-key-maps nil) + ;; Tells viper-add-local-keys to create a new viper-vi-local-user-map for new ;; buffers. Not a user option. (viper-deflocalvar viper-need-new-vi-local-map t "") @@ -509,7 +566,7 @@ (defun viper-zap-local-keys () "Unconditionally reset Viper viper-*-local-user-map's. -Rarely useful, but if u made a mistake by switching to a mode that adds +Rarely useful, but if you made a mistake by switching to a mode that adds undesirable local keys, e.g., comint-mode, then this function can restore sanity." (interactive)
--- a/lisp/emulation/viper-macs.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-macs.el Sun Jul 10 18:46:24 2005 +0000 @@ -178,7 +178,7 @@ (if (member key '(?\b ?\d '^? '^H (control h) (control \?) backspace delete)) - (setq key-seq (subseq key-seq 0 (- (length key-seq) 2)))) + (setq key-seq (viper-subseq key-seq 0 (- (length key-seq) 2)))) (setq message (format ":map%s %s" @@ -242,9 +242,9 @@ (cond ((member key '(?\b ?\d '^? '^H (control h) (control \?) backspace delete)) - (setq key-seq (subseq key-seq 0 (- (length key-seq) 2)))) + (setq key-seq (viper-subseq key-seq 0 (- (length key-seq) 2)))) ((member key '(tab (control i) ?\t)) - (setq key-seq (subseq key-seq 0 (1- (length key-seq)))) + (setq key-seq (viper-subseq key-seq 0 (1- (length key-seq)))) (setq message (format ":unmap%s %s" @@ -618,7 +618,7 @@ (if (null macro-alist-elt) (setq macro-alist-elt (car next-best-match) - unmatched-suffix (subseq event-seq (cdr next-best-match)))) + unmatched-suffix (viper-subseq event-seq (cdr next-best-match)))) (cond ((null macro-alist-elt)) ((setq macro-body (viper-kbd-buf-definition macro-alist-elt))) @@ -701,7 +701,7 @@ (let ((len1 (length seq1)) (len2 (length seq2))) (if (<= len1 len2) - (equal seq1 (subseq seq2 0 len1))))) + (equal seq1 (viper-subseq seq2 0 len1))))) ;; find the longest common prefix (defun viper-common-seq-prefix (&rest seqs) @@ -766,7 +766,7 @@ (setq macro-def (car lis) def-len (length (car macro-def))) (if (and (>= str-len def-len) - (equal (car macro-def) (subseq str 0 def-len))) + (equal (car macro-def) (viper-subseq str 0 def-len))) (if (or (viper-kbd-buf-definition macro-def) (viper-kbd-mode-definition macro-def) (viper-kbd-global-definition macro-def))
--- a/lisp/emulation/viper-mous.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-mous.el Sun Jul 10 18:46:24 2005 +0000 @@ -65,7 +65,7 @@ (defvar viper-frame-of-focus nil) ;; Frame that was selected before the switch-frame event. -(defconst viper-current-frame-saved (selected-frame)) +(defvar viper-current-frame-saved (selected-frame)) (defcustom viper-surrounding-word-function 'viper-surrounding-word "*Function that determines what constitutes a word for clicking events.
--- a/lisp/emulation/viper-util.el Sun Jul 10 18:17:18 2005 +0000 +++ b/lisp/emulation/viper-util.el Sun Jul 10 18:46:24 2005 +0000 @@ -41,7 +41,6 @@ (defvar viper-syntax-preference) (defvar viper-saved-mark) -(require 'cl) (require 'ring) (if noninteractive @@ -1068,7 +1067,7 @@ (t key))) ((listp key) - (setq modifiers (subseq key 0 (1- (length key))) + (setq modifiers (viper-subseq key 0 (1- (length key))) base-key (viper-seq-last-elt key) base-key-name (symbol-name base-key) char-p (= (length base-key-name) 1)) @@ -1503,6 +1502,33 @@ )) +;; this is copied from cl-extra.el +;; Return the subsequence of SEQ from START to END. +;; If END is omitted, it defaults to the length of the sequence. +;; If START or END is negative, it counts from the end. +(defun viper-subseq (seq start &optional end) + (if (stringp seq) (substring seq start end) + (let (len) + (and end (< end 0) (setq end (+ end (setq len (length seq))))) + (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) + (cond ((listp seq) + (if (> start 0) (setq seq (nthcdr start seq))) + (if end + (let ((res nil)) + (while (>= (setq end (1- end)) start) + (push (pop seq) res)) + (nreverse res)) + (copy-sequence seq))) + (t + (or end (setq end (or len (length seq)))) + (let ((res (make-vector (max (- end start) 0) nil)) + (i 0)) + (while (< start end) + (aset res i (aref seq start)) + (setq i (1+ i) start (1+ start))) + res)))))) + + (provide 'viper-util)
--- 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
--- a/man/viper.texi Sun Jul 10 18:17:18 2005 +0000 +++ b/man/viper.texi Sun Jul 10 18:46:24 2005 +0000 @@ -4502,6 +4502,7 @@ kwzh@@gnu.org (Karl Heuer), lindstro@@biostat.wisc.edu (Mary Lindstrom), lektu@@terra.es (Juanma Barranquero), +lennart.borgman.073@@student.lu.se (Lennart Borgman), minakaji@@osaka.email.ne.jp (Mikio Nakajima), Mark.Bordas@@East.Sun.COM (Mark Bordas), meyering@@comco.com (Jim Meyering), @@ -4519,6 +4520,7 @@ simonb@@prl.philips.co.uk (Simon Blanchard), spadgett1@@nc.rr.com (Samuel Padgett), stephen@@farrell.org (Stephen Farrell), +storm@@cua.dk (Kim F. Storm), sudish@@MindSpring.COM (Sudish Joseph), schwab@@issan.informatik.uni-dortmund.de (Andreas Schwab) terra@@diku.dk (Morten Welinder),