fix live process/dead buffer bub on w32
[bpt/emacs.git] / lisp / bindings.el
index c6aefec..10a098b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; bindings.el --- define standard key bindings and some variables.
 
-;; Copyright (C) 1985,86,87,92,93,94,95,96,99,2000
+;; Copyright (C) 1985,86,87,92,93,94,95,96,99,2000, 2001
 ;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -52,16 +52,55 @@ Return a keymap with single entry for mouse-2 on mode line.
 This is defined to run function F with no args in the buffer
 corresponding to the mode line clicked."
   (let ((map (make-sparse-keymap)))
-    (define-key map [mode-line mouse-2]
-      `(lambda (e)
-        (interactive "e")
-        (save-selected-window
-          (select-window
-           (posn-window (event-start e)))
-          (,f)
-          (force-mode-line-update))))
+    (define-key map [mode-line mouse-2] f)
     map))
 
+
+(defun mode-line-toggle-read-only (event)
+  "Like `toggle-read-only', for the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (toggle-read-only)
+    (force-mode-line-update)))
+
+
+(defun mode-line-toggle-modified (event)
+  "Toggle the buffer-modified flag from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (set-buffer-modified-p (not (buffer-modified-p)))
+    (force-mode-line-update)))
+
+
+(defun mode-line-widen (event)
+  "Widen a buffer from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (widen)
+    (force-mode-line-update)))
+
+
+(defun mode-line-abbrev-mode (event)
+  "Turn off `abbrev-mode' from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (abbrev-mode)
+    (force-mode-line-update)))
+
+
+(defun mode-line-auto-fill-mode (event)
+  "Turn off `auto-fill-mode' from the mode-line."
+  (interactive "e")
+  (save-selected-window
+    (select-window (posn-window (event-start event)))
+    (auto-fill-mode)
+    (force-mode-line-update)))
+
+
 (defvar mode-line-input-method-map
   (let ((map (make-sparse-keymap)))
     (define-key map [mode-line mouse-2]
@@ -143,21 +182,19 @@ Normally nil in most modes, since there is no process to display.")
                                          (if buffer-read-only
                                              "R"
                                            "Not r")))))
-        'local-map (purecopy (make-mode-line-mouse2-map #'toggle-read-only)))
+        'local-map (purecopy (make-mode-line-mouse2-map
+                              #'mode-line-toggle-read-only)))
        (propertize
         "%1+"
         'help-echo  (purecopy (lambda (window object point)
-                                (format "%sodified: mouse-2 toggles flag"
+                                (format "%sodified: mouse-2 toggles"
                                         (save-selected-window
                                           (select-window window)
                                           (if (buffer-modified-p)
                                             "M"
                                           "Not m")))))
         'local-map (purecopy (make-mode-line-mouse2-map
-                              (lambda ()
-                                (interactive)
-                                (set-buffer-modified-p
-                                 (not (buffer-modified-p))))))))
+                              #'mode-line-toggle-modified))))
   "Mode-line control for displaying whether current buffer is modified.")
 
 (make-variable-buffer-local 'mode-line-modified)
@@ -182,7 +219,7 @@ Normally nil in most modes, since there is no process to display.")
      (propertize "   %[(" 'help-echo help-echo)
      '(:eval (mode-line-mode-name)) 'mode-line-process 'minor-mode-alist
      (propertize "%n" 'help-echo "mouse-2: widen"
-                'local-map (make-mode-line-mouse2-map #'widen))
+                'local-map (make-mode-line-mouse2-map #'mode-line-widen))
      (propertize ")%]--" 'help-echo help-echo)
      `(which-func-mode ("" which-func-format ,dashes))
      `(line-number-mode ("L%l" ,dashes))
@@ -205,14 +242,14 @@ is okay.  See `mode-line-format'.")
                         'help-echo (purecopy
                                     "mouse-2: turn off Abbrev mode")
                         'local-map (purecopy (make-mode-line-mouse2-map
-                                              #'abbrev-mode))))
+                                              #'mode-line-abbrev-mode))))
        '(overwrite-mode overwrite-mode)
        (list 'auto-fill-function
             (propertize " Fill"
                         'help-echo (purecopy
                                     "mouse-2: turn off Autofill mode")
                         'local-map (purecopy (make-mode-line-mouse2-map
-                                              #'auto-fill-mode))))
+                                              #'mode-line-auto-fill-mode))))
        ;; not really a minor mode...
        '(defining-kbd-macro " Def")))
 
@@ -273,39 +310,42 @@ Return a string to display in the mode line for the current mode name."
   "Return the value of symbol VAR if it is bound, else nil."
   `(and (boundp (quote ,var)) ,var))
 
-(define-key mode-line-mode-menu [abbrev-mode]
-  `(menu-item ,(purecopy "Abbrev") abbrev-mode
-             :button (:toggle . abbrev-mode)))
-(define-key mode-line-mode-menu [auto-revert-mode]
-  `(menu-item ,(purecopy "Auto revert") auto-revert-mode
-             :button (:toggle . auto-revert-mode)))
-(define-key mode-line-mode-menu [auto-fill-mode]
-  `(menu-item ,(purecopy "Auto-fill") auto-fill-mode
-             :button (:toggle . auto-fill-function)))
-(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 [flyspell-mode]
-  `(menu-item ,(purecopy "Flyspell") flyspell-mode
-             :button (:toggle . (bound-and-true-p flyspell-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 [hide-ifdef-mode]
-  `(menu-item ,(purecopy "Hide ifdef") hide-ifdef-mode
-             :button (:toggle . (bound-and-true-p hide-ifdef-mode))))
-(define-key mode-line-mode-menu [highlight-changes-mode]
-  `(menu-item ,(purecopy "Highlight changes") highlight-changes-mode
-             :button (:toggle . highlight-changes-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 [outline-minor-mode]
-  `(menu-item ,(purecopy "Outline") outline-minor-mode
-             :button (:toggle . (bound-and-true-p outline-minor-mode))))
 (define-key mode-line-mode-menu [overwrite-mode]
   `(menu-item ,(purecopy "Overwrite") overwrite-mode
              :button (:toggle . overwrite-mode)))
+(define-key mode-line-mode-menu [outline-minor-mode]
+  `(menu-item ,(purecopy "Outline") 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
+             :button (:toggle . highlight-changes-mode)))
+(define-key mode-line-mode-menu [glasses-mode]
+  `(menu-item ,(purecopy "Glasses") 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
+             :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
+             :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
+             :button (:toggle . auto-fill-function)))
+(define-key mode-line-mode-menu [auto-revert-mode]
+  `(menu-item ,(purecopy "Auto revert") auto-revert-mode
+             :button (:toggle . auto-revert-mode)))
+(define-key mode-line-mode-menu [abbrev-mode]
+  `(menu-item ,(purecopy "Abbrev") abbrev-mode
+             :button (:toggle . abbrev-mode)))
 
 (defun mode-line-mode-menu (event)
   (interactive "@e")
@@ -372,6 +412,8 @@ buffer, mouse-2: prev, M-mouse-2: next, mouse-3: buffer menu")
         ".fas" ".lib"
         ;; CMUCL
         ".x86f" ".sparcf"
+        ;; Libtool
+        ".lo" ".la"
         ;; Texinfo-related
         ".toc" ".log" ".aux"
         ".cp" ".fn" ".ky" ".pg" ".tp" ".vr"
@@ -446,8 +488,10 @@ buffer, mouse-2: prev, M-mouse-2: next, mouse-3: buffer menu")
 
 (make-variable-buffer-local 'indent-tabs-mode)
 
-;; We have base64 functions built in now.
+;; We have base64 and md5 functions built in now.
 (add-to-list 'features 'base64)
+(add-to-list 'features 'md5)
+(add-to-list 'features 'overlay)
 
 (define-key esc-map "\t" 'complete-symbol)
 
@@ -575,10 +619,12 @@ language you are using."
 (define-key global-map [menu] 'execute-extended-command)
 (define-key global-map [find] 'search-forward)
 
-(define-key global-map [delete] 'delete-char)
+;; Don't do this.  We define <delete> in function-key-map instead.
+;(define-key global-map [delete] 'backward-delete-char)
 
 ;; natural bindings for terminal keycaps --- defined in X keysym order
-(define-key global-map [home]          'beginning-of-buffer)
+(define-key global-map [home]          'beginning-of-line)
+(define-key global-map [C-home]                'beginning-of-buffer)
 (define-key global-map [M-home]                'beginning-of-buffer-other-window)
 (define-key global-map [left]          'backward-char)
 (define-key global-map [up]            'previous-line)
@@ -592,7 +638,8 @@ language you are using."
 (define-key global-map [C-next]                'scroll-left)
 (define-key global-map [M-next]                'scroll-other-window)
 (define-key global-map [M-prior]       'scroll-other-window-down)
-(define-key global-map [end]           'end-of-buffer)
+(define-key global-map [end]           'end-of-line)
+(define-key global-map [C-end]         'end-of-buffer)
 (define-key global-map [M-end]         'end-of-buffer-other-window)
 (define-key global-map [begin]         'beginning-of-buffer)
 (define-key global-map [M-begin]       'beginning-of-buffer-other-window)
@@ -684,7 +731,9 @@ language you are using."
 (define-key function-key-map [kp-end] [end])
 (define-key function-key-map [kp-begin] [begin])
 (define-key function-key-map [kp-insert] [insert])
-(define-key function-key-map [kp-delete] [delete])
+(define-key function-key-map [backspace] [?\C-?])
+(define-key function-key-map [delete] [?\C-?])
+(define-key function-key-map [kp-delete] [?\C-?])
 
 (define-key global-map [mouse-movement] 'ignore)
 
@@ -722,7 +771,8 @@ language you are using."
 (global-set-key [C-right]  'forward-word)
 (global-set-key [C-left]   'backward-word)
 ;; This is not quite compatible, but at least is analogous
-(global-set-key [C-delete]   'backward-kill-word)
+(global-set-key [C-delete] 'backward-kill-word)
+(global-set-key [C-backspace] 'kill-word)
 ;; This is "move to the clipboard", or as close as we come.
 (global-set-key [S-delete] 'kill-region)
 
@@ -735,6 +785,8 @@ language you are using."
 (define-key esc-map "\C-k" 'kill-sexp)
 (define-key global-map [C-M-delete] 'backward-kill-sexp)
 (define-key global-map [C-M-backspace] 'backward-kill-sexp)
+(define-key esc-map [C-delete] 'backward-kill-sexp)
+(define-key esc-map [C-backspace] 'backward-kill-sexp)
 (define-key esc-map "\C-n" 'forward-list)
 (define-key esc-map "\C-p" 'backward-list)
 (define-key esc-map "\C-a" 'beginning-of-defun)