aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1999-08-28 15:13:37 +0000
committerKarl Heuer1999-08-28 15:13:37 +0000
commit5e21ef7a07eebedd9b499749f35817974c79f36d (patch)
tree78aabf4149bb454537a6b863a4ddc62622022801
parent620fdfdf610c3f5b7f775d1ca30fbfaf25d37440 (diff)
downloademacs-5e21ef7a07eebedd9b499749f35817974c79f36d.tar.gz
emacs-5e21ef7a07eebedd9b499749f35817974c79f36d.zip
(easy-mmode-define-minor-mode):
On repeated call, override previous values put into minor-mode-map-alist and minor-mode-alist.
-rw-r--r--lisp/emacs-lisp/easy-mmode.el19
1 files changed, 11 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index a157028a6be..fe5b7a6ad07 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -137,11 +137,11 @@ in order to build a valid keymap.
137 (keymap-name (concat mode-name "-map")) 137 (keymap-name (concat mode-name "-map"))
138 (keymap-doc (format "Keymap for %s mode." mode-name))) 138 (keymap-doc (format "Keymap for %s mode." mode-name)))
139 `(progn 139 `(progn
140 ;; define the switch 140 ;; Define the variable to enable or disable the mode.
141 (defvar ,mode ,init-value ,mode-doc) 141 (defvar ,mode ,init-value ,mode-doc)
142 (make-variable-buffer-local ',mode) 142 (make-variable-buffer-local ',mode)
143 143
144 ;; define the minor-mode keymap 144 ;; Define the minor-mode keymap.
145 (defvar ,(intern keymap-name) 145 (defvar ,(intern keymap-name)
146 (cond ((and ,keymap (keymapp ,keymap)) 146 (cond ((and ,keymap (keymapp ,keymap))
147 ,keymap) 147 ,keymap)
@@ -150,18 +150,21 @@ in order to build a valid keymap.
150 (t (error "Invalid keymap %S" ,keymap))) 150 (t (error "Invalid keymap %S" ,keymap)))
151 ,keymap-doc) 151 ,keymap-doc)
152 152
153 ;; define the toggle and the hooks 153 ;; Define the toggle and the hooks.
154 ,(macroexpand `(easy-mmode-define-toggle ,mode ,doc)) ; toggle and hooks 154 ,(macroexpand `(easy-mmode-define-toggle ,mode ,doc))
155 155
156 ;; update the mode-bar 156 ;; Update the mode line.
157 (or (assq ',mode minor-mode-alist) 157 (or (assq ',mode minor-mode-alist)
158 (setq minor-mode-alist 158 (setq minor-mode-alist
159 (cons (list ',mode ,lighter) minor-mode-alist))) 159 (cons (list ',mode nil) minor-mode-alist)))
160 (setcar (cdr (assq ',mode minor-mode-alist)) ,lighter)
160 161
161 ;; update the minor-mode-map 162 ;; Update the minor mode map.
162 (or (assq ',mode minor-mode-map-alist) 163 (or (assq ',mode minor-mode-map-alist)
163 (setq minor-mode-map-alist 164 (setq minor-mode-map-alist
164 (cons (cons ',mode ,(intern keymap-name)) minor-mode-map-alist)))) )) 165 (cons (cons ',mode ,(intern keymap-name)) minor-mode-map-alist)))
166 (setcdr (assq ',mode minor-mode-map-alist)
167 ,(intern keymap-name))) ))
165 168
166(provide 'easy-mmode) 169(provide 'easy-mmode)
167 170