;;; 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
;; 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:
(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
(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"
'keymap
(eval-when-compile
(let ((map (make-sparse-keymap)))
- (define-key map [mode-line mouse-3] 'mode-line-change-eol)
+ (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)
(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
(make-variable-buffer-local 'mode-line-mule-info)
-(defvar mode-line-buffer-identification (purecopy '("%12b")) "\
-Mode-line control for identifying the buffer being displayed.
-Its default value is (\"%12b\").
-Major modes that edit things other than ordinary files may change this
-\(e.g. Info, Dired,...)")
-
-(make-variable-buffer-local 'mode-line-buffer-identification)
-
(defvar mode-line-frame-identification '("-%F ")
"Mode-line control to describe the current frame.")
(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
+ '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.")
;; mouse-1: select window, mouse-2: delete others, mouse-3: delete,
;; drag-mouse-1: resize, C-mouse-2: split horizontally"
"mouse-1: select (drag to resize), mouse-2: delete others, mouse-3: delete this")
- (dashes (propertize "--" 'help-echo help-echo)))
- (setq-default mode-line-format
- (list
- (propertize "-" 'help-echo help-echo)
- 'mode-line-mule-info
- 'mode-line-modified
- 'mode-line-frame-identification
- 'mode-line-buffer-identification
- (propertize " " 'help-echo help-echo)
- 'mode-line-position
- '(vc-mode vc-mode)
- (propertize " " 'help-echo help-echo)
- 'mode-line-modes
- `(which-func-mode ("" which-func-format ,dashes))
- `(global-mode-string (,dashes global-mode-string))
- (propertize "-%-" 'help-echo help-echo)))
-
- (setq-default mode-line-modes
- (list
- (propertize "%[(" 'help-echo help-echo)
- `(:propertize ("" mode-name)
- help-echo "mouse-1: major-mode-menu mouse-2: help for current major mode"
- mouse-face mode-line-highlight
- local-map ,mode-line-major-mode-keymap)
- '("" mode-line-process)
- `(:propertize ("" minor-mode-alist)
- mouse-face mode-line-highlight
- help-echo "mouse-2: help for minor modes, mouse-3: minor mode menu"
- 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)))
-
- (setq-default mode-line-position
- `((-3 ,(propertize "%p" 'help-echo help-echo))
- (size-indication-mode
- (8 ,(propertize " of %I" 'help-echo help-echo)))
- (line-number-mode
- ((column-number-mode
- (10 ,(propertize " (%l,%c)" 'help-echo help-echo))
- (6 ,(propertize " L%l" 'help-echo help-echo))))
- ((column-number-mode
- (5 ,(propertize " C%c" 'help-echo help-echo))))))))
-
-(defvar mode-line-buffer-identification-keymap nil "\
+ (dashes (propertize "--" 'help-echo help-echo))
+ (standard-mode-line-format
+ (list
+ "%e"
+ (propertize "-" 'help-echo help-echo)
+ 'mode-line-mule-info
+ 'mode-line-modified
+ 'mode-line-frame-identification
+ 'mode-line-buffer-identification
+ (propertize " " 'help-echo help-echo)
+ 'mode-line-position
+ '(vc-mode vc-mode)
+ (propertize " " 'help-echo help-echo)
+ 'mode-line-modes
+ `(which-func-mode ("" which-func-format ,dashes))
+ `(global-mode-string (,dashes global-mode-string))
+ (propertize "-%-" 'help-echo help-echo)))
+ (standard-mode-line-modes
+ (list
+ (propertize "%[(" 'help-echo help-echo)
+ `(:propertize ("" mode-name)
+ 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)
+ 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)))
+ (standard-mode-line-position
+ `((-3 ,(propertize "%p" 'help-echo help-echo))
+ (size-indication-mode
+ (8 ,(propertize " of %I" 'help-echo help-echo)))
+ (line-number-mode
+ ((column-number-mode
+ (10 ,(propertize " (%l,%c)" 'help-echo help-echo))
+ (6 ,(propertize " L%l" 'help-echo help-echo))))
+ ((column-number-mode
+ (5 ,(propertize " C%c" 'help-echo help-echo))))))))
+
+ (setq-default mode-line-format standard-mode-line-format)
+ (put 'mode-line-format 'standard-value
+ (list `(quote ,standard-mode-line-format)))
+
+ (setq-default mode-line-modes standard-mode-line-modes)
+ (put 'mode-line-modes 'standard-value
+ (list `(quote ,standard-mode-line-modes)))
+
+ (setq-default mode-line-position standard-mode-line-position)
+ (put 'mode-line-position 'standard-value
+ (list `(quote ,standard-mode-line-position))))
+
+(defvar mode-line-buffer-identification-keymap
+ ;; Add menu of buffer operations to the buffer identification part
+ ;; of the mode line.or header 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-previous-buffer)
+ (define-key map [header-line down-mouse-1] 'ignore)
+ (define-key map [header-line mouse-1] 'mode-line-previous-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-next-buffer)
+ map) "\
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 propertized-buffer-identification (fmt)
+ "Return a list suitable for `mode-line-buffer-identification'.
+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 '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)))
+
+(defvar mode-line-buffer-identification (propertized-buffer-identification "%12b") "\
+Mode-line control for identifying the buffer being displayed.
+Its default value is (\"%12b\") with some text properties added.
+Major modes that edit things other than ordinary files may change this
+\(e.g. Info, Dired,...)")
+
+(make-variable-buffer-local 'mode-line-buffer-identification)
(defun unbury-buffer () "\
Switch to the last buffer in the buffer list."
(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.")
(let ((indicator (car (nth 4 (car (cdr event))))))
(describe-minor-mode-from-indicator indicator)))
-;; Add menu of buffer operations to the buffer identification part
-;; of the mode line.or header 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 [header-line down-mouse-1] 'ignore)
- (define-key map [header-line mouse-1] 'mode-line-unbury-buffer)
- (define-key map [header-line down-mouse-3] 'ignore)
- (define-key map [mode-line mouse-3] 'mode-line-bury-buffer)
- (define-key map [header-line down-mouse-3] 'ignore)
- (define-key map [header-line mouse-3] 'mode-line-bury-buffer)
- (setq mode-line-buffer-identification-keymap map))
-
-(defun propertized-buffer-identification (fmt)
- "Return a list suitable for `mode-line-buffer-identification'.
-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
- '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
- (propertized-buffer-identification "%12b"))
-
(defvar minor-mode-alist nil "\
Alist saying how to show minor modes in the mode line.
Each element looks like (VARIABLE STRING);
(let ((l (generic-character-list))
(table (nth 1 global-map)))
(while l
- (set-char-table-default table (car l) 'self-insert-command)
+ (aset table (car l) 'self-insert-command)
(setq l (cdr l))))
(setq help-event-list '(help f1))
(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] 'prev-buffer)
-(define-key global-map [?\C-x C-left] 'prev-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 [prior] 'previous-history-element)
(define-key map [up] 'previous-history-element)
(define-key map "\es" 'next-matching-history-element)
- (define-key map "\er" 'previous-matching-history-element))
+ (define-key map "\er" 'previous-matching-history-element)
+ ;; Override the global binding (which calls indent-relative via
+ ;; indent-for-tab-command). The alignment that indent-relative tries to
+ ;; do doesn't make much sense here since the prompt messes it up.
+ (define-key map "\t" 'self-insert-command))
(define-key global-map "\C-u" 'universal-argument)
(let ((i ?0))
;; 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 [M-prior] 'scroll-other-window-down)
(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] 'end-of-line)
+(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)