aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Love2000-02-09 12:18:48 +0000
committerDave Love2000-02-09 12:18:48 +0000
commit5e1cddda2b88b41743aa89b134bce7c453c23679 (patch)
tree0069a00146b72dd6bbf04ec0ab7adfd75fd2e8b0
parent25566a3ca73611035faee076267eedb678448345 (diff)
downloademacs-5e1cddda2b88b41743aa89b134bce7c453c23679.tar.gz
emacs-5e1cddda2b88b41743aa89b134bce7c453c23679.zip
(mode-line-input-method-map): New variable.
(mode-line-mule-info): Use it; fix last change. (mode-line-mode-menu): Move definition. (mode-line-mouse-sensitive-p): Deleted. (mode-line-mode-name): Don't use mode-line-mouse-sensitive-p. (make-mode-line-mouse-sensitive): Deleted. Body moved to top level.
-rw-r--r--lisp/bindings.el161
1 files changed, 73 insertions, 88 deletions
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 9477e91f2fb..c24911f3d3e 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -62,37 +62,38 @@ corresponding to the mode line clicked."
62 (force-mode-line-update)))) 62 (force-mode-line-update))))
63 map)) 63 map))
64 64
65(defvar mode-line-input-method-map
66 (let ((map (make-sparse-keymap)))
67 (define-key map [mode-line mouse-2]
68 (lambda (e)
69 (interactive "e")
70 (save-selected-window
71 (select-window
72 (posn-window (event-start e)))
73 (toggle-input-method)
74 (force-mode-line-update))))
75 (define-key map [mode-line mouse-3]
76 (lambda (e)
77 (interactive "e")
78 (save-selected-window
79 (select-window
80 (posn-window (event-start e)))
81 (describe-current-input-method))))
82 (purecopy map)))
83
65(defvar mode-line-mule-info 84(defvar mode-line-mule-info
66 `("" 85 `(""
67 (current-input-method 86 (current-input-method
68 ("" (:eval 87 (:eval
69 (if current-input-method 88 (propertize current-input-method-title
70 (propertize 89 'help-echo (concat ,(purecopy "Input method: ")
71 current-input-method-title 90 current-input-method
72 'help-echo (concat ,(purecopy "Input method: ") 91 ,(purecopy ". mouse-2 toggles, \
73 current-input-method 92mouse-3 describes"))
74 ". mouse-2 toggles, mouse-3 describes") 93 'local-map mode-line-input-method-map)))
75 'local-map ,(purecopy 94 ,(propertize "%Z"
76 (let ((map (make-sparse-keymap))) 95 'help-echo (purecopy "Coding system information: \
77 (define-key map [mode-line mouse-2] 96see M-x describe-coding-system")))
78 (lambda (e)
79 (interactive "e")
80 (save-selected-window
81 (select-window
82 (posn-window (event-start e)))
83 (toggle-input-method)
84 (force-mode-line-update))))
85 (define-key map [mode-line mouse-3]
86 (lambda (e)
87 (interactive "e")
88 (save-selected-window
89 (select-window
90 (posn-window (event-start e)))
91 (describe-input-method))))
92 map)))))))
93 ,(propertize
94 "%Z" 'help-echo
95 (purecopy "Coding system information: see M-x describe-coding-system")))
96 "Mode-line control for displaying information of multilingual environment. 97 "Mode-line control for displaying information of multilingual environment.
97Normally it displays current input method (if any activated) and 98Normally it displays current input method (if any activated) and
98mnemonics of the following coding systems: 99mnemonics of the following coding systems:
@@ -197,6 +198,9 @@ Switch to the most recently selected buffer other than the current one."
197 (interactive) 198 (interactive)
198 (switch-to-buffer (other-buffer))) 199 (switch-to-buffer (other-buffer)))
199 200
201(defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\
202Menu of mode operations in the mode line.")
203
200(defun mode-line-mode-menu-1 (event) 204(defun mode-line-mode-menu-1 (event)
201 (interactive "e") 205 (interactive "e")
202 (save-selected-window 206 (save-selected-window
@@ -210,36 +214,25 @@ Switch to the most recently selected buffer other than the current one."
210(defun mode-line-mode-name () "\ 214(defun mode-line-mode-name () "\
211Return a string to display in the mode line for the current mode name." 215Return a string to display in the mode line for the current mode name."
212 (let (length (result mode-name)) 216 (let (length (result mode-name))
213 (when mode-line-mouse-sensitive-p 217 (let ((local-map (get-text-property 0 'local-map result))
214 (let ((local-map (get-text-property 0 'local-map result)) 218 (help-echo (get-text-property 0 'help-echo result)))
215 (help-echo (get-text-property 0 'help-echo result))) 219 (setq result (copy-sequence result))
216 (setq result (copy-sequence result)) 220 ;; Add `local-map' property if there isn't already one.
217 ;; Add `local-map' property if there isn't already one. 221 (when (and (null local-map)
218 (when (and (null local-map) 222 (null (next-single-property-change 0 'local-map result)))
219 (null (next-single-property-change 0 'local-map result))) 223 (put-text-property 0 (length result)
220 (put-text-property 0 (length result) 224 'local-map mode-line-minor-mode-keymap result))
221 'local-map mode-line-minor-mode-keymap result)) 225 ;; Add `help-echo' property if there isn't already one.
222 ;; Add `help-echo' property if there isn't already one. 226 (when (and (null help-echo)
223 (when (and (null help-echo) 227 (null (next-single-property-change 0 'help-echo result)))
224 (null (next-single-property-change 0 'help-echo result))) 228 (put-text-property 0 (length result)
225 (put-text-property 0 (length result) 229 'help-echo "mouse-3: minor mode menu" result)))
226 'help-echo "mouse-3: minor mode menu" result))))
227 result)) 230 result))
228 231
229(defmacro bound-and-true-p (var) 232(defmacro bound-and-true-p (var)
230 "Return the value of symbol VAR if it is bound, else nil." 233 "Return the value of symbol VAR if it is bound, else nil."
231 `(and (boundp (quote ,var)) ,var)) 234 `(and (boundp (quote ,var)) ,var))
232 235
233(defvar mode-line-mouse-sensitive-p nil "\
234Non-nil means mode line has been made mouse-sensitive.")
235
236(defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\
237Menu of mode operations in the mode line.")
238
239;; These bindings were defined inside
240;; `make-mode-line-mouse-sensitive', but then invoking `x-popup-menu'
241;; with `mode-line-mode-menu' lost because the menu items were in
242;; purespace.
243(define-key mode-line-mode-menu [abbrev-mode] 236(define-key mode-line-mode-menu [abbrev-mode]
244 `(menu-item ,(purecopy "Abbrev") abbrev-mode 237 `(menu-item ,(purecopy "Abbrev") abbrev-mode
245 :button (:toggle . abbrev-mode))) 238 :button (:toggle . abbrev-mode)))
@@ -274,42 +267,34 @@ Menu of mode operations in the mode line.")
274 `(menu-item ,(purecopy "Overwrite") overwrite-mode 267 `(menu-item ,(purecopy "Overwrite") overwrite-mode
275 :button (:toggle . overwrite-mode))) 268 :button (:toggle . overwrite-mode)))
276 269
277(defun make-mode-line-mouse-sensitive () 270(defun mode-line-mode-menu (event)
278 (when (and window-system 271 (interactive "@e")
279 (not mode-line-mouse-sensitive-p)) 272 (x-popup-menu event mode-line-mode-menu))
280 (setq mode-line-mouse-sensitive-p t) 273
281 (defun mode-line-mode-menu (event) 274;; Add menu of buffer operations to the buffer identification part
282 (interactive "@e") 275;; of the mode line.
283 (x-popup-menu event mode-line-mode-menu)) 276(let ((map (make-sparse-keymap)))
284 277 (define-key map [mode-line mouse-1] 'mode-line-other-buffer)
285 ;; Add menu of buffer operations to the buffer identification part 278 (define-key map [header-line mouse-1] 'mode-line-other-buffer)
286 ;; of the mode line. 279 (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer)
287 (let ((map (make-sparse-keymap))) 280 (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer)
288 (define-key map [mode-line mouse-1] 'mode-line-other-buffer) 281 (define-key map [mode-line mouse-2] 'bury-buffer)
289 (define-key map [header-line mouse-1] 'mode-line-other-buffer) 282 (define-key map [header-line mouse-2] 'bury-buffer)
290 (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer) 283 (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu)
291 (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer) 284 (define-key map [header-line down-mouse-3] 'mouse-buffer-menu)
292 (define-key map [mode-line mouse-2] 'bury-buffer) 285 (setq mode-line-buffer-identification-keymap map)
293 (define-key map [header-line mouse-2] 'bury-buffer) 286 (setq-default mode-line-buffer-identification
294 (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu) 287 (list (propertize "%12b"
295 (define-key map [header-line down-mouse-3] 'mouse-buffer-menu) 288 'face '(:weight bold)
296 (setq mode-line-buffer-identification-keymap map) 289 'help-echo (purecopy "mouse-1: other \
297 (setq-default mode-line-buffer-identification 290buffer, mouse-2: prev, M-mouse-2: next, mouse-3: buffer menu")
298 (list (propertize "%12b" 291 'local-map map))))
299 'face '(:weight bold) 292
300 'help-echo 293;; Menu of minor modes.
301 "mouse-1: other buffer, mouse-2: \ 294(let ((map (make-sparse-keymap)))
302prev, M-mouse-2: next, mouse-3: buffer menu" 295 (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1)
303 'local-map map)))) 296 (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1)
304 297 (setq mode-line-minor-mode-keymap map))
305 ;; Menu of minor modes.
306 (let ((map (make-sparse-keymap)))
307 (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1)
308 (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1)
309 (setq mode-line-minor-mode-keymap map))
310
311 (force-mode-line-update)))
312
313 298
314;; These variables are used by autoloadable packages. 299;; These variables are used by autoloadable packages.
315;; They are defined here so that they do not get overridden 300;; They are defined here so that they do not get overridden