Mercurial > emacs
comparison lisp/bindings.el @ 27238:bfb9906d58b5
(make-mode-line-mouse2-map): New function.
(mode-line-modified): Use it and simplify.
(mode-line-mule-info): Provide help-echo info.
(minor-mode-alist): Activate the strings.
(make-mode-line-mouse-sensitive): Simplify for
mode-line-buffer-identification.
author | Dave Love <fx@gnu.org> |
---|---|
date | Fri, 07 Jan 2000 14:16:07 +0000 |
parents | a3f5452f911e |
children | 18b19e347f65 |
comparison
equal
deleted
inserted
replaced
27237:aebe09bf25f8 | 27238:bfb9906d58b5 |
---|---|
44 ;;; line as the defvar or defconst. | 44 ;;; line as the defvar or defconst. |
45 ;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 45 ;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
46 | 46 |
47 ;;; Code: | 47 ;;; Code: |
48 | 48 |
49 (defconst mode-line-mule-info | 49 (defun make-mode-line-mouse2-map (f) "\ |
50 (purecopy '("" | 50 Return a keymap with single entry for mouse-2 on mode line. |
51 (current-input-method ("" current-input-method-title)) | 51 This is defined to run function F with no args in the buffer |
52 "%Z")) | 52 corresponding to the mode line clicked." |
53 (let ((map (make-sparse-keymap))) | |
54 (define-key map [mode-line mouse-2] | |
55 `(lambda (e) | |
56 (interactive "e") | |
57 (save-selected-window | |
58 (select-window | |
59 (posn-window (event-start e))) | |
60 (,f) | |
61 (force-mode-line-update)))) | |
62 map)) | |
63 | |
64 ;; This might have a local-map to bring up a MULE menu or describe the | |
65 ;; current method. At least give the user a clue what the field is. | |
66 (defvar mode-line-mule-info | |
67 `("" | |
68 (current-input-method ("" (propertize current-input-method-title | |
69 'help-echo "Input method"))) | |
70 ,(propertize "%Z" 'help-echo (purecopy "Coding system information"))) | |
53 "Mode-line control for displaying information of multilingual environment. | 71 "Mode-line control for displaying information of multilingual environment. |
54 Normally it displays current input method (if any activated) and | 72 Normally it displays current input method (if any activated) and |
55 mnemonics of the following coding systems: | 73 mnemonics of the following coding systems: |
56 coding system for saving or writing the current buffer | 74 coding system for saving or writing the current buffer |
57 coding system for keyboard input (if Emacs is running on terminal) | 75 coding system for keyboard input (if Emacs is running on terminal) |
77 Mode-line control for displaying info on process status. | 95 Mode-line control for displaying info on process status. |
78 Normally nil in most modes, since there is no process to display.") | 96 Normally nil in most modes, since there is no process to display.") |
79 | 97 |
80 (make-variable-buffer-local 'mode-line-process) | 98 (make-variable-buffer-local 'mode-line-process) |
81 | 99 |
82 (defconst mode-line-modified | 100 (defvar mode-line-modified |
83 (let ((s "%1*%1+") | 101 (list (propertize |
84 (map (make-sparse-keymap))) | 102 "%1*%1+" |
85 (define-key map [mode-line mouse-2] | 103 'help-echo (purecopy "Read-only status: mouse-2 toggles it") |
86 (lambda (event) | 104 'local-map (purecopy (make-mode-line-mouse2-map #'toggle-read-only)))) |
87 (interactive "e") | |
88 (save-selected-window | |
89 (select-window (posn-window (event-start event))) | |
90 (let ((binding (key-binding "\C-x\C-q"))) | |
91 (if binding | |
92 (funcall binding) | |
93 (toggle-read-only)))))) | |
94 (set-text-properties 0 (length s) | |
95 (list 'help-echo | |
96 "Read-only status: mouse-2 toggles it" | |
97 'local-map map) | |
98 s) | |
99 (list s)) | |
100 "Mode-line control for displaying whether current buffer is modified.") | 105 "Mode-line control for displaying whether current buffer is modified.") |
101 | 106 |
102 (make-variable-buffer-local 'mode-line-modified) | 107 (make-variable-buffer-local 'mode-line-modified) |
103 | 108 |
104 (setq-default mode-line-format | 109 (setq-default mode-line-format |
125 STRING is included in the mode line iff VARIABLE's value is non-nil. | 130 STRING is included in the mode line iff VARIABLE's value is non-nil. |
126 | 131 |
127 Actually, STRING need not be a string; any possible mode-line element | 132 Actually, STRING need not be a string; any possible mode-line element |
128 is okay. See `mode-line-format'.") | 133 is okay. See `mode-line-format'.") |
129 ;; Don't use purecopy here--some people want to change these strings. | 134 ;; Don't use purecopy here--some people want to change these strings. |
130 (setq minor-mode-alist '((abbrev-mode " Abbrev") | 135 (setq minor-mode-alist |
131 (overwrite-mode overwrite-mode) | 136 (list |
132 (auto-fill-function " Fill") | 137 (list 'abbrev-mode |
133 ;; not really a minor mode... | 138 (propertize " Abbrev" |
134 (defining-kbd-macro " Def"))) | 139 'help-echo (purecopy |
140 "mouse-2: turn off Abbrev mode") | |
141 'local-map (purecopy (make-mode-line-mouse2-map | |
142 #'abbrev-mode)))) | |
143 '(overwrite-mode overwrite-mode) | |
144 (list 'auto-fill-function | |
145 (propertize " Fill" | |
146 'help-echo (purecopy | |
147 "mouse-2: turn off Autofill mode") | |
148 'local-map (purecopy (make-mode-line-mouse2-map | |
149 #'auto-fill-mode)))) | |
150 ;; not really a minor mode... | |
151 '(defining-kbd-macro " Def"))) | |
135 | 152 |
136 (defvar mode-line-buffer-identification-keymap nil "\ | 153 (defvar mode-line-buffer-identification-keymap nil "\ |
137 Keymap for what is displayed by `mode-line-buffer-identification'.") | 154 Keymap for what is displayed by `mode-line-buffer-identification'.") |
138 | 155 |
139 (defvar mode-line-minor-mode-keymap nil "\ | 156 (defvar mode-line-minor-mode-keymap nil "\ |
189 `(and (boundp (quote ,var)) ,var)) | 206 `(and (boundp (quote ,var)) ,var)) |
190 | 207 |
191 (defvar mode-line-mouse-sensitive-p nil "\ | 208 (defvar mode-line-mouse-sensitive-p nil "\ |
192 Non-nil means mode line has been made mouse-sensitive.") | 209 Non-nil means mode line has been made mouse-sensitive.") |
193 | 210 |
194 (defvar mode-line-mode-menu nil "\ | 211 (defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\ |
195 Menu of mode operations in the mode line.") | 212 Menu of mode operations in the mode line.") |
213 | |
214 ;; These bindings were defined inside | |
215 ;; `make-mode-line-mouse-sensitive', but then invoking `x-popup-menu' | |
216 ;; with `mode-line-mode-menu' lost because the menu items were in | |
217 ;; purespace. | |
218 (define-key mode-line-mode-menu [abbrev-mode] | |
219 `(menu-item ,(purecopy "Abbrev") abbrev-mode | |
220 :button (:toggle . abbrev-mode))) | |
221 (define-key mode-line-mode-menu [auto-revert-mode] | |
222 `(menu-item ,(purecopy "Auto revert") auto-revert-mode | |
223 :button (:toggle . auto-revert-mode))) | |
224 (define-key mode-line-mode-menu [auto-fill-mode] | |
225 `(menu-item ,(purecopy "Auto-fill") auto-fill-mode | |
226 :button (:toggle . auto-fill-function))) | |
227 (define-key mode-line-mode-menu [column-number-mode] | |
228 `(menu-item ,(purecopy "Column number") column-number-mode | |
229 :button (:toggle . column-number-mode))) | |
230 (define-key mode-line-mode-menu [flyspell-mode] | |
231 `(menu-item ,(purecopy "Flyspell") flyspell-mode | |
232 :button (:toggle . (bound-and-true-p flyspell-mode)))) | |
233 (define-key mode-line-mode-menu [font-lock-mode] | |
234 `(menu-item ,(purecopy "Font-lock") font-lock-mode | |
235 :button (:toggle . font-lock-mode))) | |
236 (define-key mode-line-mode-menu [hide-ifdef-mode] | |
237 `(menu-item ,(purecopy "Hide ifdef") hide-ifdef-mode | |
238 :button (:toggle . (bound-and-true-p hide-ifdef-mode)))) | |
239 (define-key mode-line-mode-menu [highlight-changes-mode] | |
240 `(menu-item ,(purecopy "Highlight changes") highlight-changes-mode | |
241 :button (:toggle . highlight-changes-mode))) | |
242 (define-key mode-line-mode-menu [line-number-mode] | |
243 `(menu-item ,(purecopy "Line number") line-number-mode | |
244 :button (:toggle . line-number-mode))) | |
245 (define-key mode-line-mode-menu [outline-minor-mode] | |
246 `(menu-item ,(purecopy "Outline") outline-minor-mode | |
247 :button (:toggle . (bound-and-true-p outline-minor-mode)))) | |
248 (define-key mode-line-mode-menu [overwrite-mode] | |
249 `(menu-item ,(purecopy "Overwrite") overwrite-mode | |
250 :button (:toggle . overwrite-mode))) | |
196 | 251 |
197 (defun make-mode-line-mouse-sensitive () | 252 (defun make-mode-line-mouse-sensitive () |
198 (when (and window-system | 253 (when (and window-system |
199 (not mode-line-mouse-sensitive-p)) | 254 (not mode-line-mouse-sensitive-p)) |
200 (setq mode-line-mouse-sensitive-p t) | 255 (setq mode-line-mouse-sensitive-p t) |
201 (let ((map (make-sparse-keymap "Minor Modes"))) | 256 (defun mode-line-mode-menu (event) |
202 (define-key map [abbrev-mode] | 257 (interactive "@e") |
203 '(menu-item "Abbrev" abbrev-mode | 258 (x-popup-menu event mode-line-mode-menu)) |
204 :button (:toggle . abbrev-mode))) | |
205 (define-key map [auto-revert-mode] | |
206 '(menu-item "Auto revert" auto-revert-mode | |
207 :button (:toggle . (bound-and-true-p auto-revert-mode)))) | |
208 (define-key map [auto-fill-mode] | |
209 '(menu-item "Auto-fill" auto-fill-mode | |
210 :button (:toggle . auto-fill-function))) | |
211 (define-key map [column-number-mode] | |
212 '(menu-item "Column number" column-number-mode | |
213 :button (:toggle . column-number-mode))) | |
214 (define-key map [flyspell-mode] | |
215 '(menu-item "Flyspell" flyspell-mode | |
216 :button (:toggle . (bound-and-true-p flyspell-mode)))) | |
217 (define-key map [font-lock-mode] | |
218 '(menu-item "Font-lock" font-lock-mode | |
219 :button (:toggle . font-lock-mode))) | |
220 (define-key map [hide-ifdef-mode] | |
221 '(menu-item "Hide ifdef" hide-ifdef-mode | |
222 :button (:toggle . (bound-and-true-p hide-ifdef-mode)))) | |
223 (define-key map [highlight-changes-mode] | |
224 '(menu-item "Highlight changes" highlight-changes-mode | |
225 :button (:toggle . (bound-and-true-p highlight-changes-mode)))) | |
226 (define-key map [line-number-mode] | |
227 '(menu-item "Line number" line-number-mode | |
228 :button (:toggle . line-number-mode))) | |
229 (define-key map [outline-minor-mode] | |
230 '(menu-item "Outline" outline-minor-mode | |
231 :button (:toggle . (bound-and-true-p outline-minor-mode)))) | |
232 (define-key map [overwrite-mode] | |
233 '(menu-item "Overwrite" overwrite-mode | |
234 :button (:toggle . overwrite-mode))) | |
235 (setq mode-line-mode-menu (copy-keymap map)) | |
236 (defun mode-line-mode-menu (event) | |
237 (interactive "@e") | |
238 (x-popup-menu event mode-line-mode-menu))) | |
239 | 259 |
240 ;; Add menu of buffer operations to the buffer identification part | 260 ;; Add menu of buffer operations to the buffer identification part |
241 ;; of the mode line. | 261 ;; of the mode line. |
242 (let ((map (make-sparse-keymap)) | 262 (let ((map (make-sparse-keymap))) |
243 (s (copy-sequence "%12b"))) | |
244 (define-key map [mode-line mouse-1] 'mode-line-other-buffer) | 263 (define-key map [mode-line mouse-1] 'mode-line-other-buffer) |
245 (define-key map [header-line mouse-1] 'mode-line-other-buffer) | 264 (define-key map [header-line mouse-1] 'mode-line-other-buffer) |
246 (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer) | 265 (define-key map [mode-line M-mouse-2] 'mode-line-unbury-buffer) |
247 (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer) | 266 (define-key map [header-line M-mouse-2] 'mode-line-unbury-buffer) |
248 (define-key map [mode-line mouse-2] 'bury-buffer) | 267 (define-key map [mode-line mouse-2] 'bury-buffer) |
249 (define-key map [header-line mouse-2] 'bury-buffer) | 268 (define-key map [header-line mouse-2] 'bury-buffer) |
250 (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu) | 269 (define-key map [mode-line down-mouse-3] 'mouse-buffer-menu) |
251 (define-key map [header-line down-mouse-3] 'mouse-buffer-menu) | 270 (define-key map [header-line down-mouse-3] 'mouse-buffer-menu) |
252 (setq mode-line-buffer-identification-keymap map) | 271 (setq mode-line-buffer-identification-keymap map) |
253 (setq-default mode-line-buffer-identification (list s)) | 272 (setq-default mode-line-buffer-identification |
254 (put-text-property 0 (length s) 'face '(:weight bold) s) | 273 (list (propertize "%12b" |
255 (put-text-property 0 (length s) 'help-echo | 274 'face '(:weight bold) |
256 "mouse-1: other buffer, mouse-2: prev, M-mouse-2: next, mouse-3: buffer menu" s) | 275 'help-echo |
257 (put-text-property 0 (length s) 'local-map map s)) | 276 "mouse-1: other buffer, mouse-2: \ |
277 prev, M-mouse-2: next, mouse-3: buffer menu" | |
278 'local-map map)))) | |
258 | 279 |
259 ;; Menu of minor modes. | 280 ;; Menu of minor modes. |
260 (let ((map (make-sparse-keymap))) | 281 (let ((map (make-sparse-keymap))) |
261 (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) | 282 (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) |
262 (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) | 283 (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) |