227 |
(defvar mode-line-modes nil |
(defvar mode-line-modes nil |
228 |
"Mode-line control for displaying major and minor modes.") |
"Mode-line control for displaying major and minor modes.") |
229 |
|
|
230 |
|
(defvar mode-line-minor-mode-keymap nil "\ |
231 |
|
Keymap to display on major and minor modes.") |
232 |
|
|
233 |
|
;; Menu of minor modes. |
234 |
|
(let ((map (make-sparse-keymap))) |
235 |
|
(define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) |
236 |
|
(define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) |
237 |
|
(setq mode-line-minor-mode-keymap map)) |
238 |
|
|
239 |
(let* ((help-echo |
(let* ((help-echo |
240 |
;; The multi-line message doesn't work terribly well on the |
;; The multi-line message doesn't work terribly well on the |
241 |
;; bottom mode line... Better ideas? |
;; bottom mode line... Better ideas? |
261 |
(setq-default mode-line-modes |
(setq-default mode-line-modes |
262 |
(list |
(list |
263 |
(propertize " %[(" 'help-echo help-echo) |
(propertize " %[(" 'help-echo help-echo) |
264 |
'(:eval (mode-line-mode-name)) 'mode-line-process 'minor-mode-alist |
`(:propertize ("" mode-name mode-line-process minor-mode-alist) |
265 |
|
help-echo "mouse-3: minor mode menu" |
266 |
|
local-map ,mode-line-minor-mode-keymap) |
267 |
(propertize "%n" 'help-echo "mouse-2: widen" |
(propertize "%n" 'help-echo "mouse-2: widen" |
268 |
'local-map (make-mode-line-mouse-map |
'local-map (make-mode-line-mouse-map |
269 |
'mouse-2 #'mode-line-widen)) |
'mouse-2 #'mode-line-widen)) |
277 |
(defvar mode-line-buffer-identification-keymap nil "\ |
(defvar mode-line-buffer-identification-keymap nil "\ |
278 |
Keymap for what is displayed by `mode-line-buffer-identification'.") |
Keymap for what is displayed by `mode-line-buffer-identification'.") |
279 |
|
|
|
(defvar mode-line-minor-mode-keymap nil "\ |
|
|
Keymap for what is displayed by `mode-line-mode-name'.") |
|
|
|
|
|
(defvar mode-line-mode-menu-keymap nil "\ |
|
|
Keymap for mode operations menu in the mode line.") |
|
|
|
|
280 |
(defun last-buffer () "\ |
(defun last-buffer () "\ |
281 |
Return the last non-hidden buffer in the buffer list." |
Return the last non-hidden buffer in the buffer list." |
282 |
(let ((list (reverse (buffer-list)))) |
(let ((list (reverse (buffer-list)))) |
321 |
(if binding |
(if binding |
322 |
(call-interactively binding))))) |
(call-interactively binding))))) |
323 |
|
|
|
(defvar mode-line-copied-mode-name nil |
|
|
"A copy of `mode-name', with `help-echo' and `local-map' properties added.") |
|
|
|
|
|
(defun mode-line-mode-name () "\ |
|
|
Return a string to display in the mode line for the current mode name." |
|
|
(when (stringp mode-name) |
|
|
(if (equal mode-name mode-line-copied-mode-name) |
|
|
mode-line-copied-mode-name |
|
|
(setq mode-line-copied-mode-name |
|
|
(propertize mode-name |
|
|
'local-map mode-line-minor-mode-keymap |
|
|
'help-echo "mouse-3: minor mode menu")))) |
|
|
mode-line-copied-mode-name) |
|
|
|
|
324 |
(defmacro bound-and-true-p (var) |
(defmacro bound-and-true-p (var) |
325 |
"Return the value of symbol VAR if it is bound, else nil." |
"Return the value of symbol VAR if it is bound, else nil." |
326 |
`(and (boundp (quote ,var)) ,var)) |
`(and (boundp (quote ,var)) ,var)) |
327 |
|
|
328 |
(define-key mode-line-mode-menu [overwrite-mode] |
(define-key mode-line-mode-menu [overwrite-mode] |
329 |
`(menu-item ,(purecopy "Overwrite") overwrite-mode |
`(menu-item ,(purecopy "Overwrite (Ovwrt)") overwrite-mode |
330 |
:button (:toggle . overwrite-mode))) |
:button (:toggle . overwrite-mode))) |
331 |
(define-key mode-line-mode-menu [outline-minor-mode] |
(define-key mode-line-mode-menu [outline-minor-mode] |
332 |
`(menu-item ,(purecopy "Outline") outline-minor-mode |
`(menu-item ,(purecopy "Outline (Outl)") outline-minor-mode |
333 |
:button (:toggle . (bound-and-true-p outline-minor-mode)))) |
:button (:toggle . (bound-and-true-p outline-minor-mode)))) |
334 |
(define-key mode-line-mode-menu [line-number-mode] |
(define-key mode-line-mode-menu [line-number-mode] |
335 |
`(menu-item ,(purecopy "Line number") line-number-mode |
`(menu-item ,(purecopy "Line number") line-number-mode |
336 |
:button (:toggle . line-number-mode))) |
:button (:toggle . line-number-mode))) |
337 |
(define-key mode-line-mode-menu [highlight-changes-mode] |
(define-key mode-line-mode-menu [highlight-changes-mode] |
338 |
`(menu-item ,(purecopy "Highlight changes") highlight-changes-mode |
`(menu-item ,(purecopy "Highlight changes (Chg)") highlight-changes-mode |
339 |
:button (:toggle . highlight-changes-mode))) |
:button (:toggle . highlight-changes-mode))) |
340 |
(define-key mode-line-mode-menu [glasses-mode] |
(define-key mode-line-mode-menu [glasses-mode] |
341 |
`(menu-item ,(purecopy "Glasses") glasses-mode |
`(menu-item ,(purecopy "Glasses (o^o)") glasses-mode |
342 |
:button (:toggle . (bound-and-true-p glasses-mode)))) |
:button (:toggle . (bound-and-true-p glasses-mode)))) |
343 |
(define-key mode-line-mode-menu [hide-ifdef-mode] |
(define-key mode-line-mode-menu [hide-ifdef-mode] |
344 |
`(menu-item ,(purecopy "Hide ifdef") hide-ifdef-mode |
`(menu-item ,(purecopy "Hide ifdef (Ifdef)") hide-ifdef-mode |
345 |
:button (:toggle . (bound-and-true-p hide-ifdef-mode)))) |
:button (:toggle . (bound-and-true-p hide-ifdef-mode)))) |
346 |
(define-key mode-line-mode-menu [font-lock-mode] |
(define-key mode-line-mode-menu [font-lock-mode] |
347 |
`(menu-item ,(purecopy "Font-lock") font-lock-mode |
`(menu-item ,(purecopy "Font-lock") font-lock-mode |
348 |
:button (:toggle . font-lock-mode))) |
:button (:toggle . font-lock-mode))) |
349 |
(define-key mode-line-mode-menu [flyspell-mode] |
(define-key mode-line-mode-menu [flyspell-mode] |
350 |
`(menu-item ,(purecopy "Flyspell") flyspell-mode |
`(menu-item ,(purecopy "Flyspell (Fly)") flyspell-mode |
351 |
:button (:toggle . (bound-and-true-p flyspell-mode)))) |
:button (:toggle . (bound-and-true-p flyspell-mode)))) |
352 |
(define-key mode-line-mode-menu [column-number-mode] |
(define-key mode-line-mode-menu [column-number-mode] |
353 |
`(menu-item ,(purecopy "Column number") column-number-mode |
`(menu-item ,(purecopy "Column number") column-number-mode |
354 |
:button (:toggle . column-number-mode))) |
:button (:toggle . column-number-mode))) |
355 |
(define-key mode-line-mode-menu [auto-fill-mode] |
(define-key mode-line-mode-menu [auto-fill-mode] |
356 |
`(menu-item ,(purecopy "Auto-fill") auto-fill-mode |
`(menu-item ,(purecopy "Auto-fill (Fill)") auto-fill-mode |
357 |
:button (:toggle . auto-fill-function))) |
:button (:toggle . auto-fill-function))) |
358 |
(define-key mode-line-mode-menu [auto-revert-mode] |
(define-key mode-line-mode-menu [auto-revert-mode] |
359 |
`(menu-item ,(purecopy "Auto revert") auto-revert-mode |
`(menu-item ,(purecopy "Auto revert (ARev)") auto-revert-mode |
360 |
:button (:toggle . auto-revert-mode))) |
:button (:toggle . auto-revert-mode))) |
361 |
(define-key mode-line-mode-menu [abbrev-mode] |
(define-key mode-line-mode-menu [abbrev-mode] |
362 |
`(menu-item ,(purecopy "Abbrev") abbrev-mode |
`(menu-item ,(purecopy "Abbrev (Abbrev)") abbrev-mode |
363 |
:button (:toggle . abbrev-mode))) |
:button (:toggle . abbrev-mode))) |
364 |
|
|
365 |
(defun mode-line-mode-menu (event) |
(defun mode-line-mode-menu (event) |
395 |
(setq-default mode-line-buffer-identification |
(setq-default mode-line-buffer-identification |
396 |
(propertized-buffer-identification "%12b")) |
(propertized-buffer-identification "%12b")) |
397 |
|
|
|
;; Menu of minor modes. |
|
|
(let ((map (make-sparse-keymap))) |
|
|
(define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) |
|
|
(define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) |
|
|
(setq mode-line-minor-mode-keymap map)) |
|
|
|
|
398 |
(defvar minor-mode-alist nil "\ |
(defvar minor-mode-alist nil "\ |
399 |
Alist saying how to show minor modes in the mode line. |
Alist saying how to show minor modes in the mode line. |
400 |
Each element looks like (VARIABLE STRING); |
Each element looks like (VARIABLE STRING); |
405 |
;; Don't use purecopy here--some people want to change these strings. |
;; Don't use purecopy here--some people want to change these strings. |
406 |
(setq minor-mode-alist |
(setq minor-mode-alist |
407 |
(list |
(list |
408 |
(list 'abbrev-mode |
(list 'abbrev-mode " Abbrev") |
|
(propertize " Abbrev" |
|
|
'help-echo (purecopy "mouse-3: minor mode menu") |
|
|
'local-map mode-line-minor-mode-keymap)) |
|
409 |
'(overwrite-mode overwrite-mode) |
'(overwrite-mode overwrite-mode) |
410 |
(list 'auto-fill-function |
(list 'auto-fill-function " Fill") |
|
(propertize " Fill" |
|
|
'help-echo (purecopy "mouse-3: minor mode menu") |
|
|
'local-map mode-line-minor-mode-keymap)) |
|
411 |
;; not really a minor mode... |
;; not really a minor mode... |
412 |
'(defining-kbd-macro " Def"))) |
'(defining-kbd-macro " Def"))) |
413 |
|
|