[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emulation/viper-macs.el
From: |
Michael Kifer |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emulation/viper-macs.el |
Date: |
Sat, 19 Feb 2005 14:32:51 -0500 |
Index: emacs/lisp/emulation/viper-macs.el
diff -c emacs/lisp/emulation/viper-macs.el:1.28
emacs/lisp/emulation/viper-macs.el:1.29
*** emacs/lisp/emulation/viper-macs.el:1.28 Mon Sep 1 15:45:23 2003
--- emacs/lisp/emulation/viper-macs.el Sat Feb 19 19:32:47 2005
***************
*** 329,334 ****
--- 329,336 ----
;; Accepts as macro names: strings and vectors.
;; strings must be strings of characters; vectors must be vectors of keys
;; in canonic form. The canonic form is essentially the form used in XEmacs
+ ;; More general definitions are inherited by more specific scopes:
+ ;; global->major mode->buffer. More specific definitions override more general
(defun viper-record-kbd-macro (macro-name state macro-body &optional scope)
"Record a Vi macro. Can be used in `.viper' file to define permanent
macros.
MACRO-NAME is a string of characters or a vector of keys. STATE is
***************
*** 451,472 ****
(list (list (cons scope nil)) nil (cons t nil))))))
(setq old-elt (assoc macro-name (eval macro-alist-var)))
! (if (null old-elt)
! (progn
! ;; insert new-elt in macro-alist-var and keep the list sorted
! (define-key
! keymap
! (vector (viper-key-to-emacs-key (aref macro-name 0)))
! 'viper-exec-mapped-kbd-macro)
! (setq lis (eval macro-alist-var))
! (while (and lis (string< (viper-array-to-string (car (car lis)))
! (viper-array-to-string macro-name)))
! (setq lis2 (cons (car lis) lis2))
! (setq lis (cdr lis)))
!
! (setq lis2 (reverse lis2))
! (set macro-alist-var (append lis2 (cons new-elt lis)))
! (setq old-elt new-elt)))
(setq old-sub-elt
(cond ((eq scope t) (viper-kbd-global-pair old-elt))
((symbolp scope) (assoc scope (viper-kbd-mode-alist old-elt)))
--- 453,474 ----
(list (list (cons scope nil)) nil (cons t nil))))))
(setq old-elt (assoc macro-name (eval macro-alist-var)))
! (if (null old-elt)
! (progn
! ;; insert new-elt in macro-alist-var and keep the list sorted
! (define-key
! keymap
! (vector (viper-key-to-emacs-key (aref macro-name 0)))
! 'viper-exec-mapped-kbd-macro)
! (setq lis (eval macro-alist-var))
! (while (and lis (string< (viper-array-to-string (car (car lis)))
! (viper-array-to-string macro-name)))
! (setq lis2 (cons (car lis) lis2))
! (setq lis (cdr lis)))
!
! (setq lis2 (reverse lis2))
! (set macro-alist-var (append lis2 (cons new-elt lis)))
! (setq old-elt new-elt)))
(setq old-sub-elt
(cond ((eq scope t) (viper-kbd-global-pair old-elt))
((symbolp scope) (assoc scope (viper-kbd-mode-alist old-elt)))
***************
*** 484,489 ****
--- 486,496 ----
;; macro name must be a vector of viper-style keys
+ ;; viper-unrecord-kbd-macro doesn't have scope. Macro definitions are
inherited
+ ;; from global -> major mode -> buffer
+ ;; More specific definition overrides more general
+ ;; Can't unrecord definition for more specific, if a more general definition
is
+ ;; in effect
(defun viper-unrecord-kbd-macro (macro-name state)
"Delete macro MACRO-NAME from Viper STATE.
MACRO-NAME must be a vector of viper-style keys. This command is used by
Viper
***************
*** 546,552 ****
(setq macro-pair mode-mapping)
(message "%S is unmapped for %s in %S"
(viper-display-macro macro-name) state-name major-mode))
! ((cdr (setq macro-pair (viper-kbd-global-pair macro-entry)))
(message
"Global mapping for %S in %s is removed"
(viper-display-macro macro-name) state-name))
--- 553,559 ----
(setq macro-pair mode-mapping)
(message "%S is unmapped for %s in %S"
(viper-display-macro macro-name) state-name major-mode))
! ((cdr (setq macro-pair global-mapping))
(message
"Global mapping for %S in %s is removed"
(viper-display-macro macro-name) state-name))
***************
*** 560,566 ****
(progn
(set macro-alist-var (delq macro-entry (eval macro-alist-var)))
(if (viper-can-release-key (aref macro-name 0)
! (eval macro-alist-var))
(define-key
keymap
(vector (viper-key-to-emacs-key (aref macro-name 0)))
--- 567,573 ----
(progn
(set macro-alist-var (delq macro-entry (eval macro-alist-var)))
(if (viper-can-release-key (aref macro-name 0)
! (eval macro-alist-var))
(define-key
keymap
(vector (viper-key-to-emacs-key (aref macro-name 0)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/emulation/viper-macs.el,
Michael Kifer <=