;;; 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
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]
(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)
(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))
'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")))
"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")
".fas" ".lib"
;; CMUCL
".x86f" ".sparcf"
+ ;; Libtool
+ ".lo" ".la"
;; Texinfo-related
".toc" ".log" ".aux"
".cp" ".fn" ".ky" ".pg" ".tp" ".vr"
(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)
(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)
(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)
(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)
(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)
(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)