]> code.delx.au - gnu-emacs/blobdiff - lisp/bindings.el
*** empty log message ***
[gnu-emacs] / lisp / bindings.el
index 3f64044554bfbe720870dcce3d07c2f791702c9f..5affecd99a98f5cd3906c06bc10cf07de28f12cf 100644 (file)
@@ -138,29 +138,25 @@ corresponding to the mode line clicked."
 (defvar mode-line-mule-info
   `(""
     (current-input-method
-     (:eval
-      ,(purecopy
-       '(propertize current-input-method-title
-                    'help-echo (concat
-                                "Input method: "
-                                current-input-method
-                                ".  mouse-2: disable, mouse-3: describe")
-                    'local-map mode-line-input-method-map))))
+     (:propertize ("" current-input-method-title)
+                 help-echo (concat
+                            "Input method: "
+                            current-input-method
+                            ".  mouse-2: disable, mouse-3: describe")
+                 local-map ,mode-line-input-method-map))
     ,(propertize
       "%Z"
       'help-echo
-      (purecopy (lambda (window object point)
-                 (save-window-excursion
-                   (select-window window)
-                   ;; Don't show this tip if the coding system is nil,
-                   ;; it reads like a bug, and is not useful anyway.
-                   (when buffer-file-coding-system
-                     (if enable-multibyte-characters
-                         (concat (symbol-name buffer-file-coding-system)
-                                 " buffer; mouse-3: describe coding system")
-                       (concat "Unibyte "
-                               (symbol-name buffer-file-coding-system)
-                               " buffer"))))))
+      #'(lambda (window object point)
+         (with-current-buffer (window-buffer window)
+           ;; Don't show this tip if the coding system is nil,
+           ;; it reads like a bug, and is not useful anyway.
+           (when buffer-file-coding-system
+             (if enable-multibyte-characters
+                 (concat (symbol-name buffer-file-coding-system)
+                         " buffer; mouse-3: describe coding system")
+               (concat "Unibyte " (symbol-name buffer-file-coding-system)
+                       " buffer")))))
       'local-map mode-line-coding-system-map))
   "Mode-line control for displaying information of multilingual environment.
 Normally it displays current input method (if any activated) and
@@ -227,6 +223,15 @@ Normally nil in most modes, since there is no process to display.")
 (defvar mode-line-modes nil
   "Mode-line control for displaying major and minor modes.")
 
+(defvar mode-line-minor-mode-keymap nil "\
+Keymap to display on major and minor modes.")
+
+;; 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))
+
 (let* ((help-echo
        ;; The multi-line message doesn't work terribly well on the
        ;; bottom mode line...  Better ideas?
@@ -252,13 +257,15 @@ Normally nil in most modes, since there is no process to display.")
   (setq-default mode-line-modes
     (list
      (propertize "   %[(" 'help-echo help-echo)
-     '(:eval (mode-line-mode-name)) 'mode-line-process 'minor-mode-alist
+     `(:propertize ("" mode-name mode-line-process minor-mode-alist)
+                  help-echo "mouse-3: minor mode menu"
+                  local-map ,mode-line-minor-mode-keymap)
      (propertize "%n" 'help-echo "mouse-2: widen"
                 'local-map (make-mode-line-mouse-map
                             'mouse-2 #'mode-line-widen))
      (propertize ")%]--" 'help-echo help-echo)))
 
-  (setq-default mode-line-position 
+  (setq-default mode-line-position
     `((line-number-mode (,(propertize "L%l" 'help-echo help-echo) ,dashes))
       (column-number-mode (,(propertize "C%c" 'help-echo help-echo) ,dashes))
       (-3 . ,(propertize "%p" 'help-echo help-echo)))))
@@ -266,24 +273,27 @@ Normally nil in most modes, since there is no process to display.")
 (defvar mode-line-buffer-identification-keymap nil "\
 Keymap for what is displayed by `mode-line-buffer-identification'.")
 
-(defvar mode-line-minor-mode-keymap nil "\
-Keymap for what is displayed by `mode-line-mode-name'.")
+(defun last-buffer () "\
+Return the last non-hidden buffer in the buffer list."
+  (let ((list (reverse (buffer-list))))
+    (while (eq (aref (buffer-name (car list)) 0) ? )
+      (setq list (cdr list)))
+    (car list)))
 
-(defvar mode-line-mode-menu-keymap nil "\
-Keymap for mode operations menu in the mode line.")
+(defun unbury-buffer () "\
+Switch to the last buffer in the buffer list."
+  (interactive)
+  (switch-to-buffer (last-buffer)))
 
 (defun mode-line-unbury-buffer (event) "\
-Switch to the last buffer in the buffer list that is not hidden."
+Call `unbury-buffer' in this window."
   (interactive "e")
   (save-selected-window
     (select-window (posn-window (event-start event)))
-    (let ((list (reverse (buffer-list))))
-      (while (eq (aref (buffer-name (car list)) 0) ? )
-       (setq list (cdr list)))
-      (switch-to-buffer (car list)))))
+    (unbury-buffer)))
 
 (defun mode-line-bury-buffer (event) "\
-Like bury-buffer, but temporarily select EVENT's window."
+Like `bury-buffer', but temporarily select EVENT's window."
   (interactive "e")
   (save-selected-window
     (select-window (posn-window (event-start event)))
@@ -307,68 +317,45 @@ Menu of mode operations in the mode line.")
       (if binding
          (call-interactively binding)))))
 
-(defun mode-line-mode-name () "\
-Return a string to display in the mode line for the current mode name."
-  (when (stringp mode-name)
-    (let ((local-map (get-text-property 0 'local-map mode-name))
-         (help-echo (get-text-property 0 'help-echo mode-name)))
-      ;; For correctness, we shouldn't modify mode-name.  But adding some
-      ;; text-properties to those mode-name strings can't hurt, really, and
-      ;; furthermore, by doing it in-place, we make sure that we don't need to
-      ;; do the work over and over and over and ....  -stef
-      (unless (and local-map help-echo)
-       (setq mode-name (copy-sequence mode-name)))
-      ;; Add `local-map' property if there isn't already one.
-      (unless (or local-map
-                 (next-single-property-change 0 'local-map mode-name))
-       (put-text-property 0 (length mode-name)
-                          'local-map mode-line-minor-mode-keymap mode-name)
-       ;; Add `help-echo' property if there isn't already one.
-       (unless (or help-echo
-                   (next-single-property-change 0 'help-echo mode-name))
-         (put-text-property 0 (length mode-name) 'help-echo
-                            "mouse-3: minor mode menu" mode-name)))))
-  mode-name)
-
 (defmacro bound-and-true-p (var)
   "Return the value of symbol VAR if it is bound, else nil."
   `(and (boundp (quote ,var)) ,var))
 
 (define-key mode-line-mode-menu [overwrite-mode]
-  `(menu-item ,(purecopy "Overwrite") overwrite-mode
+  `(menu-item ,(purecopy "Overwrite (Ovwrt)") overwrite-mode
              :button (:toggle . overwrite-mode)))
 (define-key mode-line-mode-menu [outline-minor-mode]
-  `(menu-item ,(purecopy "Outline") outline-minor-mode
+  `(menu-item ,(purecopy "Outline (Outl)") outline-minor-mode
              :button (:toggle . (bound-and-true-p outline-minor-mode))))
 (define-key mode-line-mode-menu [line-number-mode]
   `(menu-item ,(purecopy "Line number") line-number-mode
              :button (:toggle . line-number-mode)))
 (define-key mode-line-mode-menu [highlight-changes-mode]
-  `(menu-item ,(purecopy "Highlight changes") highlight-changes-mode
+  `(menu-item ,(purecopy "Highlight changes (Chg)") highlight-changes-mode
              :button (:toggle . highlight-changes-mode)))
 (define-key mode-line-mode-menu [glasses-mode]
-  `(menu-item ,(purecopy "Glasses") glasses-mode
+  `(menu-item ,(purecopy "Glasses (o^o)") glasses-mode
              :button (:toggle . (bound-and-true-p glasses-mode))))
 (define-key mode-line-mode-menu [hide-ifdef-mode]
-  `(menu-item ,(purecopy "Hide ifdef") hide-ifdef-mode
+  `(menu-item ,(purecopy "Hide ifdef (Ifdef)") hide-ifdef-mode
              :button (:toggle . (bound-and-true-p hide-ifdef-mode))))
 (define-key mode-line-mode-menu [font-lock-mode]
   `(menu-item ,(purecopy "Font-lock") font-lock-mode
              :button (:toggle . font-lock-mode)))
 (define-key mode-line-mode-menu [flyspell-mode]
-  `(menu-item ,(purecopy "Flyspell") flyspell-mode
+  `(menu-item ,(purecopy "Flyspell (Fly)") flyspell-mode
              :button (:toggle . (bound-and-true-p flyspell-mode))))
 (define-key mode-line-mode-menu [column-number-mode]
   `(menu-item ,(purecopy "Column number") column-number-mode
              :button (:toggle . column-number-mode)))
 (define-key mode-line-mode-menu [auto-fill-mode]
-  `(menu-item ,(purecopy "Auto-fill") auto-fill-mode
+  `(menu-item ,(purecopy "Auto-fill (Fill)") auto-fill-mode
              :button (:toggle . auto-fill-function)))
 (define-key mode-line-mode-menu [auto-revert-mode]
-  `(menu-item ,(purecopy "Auto revert") auto-revert-mode
+  `(menu-item ,(purecopy "Auto revert (ARev)") auto-revert-mode
              :button (:toggle . auto-revert-mode)))
 (define-key mode-line-mode-menu [abbrev-mode]
-  `(menu-item ,(purecopy "Abbrev") abbrev-mode
+  `(menu-item ,(purecopy "Abbrev (Abbrev)") abbrev-mode
              :button (:toggle . abbrev-mode)))
 
 (defun mode-line-mode-menu (event)
@@ -404,12 +391,6 @@ text properties for face, help-echo, and local-map to it."
 (setq-default mode-line-buffer-identification
              (propertized-buffer-identification "%12b"))
 
-;; 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))
-
 (defvar minor-mode-alist nil "\
 Alist saying how to show minor modes in the mode line.
 Each element looks like (VARIABLE STRING);
@@ -420,15 +401,9 @@ is okay.  See `mode-line-format'.")
 ;; Don't use purecopy here--some people want to change these strings.
 (setq minor-mode-alist
       (list
-       (list 'abbrev-mode
-            (propertize " Abbrev"
-                        'help-echo (purecopy "mouse-3: minor mode menu")
-                        'local-map mode-line-minor-mode-keymap))
+       (list 'abbrev-mode " Abbrev")
        '(overwrite-mode overwrite-mode)
-       (list 'auto-fill-function
-            (propertize " Fill"
-                        'help-echo (purecopy "mouse-3: minor mode menu")
-                        'local-map mode-line-minor-mode-keymap))
+       (list 'auto-fill-function " Fill")
        ;; not really a minor mode...
        '(defining-kbd-macro " Def")))
 
@@ -821,14 +796,17 @@ language you are using."
 (define-key function-key-map [C-S-kp-home] [C-S-home])
 (define-key function-key-map [C-S-kp-up] [C-S-up])
 (define-key function-key-map [C-S-kp-prior] [C-S-prior])
-(define-key function-key-map [S-kp-1] [S-end])
-(define-key function-key-map [S-kp-2] [S-down])
-(define-key function-key-map [S-kp-3] [S-next])
-(define-key function-key-map [S-kp-4] [S-left])
-(define-key function-key-map [S-kp-6] [S-right])
-(define-key function-key-map [S-kp-7] [S-home])
-(define-key function-key-map [S-kp-8] [S-up])
-(define-key function-key-map [S-kp-9] [S-prior])
+;; Don't bind shifted keypad numeric keys, they reportedly
+;; interfere with the feature of some keyboards to produce
+;; numbers when NumLock is off.
+;(define-key function-key-map [S-kp-1] [S-end])
+;(define-key function-key-map [S-kp-2] [S-down])
+;(define-key function-key-map [S-kp-3] [S-next])
+;(define-key function-key-map [S-kp-4] [S-left])
+;(define-key function-key-map [S-kp-6] [S-right])
+;(define-key function-key-map [S-kp-7] [S-home])
+;(define-key function-key-map [S-kp-8] [S-up])
+;(define-key function-key-map [S-kp-9] [S-prior])
 (define-key function-key-map [C-S-kp-1] [C-S-end])
 (define-key function-key-map [C-S-kp-2] [C-S-down])
 (define-key function-key-map [C-S-kp-3] [C-S-next])