From a23a8440c7dc0954eb832d5f040f4536c921f8a8 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 10 May 2002 08:28:51 +0000 Subject: [PATCH] (cua-mode): Misc. changes to use emulation-mode-map-alists instead of minor-mode-map-alist. --- lisp/emulation/cua-base.el | 64 +++++++++++++------------------------- 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index 9e8fdb98ebb..354bc6fff60 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el @@ -593,7 +593,7 @@ Repeating prefix key when region is active works as a single prefix key." (if prefix-arg (reset-this-command-lengths) (setq overriding-terminal-local-map nil)) - (cua--fix-keymaps nil))) + (cua--select-keymaps))) ;;; Aux. functions @@ -940,7 +940,7 @@ Extra commands should be added to `cua-user-movement-commands'") (if cua-enable-cursor-indications (cua--update-indications)) - (cua--fix-keymaps nil) + (cua--select-keymaps) ) (error nil))) @@ -954,7 +954,9 @@ Extra commands should be added to `cua-user-movement-commands'") (unless (listp key) (setq key (list key))) (define-key map (vector (cons (if cua-use-hyper-key 'hyper 'meta) key)) fct)) -(defvar cua-global-keymap (make-sparse-keymap)) +(defvar cua-global-keymap (make-sparse-keymap) + "Global keymap for cua-mode; users may add to this keymap.") + (defvar cua--cua-keys-keymap (make-sparse-keymap)) (defvar cua--prefix-override-keymap (make-sparse-keymap)) (defvar cua--prefix-repeat-keymap (make-sparse-keymap)) @@ -968,44 +970,17 @@ Extra commands should be added to `cua-user-movement-commands'") (defvar cua--ena-region-keymap nil) (defvar cua--ena-global-mark-keymap nil) -(defvar cua--mmap-prefix-override-keymap (cons 'cua--ena-prefix-override-keymap cua--prefix-override-keymap)) -(defvar cua--mmap-prefix-repeat-keymap (cons 'cua--ena-prefix-repeat-keymap cua--prefix-repeat-keymap)) -(defvar cua--mmap-cua-keys-keymap (cons 'cua--ena-cua-keys-keymap cua--cua-keys-keymap)) -(defvar cua--mmap-global-mark-keymap (cons 'cua--ena-global-mark-keymap cua--global-mark-keymap)) -(defvar cua--mmap-rectangle-keymap (cons 'cua--rectangle cua--rectangle-keymap)) -(defvar cua--mmap-region-keymap (cons 'cua--ena-region-keymap cua--region-keymap)) -(defvar cua--mmap-global-keymap (cons 'cua-mode cua-global-keymap)) - -(defvar cua--mmap-list - (list cua--mmap-prefix-override-keymap - cua--mmap-prefix-repeat-keymap - cua--mmap-cua-keys-keymap - cua--mmap-global-mark-keymap - cua--mmap-rectangle-keymap - cua--mmap-region-keymap - cua--mmap-global-keymap)) - -(defun cua--fix-keymaps (disable) - ;; Ensure that cua's keymaps are in minor-mode-map-alist and - ;; in the correct order. - (let (fix - (mmap minor-mode-map-alist) - (ml cua--mmap-list)) - (while (and (not fix) mmap ml) - (if (not (eq (car mmap) (car ml))) - (setq fix t) - (setq mmap (cdr mmap) - ml (cdr ml)))) - (if ml - (setq fix t)) - (when (or fix disable) - (setq ml cua--mmap-list) - (while ml - (setq minor-mode-map-alist (delq (car ml) minor-mode-map-alist)) - (setq ml (cdr ml)))) - (when (and fix (not disable)) - (setq minor-mode-map-alist - (append (copy-sequence cua--mmap-list) minor-mode-map-alist)))) +(defvar cua--keymap-alist + `((cua--ena-prefix-override-keymap . ,cua--prefix-override-keymap) + (cua--ena-prefix-repeat-keymap . ,cua--prefix-repeat-keymap) + (cua--ena-cua-keys-keymap . ,cua--cua-keys-keymap) + (cua--ena-global-mark-keymap . ,cua--global-mark-keymap) + (cua--rectangle . ,cua--rectangle-keymap) + (cua--ena-region-keymap . ,cua--region-keymap) + (cua-mode . ,cua-global-keymap))) + +(defun cua--select-keymaps () + ;; Setup conditions for selecting the proper keymaps in cua--keymap-alist. (setq cua--ena-region-keymap (and mark-active (not deactivate-mark))) (setq cua--ena-prefix-override-keymap @@ -1127,7 +1102,12 @@ paste (in addition to the normal emacs bindings)." ) (remove-hook 'pre-command-hook 'cua--pre-command-handler) (remove-hook 'post-command-hook 'cua--post-command-handler)) - (cua--fix-keymaps (not cua-mode)) + + (if (not cua-mode) + (setq emulation-mode-map-alists (delq 'cua--keymap-alist emulation-mode-map-alists)) + (add-to-list 'emulation-mode-map-alists 'cua--keymap-alist) + (cua--select-keymaps)) + (if (fboundp 'cua--rectangle-on-off) (cua--rectangle-on-off cua-mode)) (setq transient-mark-mode (and cua-mode -- 2.39.2