X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a69c614102a07d989b80a99268609298c5e75b73..d33c1fcea2d4ccbc45ceedc430337971ab087b9c:/lisp/bindings.el diff --git a/lisp/bindings.el b/lisp/bindings.el index 81425eba2d..a244979858 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@ -1,7 +1,7 @@ ;;; bindings.el --- define standard key bindings and some variables -;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996, 1999, 2000, -;; 2001, 2005 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996, 1999, +;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: internal @@ -20,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -123,7 +123,7 @@ corresponding to the mode line clicked." (defvar mode-line-coding-system-map (let ((map (make-sparse-keymap))) - (define-key map [mode-line mouse-3] + (define-key map [mode-line mouse-1] (lambda (e) (interactive "e") (save-selected-window @@ -156,7 +156,7 @@ corresponding to the mode line clicked." (setq desc (propertize mnemonic - 'help-echo (format "%s end-of-line; mouse-3 to cycle" + 'help-echo (format "%s end-of-line; mouse-1 to cycle" (if (eq eol 0) "Unix-style LF" (if (eq eol 1) "Dos-style CRLF" (if (eq eol 2) "Mac-style CR" @@ -164,8 +164,9 @@ corresponding to the mode line clicked." 'keymap (eval-when-compile (let ((map (make-sparse-keymap))) - (define-key map [mode-line mouse-3] 'mode-line-change-eol) - map)))) + (define-key map [mode-line mouse-1] 'mode-line-change-eol) + map)) + 'mouse-face 'mode-line-highlight)) (push (cons eol (cons mnemonic desc)) mode-line-eol-desc-cache) desc))) @@ -177,7 +178,8 @@ corresponding to the mode line clicked." "Input method: " current-input-method ". mouse-2: disable, mouse-3: describe") - local-map ,mode-line-input-method-map)) + local-map ,mode-line-input-method-map + mouse-face mode-line-highlight)) ,(propertize "%z" 'help-echo @@ -188,9 +190,10 @@ corresponding to the mode line clicked." (when buffer-file-coding-system (if enable-multibyte-characters (concat (symbol-name buffer-file-coding-system) - " buffer; mouse-3: describe coding system") + " buffer; mouse-1: describe coding system") (concat "Unibyte " (symbol-name buffer-file-coding-system) " buffer"))))) + 'mouse-face 'mode-line-highlight 'local-map mode-line-coding-system-map) (:eval (mode-line-eol-desc))) "Mode-line control for displaying information of multilingual environment. @@ -227,26 +230,28 @@ Normally nil in most modes, since there is no process to display.") (list (propertize "%1*" 'help-echo (purecopy (lambda (window object point) - (format "%sead-only: mouse-3 toggles" + (format "%sead-only: mouse-1 toggles" (save-selected-window (select-window window) (if buffer-read-only "R" "Not r"))))) 'local-map (purecopy (make-mode-line-mouse-map - 'mouse-3 - #'mode-line-toggle-read-only))) + 'mouse-1 + #'mode-line-toggle-read-only)) + 'mouse-face 'mode-line-highlight) (propertize "%1+" 'help-echo (purecopy (lambda (window object point) - (format "%sodified: mouse-3 toggles" + (format "%sodified: mouse-1 toggles" (save-selected-window (select-window window) (if (buffer-modified-p) "M" "Not m"))))) 'local-map (purecopy (make-mode-line-mouse-map - 'mouse-3 #'mode-line-toggle-modified)))) + 'mouse-1 #'mode-line-toggle-modified)) + 'mouse-face 'mode-line-highlight)) "Mode-line control for displaying whether current buffer is modified.") (make-variable-buffer-local 'mode-line-modified) @@ -262,6 +267,7 @@ buffer size, the line number and the column number.") (defvar mode-line-major-mode-keymap (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] 'mouse-major-mode-menu) (define-key map [mode-line mouse-2] 'describe-mode) (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) map) "\ @@ -285,6 +291,7 @@ Keymap to display on minor modes.") (dashes (propertize "--" 'help-echo help-echo))) (setq-default mode-line-format (list + "%e" (propertize "-" 'help-echo help-echo) 'mode-line-mule-info 'mode-line-modified @@ -303,13 +310,16 @@ Keymap to display on minor modes.") (list (propertize "%[(" 'help-echo help-echo) `(:propertize ("" mode-name) - help-echo "mouse-2: help for current major mode" + help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes" + mouse-face mode-line-highlight local-map ,mode-line-major-mode-keymap) '("" mode-line-process) `(:propertize ("" minor-mode-alist) - help-echo "mouse-2: help for minor modes, mouse-3: minor mode menu" + mouse-face mode-line-highlight + help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes" local-map ,mode-line-minor-mode-keymap) (propertize "%n" 'help-echo "mouse-2: widen" + 'mouse-face 'mode-line-highlight 'local-map (make-mode-line-mouse-map 'mouse-2 #'mode-line-widen)) (propertize ")%]--" 'help-echo help-echo))) @@ -328,29 +338,6 @@ Keymap to display on minor modes.") (defvar mode-line-buffer-identification-keymap nil "\ Keymap for what is displayed by `mode-line-buffer-identification'.") -(defun last-buffer () "\ -Return the last non-hidden buffer in the buffer list." - ;; This logic is more or less copied from bury-buffer, - ;; except that we reverse the buffer list. - (let ((list (nreverse (buffer-list (selected-frame)))) - (pred (frame-parameter nil 'buffer-predicate)) - found notsogood) - (while (and list (not found)) - (unless (or (eq (aref (buffer-name (car list)) 0) ? ) - ;; If the selected frame has a buffer_predicate, - ;; disregard buffers that don't fit the predicate. - (and pred (not (funcall pred (car list))))) - (if (get-buffer-window (car list) 'visible) - (or notsogood (eq (car list) (current-buffer))) - (setq found (car list)))) - (pop list)) - (or found notsogood - (get-buffer "*scratch*") - (progn - (set-buffer-major-mode - (get-buffer-create "*scratch*")) - (get-buffer "*scratch*"))))) - (defun unbury-buffer () "\ Switch to the last buffer in the buffer list." (interactive) @@ -375,6 +362,20 @@ Switch to the most recently selected buffer other than the current one." (interactive) (switch-to-buffer (other-buffer))) +(defun mode-line-next-buffer (event) + "Like `next-buffer', but temporarily select EVENT's window." + (interactive "e") + (save-selected-window + (select-window (posn-window (event-start event))) + (next-buffer))) + +(defun mode-line-previous-buffer (event) + "Like `previous-buffer', but temporarily select EVENT's window." + (interactive "e") + (save-selected-window + (select-window (posn-window (event-start event))) + (previous-buffer))) + (defvar mode-line-mode-menu (make-sparse-keymap "Minor Modes") "\ Menu of mode operations in the mode line.") @@ -392,9 +393,6 @@ Menu of mode operations in the mode line.") "Return the value of symbol VAR if it is bound, else nil." `(and (boundp (quote ,var)) ,var)) -(define-key mode-line-mode-menu [tooltip-mode] - `(menu-item ,(purecopy "Tooltip") tooltip-mode - :button (:toggle . tooltip-mode))) (define-key mode-line-mode-menu [overwrite-mode] `(menu-item ,(purecopy "Overwrite (Ovwrt)") overwrite-mode :button (:toggle . overwrite-mode))) @@ -451,13 +449,13 @@ Menu of mode operations in the mode line.") (let ((map (make-sparse-keymap))) ;; Bind down- events so that the global keymap won't ``shine ;; through''. - (define-key map [mode-line mouse-1] 'mode-line-unbury-buffer) + (define-key map [mode-line mouse-1] 'mode-line-previous-buffer) (define-key map [header-line down-mouse-1] 'ignore) - (define-key map [header-line mouse-1] 'mode-line-unbury-buffer) + (define-key map [header-line mouse-1] 'mode-line-previous-buffer) (define-key map [header-line down-mouse-3] 'ignore) - (define-key map [mode-line mouse-3] 'mode-line-bury-buffer) + (define-key map [mode-line mouse-3] 'mode-line-next-buffer) (define-key map [header-line down-mouse-3] 'ignore) - (define-key map [header-line mouse-3] 'mode-line-bury-buffer) + (define-key map [header-line mouse-3] 'mode-line-next-buffer) (setq mode-line-buffer-identification-keymap map)) (defun propertized-buffer-identification (fmt) @@ -465,9 +463,10 @@ Menu of mode operations in the mode line.") FMT is a format specifier such as \"%12b\". This function adds text properties for face, help-echo, and local-map to it." (list (propertize fmt - 'face 'Buffer-menu-buffer-face + 'face 'mode-line-buffer-id 'help-echo (purecopy "mouse-1: previous buffer, mouse-3: next buffer") + 'mouse-face 'mode-line-highlight 'local-map mode-line-buffer-identification-keymap))) (setq-default mode-line-buffer-identification @@ -503,7 +502,7 @@ is okay. See `mode-line-format'.") ".a" ".ln" ".blg" ".bbl" ".dll" ".drv" ".vxd" ".386")) ((eq system-type 'vax-vms) '(".obj" ".exe" ".bin" ".lbin" ".sbin" - ".brn" ".rnt" ".lni" ".lis" + ".brn" ".rnt" ".lni" ".olb" ".tlb" ".mlb" ".hlb")) (t '(".o" "~" ".bin" ".lbin" ".so" @@ -628,6 +627,10 @@ language you are using." ;; (define-key ctl-x-map "n" 'narrow-to-region) ;; (define-key ctl-x-map "w" 'widen) +;; Quitting +(define-key global-map "\e\e\e" 'keyboard-escape-quit) +(define-key global-map "\C-g" 'keyboard-quit) + (define-key global-map "\C-j" 'newline-and-indent) (define-key global-map "\C-m" 'newline) (define-key global-map "\C-o" 'open-line) @@ -652,9 +655,18 @@ language you are using." ;; Many people are used to typing C-/ on X terminals and getting C-_. (define-key global-map [?\C-/] 'undo) (define-key global-map "\C-_" 'undo) +;; Richard said that we should not use C-x and I have +;; no idea whereas to bind it. Any suggestion welcome. -stef +;; (define-key ctl-x-map "U" 'undo-only) + (define-key esc-map "!" 'shell-command) (define-key esc-map "|" 'shell-command-on-region) +(define-key global-map [?\C-x right] 'next-buffer) +(define-key global-map [?\C-x C-right] 'next-buffer) +(define-key global-map [?\C-x left] 'previous-buffer) +(define-key global-map [?\C-x C-left] 'previous-buffer) + (let ((map minibuffer-local-map)) (define-key map "\en" 'next-history-element) (define-key map [next] 'next-history-element) @@ -705,7 +717,16 @@ language you are using." (define-key ctl-x-map "\C-n" 'set-goal-column) (define-key global-map "\C-a" 'move-beginning-of-line) (define-key global-map "\C-e" 'move-end-of-line) -(define-key esc-map "g" 'goto-line) +(define-key esc-map "g" (make-sparse-keymap)) +(define-key esc-map "g\M-g" 'goto-line) +(define-key esc-map "gg" 'goto-line) + +(define-key esc-map "gn" 'next-error) +(define-key esc-map "g\M-n" 'next-error) +(define-key ctl-x-map "`" 'next-error) + +(define-key esc-map "gp" 'previous-error) +(define-key esc-map "g\M-p" 'previous-error) ;;(defun function-key-error () ;; (interactive) @@ -719,9 +740,10 @@ language you are using." ;; natural bindings for terminal keycaps --- defined in X keysym order (define-key global-map [C-S-backspace] 'kill-whole-line) -(define-key global-map [home] 'beginning-of-line) +(define-key global-map [home] 'move-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 esc-map [home] 'beginning-of-buffer-other-window) (define-key global-map [left] 'backward-char) (define-key global-map [up] 'previous-line) (define-key global-map [right] 'forward-char) @@ -734,18 +756,28 @@ language you are using." (put 'scroll-left 'disabled t) (define-key global-map [C-next] 'scroll-left) (define-key global-map [M-next] 'scroll-other-window) +(define-key esc-map [next] 'scroll-other-window) (define-key global-map [M-prior] 'scroll-other-window-down) -(define-key global-map [end] 'end-of-line) +(define-key esc-map [prior] 'scroll-other-window-down) +(define-key esc-map [?\C-\S-v] 'scroll-other-window-down) +(define-key global-map [end] 'move-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 esc-map [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 esc-map [begin] 'beginning-of-buffer-other-window) ;; (define-key global-map [select] 'function-key-error) ;; (define-key global-map [print] 'function-key-error) (define-key global-map [execute] 'execute-extended-command) (define-key global-map [insert] 'overwrite-mode) (define-key global-map [C-insert] 'kill-ring-save) (define-key global-map [S-insert] 'yank) +;; `insertchar' is what term.c produces. Should we change term.c +;; to produce `insert' instead? +(define-key global-map [insertchar] 'overwrite-mode) +(define-key global-map [C-insertchar] 'kill-ring-save) +(define-key global-map [S-insertchar] 'yank) (define-key global-map [undo] 'undo) (define-key global-map [redo] 'repeat-complex-command) (define-key global-map [again] 'repeat-complex-command) ; Sun keyboard @@ -756,7 +788,6 @@ language you are using." ;; (define-key global-map [clearline] 'function-key-error) (define-key global-map [insertline] 'open-line) (define-key global-map [deleteline] 'kill-line) -;; (define-key global-map [insertchar] 'function-key-error) (define-key global-map [deletechar] 'delete-char) ;; (define-key global-map [backtab] 'function-key-error) ;; (define-key global-map [f1] 'function-key-error) @@ -903,7 +934,9 @@ language you are using." (define-key global-map "\C-c" 'mode-specific-command-prefix) (global-set-key [M-right] 'forward-word) +(define-key esc-map [right] 'forward-word) (global-set-key [M-left] 'backward-word) +(define-key esc-map [left] 'backward-word) ;; ilya@math.ohio-state.edu says these bindings are standard on PC editors. (global-set-key [C-right] 'forward-word) (global-set-key [C-left] 'backward-word) @@ -913,12 +946,18 @@ language you are using." ;; This is "move to the clipboard", or as close as we come. (global-set-key [S-delete] 'kill-region) -(global-set-key [C-M-left] 'backward-sexp) -(global-set-key [C-M-right] 'forward-sexp) -(global-set-key [C-M-up] 'backward-up-list) -(global-set-key [C-M-down] 'down-list) -(global-set-key [C-M-home] 'beginning-of-defun) -(global-set-key [C-M-end] 'end-of-defun) +(global-set-key [C-M-left] 'backward-sexp) +(define-key esc-map [C-left] 'backward-sexp) +(global-set-key [C-M-right] 'forward-sexp) +(define-key esc-map [C-right] 'forward-sexp) +(global-set-key [C-M-up] 'backward-up-list) +(define-key esc-map [C-up] 'backward-up-list) +(global-set-key [C-M-down] 'down-list) +(define-key esc-map [C-down] 'down-list) +(global-set-key [C-M-home] 'beginning-of-defun) +(define-key esc-map [C-home] 'beginning-of-defun) +(global-set-key [C-M-end] 'end-of-defun) +(define-key esc-map [C-end] 'end-of-defun) (define-key esc-map "\C-f" 'forward-sexp) (define-key esc-map "\C-b" 'backward-sexp) @@ -1018,6 +1057,8 @@ language you are using." (define-key ctl-x-map "z" 'repeat) +(define-key ctl-x-4-map "c" 'clone-indirect-buffer-other-window) + ;; Don't look for autoload cookies in this file. ;; Local Variables: ;; no-update-autoloads: t