emacs-diffs
[Top][All Lists]
Advanced

[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)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]