From b016851cb127f91a7ffa5d8295e5f3d4fdd3222a Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 10 Feb 2011 11:56:00 -0500 Subject: [PATCH] Move keymap initialization into declaration. * lisp/textmodes/enriched.el (enriched-mode-map): * lisp/textmodes/bib-mode.el (bib-mode-map): * lisp/term/lk201.el (lk201-function-map): * lisp/tar-mode.el (tar-mode-map): * lisp/replace.el (occur-mode-map): * lisp/progmodes/idlwave.el (idlwave-rinfo-mouse-map, idlwave-rinfo-map): * lisp/progmodes/idlw-help.el (idlwave-help-mode-map): * lisp/progmodes/gdb-mi.el (gdb-memory-format-menu, gdb-memory-unit-menu): * lisp/play/solitaire.el (solitaire-mode-map): * lisp/play/snake.el (snake-mode-map, snake-null-map): * lisp/play/pong.el (pong-mode-map): * lisp/play/handwrite.el (menu-bar-handwrite-map): * lisp/play/gametree.el (gametree-mode-map): * lisp/net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map (rcirc-multiline-minor-mode-map, rcirc-track-minor-mode-map): * lisp/net/newst-plainview.el (newsticker-menu, newsticker-mode-map) (newsticker--url-keymap): * lisp/net/net-utils.el (nslookup-mode-map, ftp-mode-map): * lisp/menu-bar.el (menu-bar-file-menu, menu-bar-i-search-menu) (menu-bar-search-menu, menu-bar-replace-menu, menu-bar-goto-menu) (menu-bar-edit-menu, menu-bar-custom-menu) (menu-bar-showhide-fringe-ind-menu, menu-bar-showhide-fringe-menu) (menu-bar-showhide-scroll-bar-menu, menu-bar-showhide-menu) (menu-bar-line-wrapping-menu, menu-bar-options-menu) (menu-bar-games-menu, menu-bar-encryption-decryption-menu) (menu-bar-tools-menu, menu-bar-describe-menu) (menu-bar-search-documentation-menu, menu-bar-manuals-menu) (menu-bar-help-menu): * lisp/mail/rmailsum.el (rmail-summary-mode-map): * lisp/kmacro.el (kmacro-step-edit-map): * lisp/ibuffer.el (ibuffer-mode-groups-popup, ibuffer-mode-map) (ibuffer-mode-operate-map): * lisp/hi-lock.el (hi-lock-menu, hi-lock-map): * lisp/emulation/vip.el (vip-mode-map): * lisp/emacs-lisp/re-builder.el (reb-lisp-mode-map): * lisp/bookmark.el (bookmark-bmenu-mode-map): * lisp/help-mode.el (help-mode-map): * lisp/erc/erc-list.el (erc-list-menu-mode-map): * lisp/org/org-remember.el (org-remember-mode-map): * lisp/org/org-src.el (org-src-mode-map): Move initialization into declaration. --- lisp/ChangeLog | 60 +- lisp/bookmark.el | 70 +- lisp/emacs-lisp/re-builder.el | 12 +- lisp/emulation/vip.el | 253 ++-- lisp/erc/ChangeLog | 5 + lisp/erc/erc-list.el | 17 +- lisp/help-mode.el | 21 +- lisp/hi-lock.el | 72 +- lisp/ibuffer.el | 292 ++-- lisp/kmacro.el | 47 +- lisp/mail/rmail.el | 2 +- lisp/mail/rmailsum.el | 392 +++--- lisp/menu-bar.el | 2493 +++++++++++++++++---------------- lisp/net/net-utils.el | 16 +- lisp/net/newst-plainview.el | 215 +-- lisp/net/rcirc.el | 89 +- lisp/org/ChangeLog | 5 + lisp/org/org-remember.el | 8 +- lisp/org/org-src.el | 6 +- lisp/play/gametree.el | 26 +- lisp/play/handwrite.el | 105 +- lisp/play/pong.el | 24 +- lisp/play/snake.el | 23 +- lisp/play/solitaire.el | 78 +- lisp/progmodes/gdb-mi.el | 65 +- lisp/progmodes/idlw-help.el | 31 +- lisp/progmodes/idlwave.el | 34 +- lisp/replace.el | 102 +- lisp/tar-mode.el | 148 +- lisp/term/lk201.el | 130 +- lisp/textmodes/bib-mode.el | 13 +- lisp/textmodes/enriched.el | 48 +- 32 files changed, 2511 insertions(+), 2391 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e9e7f6203b1..c942f9c52ca 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,44 @@ +2011-02-10 Stefan Monnier + + Move keymap initialization into declaration. + * textmodes/enriched.el (enriched-mode-map): + * textmodes/bib-mode.el (bib-mode-map): + * term/lk201.el (lk201-function-map): + * tar-mode.el (tar-mode-map): + * replace.el (occur-mode-map): + * progmodes/idlwave.el (idlwave-rinfo-mouse-map, idlwave-rinfo-map): + * progmodes/idlw-help.el (idlwave-help-mode-map): + * progmodes/gdb-mi.el (gdb-memory-format-menu, gdb-memory-unit-menu): + * play/solitaire.el (solitaire-mode-map): + * play/snake.el (snake-mode-map, snake-null-map): + * play/pong.el (pong-mode-map): + * play/handwrite.el (menu-bar-handwrite-map): + * play/gametree.el (gametree-mode-map): + * net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map + (rcirc-multiline-minor-mode-map, rcirc-track-minor-mode-map): + * net/newst-plainview.el (newsticker-menu, newsticker-mode-map) + (newsticker--url-keymap): + * net/net-utils.el (nslookup-mode-map, ftp-mode-map): + * menu-bar.el (menu-bar-file-menu, menu-bar-i-search-menu) + (menu-bar-search-menu, menu-bar-replace-menu, menu-bar-goto-menu) + (menu-bar-edit-menu, menu-bar-custom-menu) + (menu-bar-showhide-fringe-ind-menu, menu-bar-showhide-fringe-menu) + (menu-bar-showhide-scroll-bar-menu, menu-bar-showhide-menu) + (menu-bar-line-wrapping-menu, menu-bar-options-menu) + (menu-bar-games-menu, menu-bar-encryption-decryption-menu) + (menu-bar-tools-menu, menu-bar-describe-menu) + (menu-bar-search-documentation-menu, menu-bar-manuals-menu) + (menu-bar-help-menu): + * mail/rmailsum.el (rmail-summary-mode-map): + * kmacro.el (kmacro-step-edit-map): + * ibuffer.el (ibuffer-mode-groups-popup, ibuffer-mode-map) + (ibuffer-mode-operate-map): + * hi-lock.el (hi-lock-menu, hi-lock-map): + * emulation/vip.el (vip-mode-map): + * emacs-lisp/re-builder.el (reb-lisp-mode-map): + * bookmark.el (bookmark-bmenu-mode-map): + * help-mode.el (help-mode-map): Move initialization into declaration. + 2011-02-10 Deniz Dogan * net/rcirc.el: Add PRIVMSG and CTCP functions. @@ -70,8 +111,7 @@ 2011-02-07 Michael Albinus - * net/dbus.el (dbus-list-activatable-names): Add optional argument - BUS. + * net/dbus.el (dbus-list-activatable-names): Add optional argument BUS. 2011-02-07 Deniz Dogan @@ -79,21 +119,21 @@ 2011-02-06 Jay Belanger - * calc/calc.el (calc-logunits-field-reference) Renamed from + * calc/calc.el (calc-logunits-field-reference): Rename from `calc-default-field-reference-level'. - (calc-logunits-power-reference): Renamed from + (calc-logunits-power-reference): Rename from `calc-default-power-reference-level' - * calc/calc-units.el (math-logunits-quant): Renamed from + * calc/calc-units.el (math-logunits-quant): Rename from `math-logunits-level' - (math-logunits-plus): Renamed from math-logcombine. + (math-logunits-plus): Rename from math-logcombine. (calcFunc-luplus, calcFunc-luminus calc-luplus, calc-luminus): Remove. (calcFunc-lufieldadd, calcFunc-lupoweradd, calcFunc-lufieldsub) (calcFunc-lufieldsub,calc-logunits-add calc-logunits-sub): New functions. - (calcFunc-fieldquant): Renamed from `calcFunc-fieldlevel'. - (calcFunc-powerquant): Renamed from `calcFunc-powerlevel'. - (calc-logunits-quantity): Renamed from `calc-level'. + (calcFunc-fieldquant): Rename from `calcFunc-fieldlevel'. + (calcFunc-powerquant): Rename from `calcFunc-powerlevel'. + (calc-logunits-quantity): Rename from `calc-level'. (calcFunc-dbfieldlevel, calcFunc-dbpowerlevel, calcFunc-npfieldlevel) (calcFunc-nppowerlevel,calc-logunits-dblevel, calc-logunits-nplevel) (math-logunits-mul, calcFunc-lufieldmul, calcFunc-lupowermul) @@ -101,7 +141,7 @@ (calcFunc-lupowerdiv,calc-logunits-divide,math-logunits-level): New functions. - * calc/calc-help.el (calc-u-prefix-help): Removed "L" reference. + * calc/calc-help.el (calc-u-prefix-help): Remove "L" reference. (calc-ul-prefix-help): Remove. (calc-l-prefix-help): New function. (calc-full-help): Add reference to `calc-l-prefix-help'. diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 503264f4b32..cd946e46be9 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -1473,6 +1473,43 @@ method buffers use to resolve name collisions." (defvar bookmark-bmenu-hidden-bookmarks ()) +(defvar bookmark-bmenu-mode-map + (let ((map (make-keymap))) + (set-keymap-parent map special-mode-map) + (define-key map "v" 'bookmark-bmenu-select) + (define-key map "w" 'bookmark-bmenu-locate) + (define-key map "2" 'bookmark-bmenu-2-window) + (define-key map "1" 'bookmark-bmenu-1-window) + (define-key map "j" 'bookmark-bmenu-this-window) + (define-key map "\C-c\C-c" 'bookmark-bmenu-this-window) + (define-key map "f" 'bookmark-bmenu-this-window) + (define-key map "\C-m" 'bookmark-bmenu-this-window) + (define-key map "o" 'bookmark-bmenu-other-window) + (define-key map "\C-o" 'bookmark-bmenu-switch-other-window) + (define-key map "s" 'bookmark-bmenu-save) + (define-key map "k" 'bookmark-bmenu-delete) + (define-key map "\C-d" 'bookmark-bmenu-delete-backwards) + (define-key map "x" 'bookmark-bmenu-execute-deletions) + (define-key map "d" 'bookmark-bmenu-delete) + (define-key map " " 'next-line) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) + (define-key map "\177" 'bookmark-bmenu-backup-unmark) + (define-key map "u" 'bookmark-bmenu-unmark) + (define-key map "m" 'bookmark-bmenu-mark) + (define-key map "l" 'bookmark-bmenu-load) + (define-key map "r" 'bookmark-bmenu-rename) + (define-key map "R" 'bookmark-bmenu-relocate) + (define-key map "t" 'bookmark-bmenu-toggle-filenames) + (define-key map "a" 'bookmark-bmenu-show-annotation) + (define-key map "A" 'bookmark-bmenu-show-all-annotations) + (define-key map "e" 'bookmark-bmenu-edit-annotation) + ;; The original binding of M-g hides the M-g prefix map. + ;; If someone has a better idea than M-g s, I'm open to suggestions. + (define-key map [?\M-g ?s] 'bookmark-bmenu-search) + (define-key map [mouse-2] 'bookmark-bmenu-other-window-with-mouse) + map)) + ;; Bookmark Buffer Menu mode is suitable only for specially formatted ;; data. (put 'bookmark-bmenu-mode 'mode-class 'special) @@ -1583,39 +1620,6 @@ Bookmark names preceded by a \"*\" have annotations. (setq truncate-lines t) (setq buffer-read-only t)) -(define-key bookmark-bmenu-mode-map "q" 'quit-window) -(define-key bookmark-bmenu-mode-map "v" 'bookmark-bmenu-select) -(define-key bookmark-bmenu-mode-map "w" 'bookmark-bmenu-locate) -(define-key bookmark-bmenu-mode-map "2" 'bookmark-bmenu-2-window) -(define-key bookmark-bmenu-mode-map "1" 'bookmark-bmenu-1-window) -(define-key bookmark-bmenu-mode-map "j" 'bookmark-bmenu-this-window) -(define-key bookmark-bmenu-mode-map "\C-c\C-c" 'bookmark-bmenu-this-window) -(define-key bookmark-bmenu-mode-map "f" 'bookmark-bmenu-this-window) -(define-key bookmark-bmenu-mode-map "\C-m" 'bookmark-bmenu-this-window) -(define-key bookmark-bmenu-mode-map "o" 'bookmark-bmenu-other-window) -(define-key bookmark-bmenu-mode-map "\C-o" 'bookmark-bmenu-switch-other-window) -(define-key bookmark-bmenu-mode-map "s" 'bookmark-bmenu-save) -(define-key bookmark-bmenu-mode-map "k" 'bookmark-bmenu-delete) -(define-key bookmark-bmenu-mode-map "\C-d" 'bookmark-bmenu-delete-backwards) -(define-key bookmark-bmenu-mode-map "x" 'bookmark-bmenu-execute-deletions) -(define-key bookmark-bmenu-mode-map "d" 'bookmark-bmenu-delete) -(define-key bookmark-bmenu-mode-map " " 'next-line) -(define-key bookmark-bmenu-mode-map "n" 'next-line) -(define-key bookmark-bmenu-mode-map "p" 'previous-line) -(define-key bookmark-bmenu-mode-map "\177" 'bookmark-bmenu-backup-unmark) -(define-key bookmark-bmenu-mode-map "?" 'describe-mode) -(define-key bookmark-bmenu-mode-map "u" 'bookmark-bmenu-unmark) -(define-key bookmark-bmenu-mode-map "m" 'bookmark-bmenu-mark) -(define-key bookmark-bmenu-mode-map "l" 'bookmark-bmenu-load) -(define-key bookmark-bmenu-mode-map "r" 'bookmark-bmenu-rename) -(define-key bookmark-bmenu-mode-map "R" 'bookmark-bmenu-relocate) -(define-key bookmark-bmenu-mode-map "t" 'bookmark-bmenu-toggle-filenames) -(define-key bookmark-bmenu-mode-map "a" 'bookmark-bmenu-show-annotation) -(define-key bookmark-bmenu-mode-map "A" 'bookmark-bmenu-show-all-annotations) -(define-key bookmark-bmenu-mode-map "e" 'bookmark-bmenu-edit-annotation) -;; The original binding of M-g hides the M-g prefix map. -;; If someone has a better idea than M-g s, I'm open to suggestions. -(define-key bookmark-bmenu-mode-map [?\M-g ?s] 'bookmark-bmenu-search)(define-key bookmark-bmenu-mode-map [mouse-2] 'bookmark-bmenu-other-window-with-mouse) (defun bookmark-bmenu-toggle-filenames (&optional show) "Toggle whether filenames are shown in the bookmark list. diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index e3c030b3c60..59a30d62b02 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -275,6 +275,13 @@ Except for Lisp syntax this is the same as `reb-regexp'.") (set (make-local-variable 'blink-matching-paren) nil) (reb-mode-common)) +(defvar reb-lisp-mode-map + (let ((map (make-sparse-keymap))) + ;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from + ;; `emacs-lisp-mode' + (define-key map "\C-c" (lookup-key reb-mode-map "\C-c")) + map)) + (define-derived-mode reb-lisp-mode emacs-lisp-mode "RE Builder Lisp" "Major mode for interactively building symbolic Regular Expressions." @@ -283,11 +290,6 @@ Except for Lisp syntax this is the same as `reb-regexp'.") (require 'rx))) ; require rx anyway (reb-mode-common)) -;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from -;; `emacs-lisp-mode' -(define-key reb-lisp-mode-map "\C-c" - (lookup-key reb-mode-map "\C-c")) - (defvar reb-subexp-mode-map (let ((m (make-keymap))) (suppress-keymap m) diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el index 328fbac9033..6f4f0ce80ec 100644 --- a/lisp/emulation/vip.el +++ b/lisp/emulation/vip.el @@ -164,132 +164,133 @@ If nil then it is bound to `delete-backward-char'." ;; key bindings -(defvar vip-mode-map (make-keymap)) - -(define-key vip-mode-map "\C-a" 'beginning-of-line) -(define-key vip-mode-map "\C-b" 'vip-scroll-back) -(define-key vip-mode-map "\C-c" 'vip-ctl-c) -(define-key vip-mode-map "\C-d" 'vip-scroll-up) -(define-key vip-mode-map "\C-e" 'vip-scroll-up-one) -(define-key vip-mode-map "\C-f" 'vip-scroll) -(define-key vip-mode-map "\C-g" 'vip-keyboard-quit) -(define-key vip-mode-map "\C-h" 'help-command) -(define-key vip-mode-map "\C-m" 'vip-scroll-back) -(define-key vip-mode-map "\C-n" 'vip-other-window) -(define-key vip-mode-map "\C-o" 'vip-open-line-at-point) -(define-key vip-mode-map "\C-u" 'vip-scroll-down) -(define-key vip-mode-map "\C-x" 'vip-ctl-x) -(define-key vip-mode-map "\C-y" 'vip-scroll-down-one) -(define-key vip-mode-map "\C-z" 'vip-change-mode-to-emacs) -(define-key vip-mode-map "\e" 'vip-ESC) - -(define-key vip-mode-map " " 'vip-scroll) -(define-key vip-mode-map "!" 'vip-command-argument) -(define-key vip-mode-map "\"" 'vip-command-argument) -(define-key vip-mode-map "#" 'vip-command-argument) -(define-key vip-mode-map "$" 'vip-goto-eol) -(define-key vip-mode-map "%" 'vip-paren-match) -(define-key vip-mode-map "&" 'vip-nil) -(define-key vip-mode-map "'" 'vip-goto-mark-and-skip-white) -(define-key vip-mode-map "(" 'vip-backward-sentence) -(define-key vip-mode-map ")" 'vip-forward-sentence) -(define-key vip-mode-map "*" 'call-last-kbd-macro) -(define-key vip-mode-map "+" 'vip-next-line-at-bol) -(define-key vip-mode-map "," 'vip-repeat-find-opposite) -(define-key vip-mode-map "-" 'vip-previous-line-at-bol) -(define-key vip-mode-map "." 'vip-repeat) -(define-key vip-mode-map "/" 'vip-search-forward) - -(define-key vip-mode-map "0" 'vip-beginning-of-line) -(define-key vip-mode-map "1" 'vip-digit-argument) -(define-key vip-mode-map "2" 'vip-digit-argument) -(define-key vip-mode-map "3" 'vip-digit-argument) -(define-key vip-mode-map "4" 'vip-digit-argument) -(define-key vip-mode-map "5" 'vip-digit-argument) -(define-key vip-mode-map "6" 'vip-digit-argument) -(define-key vip-mode-map "7" 'vip-digit-argument) -(define-key vip-mode-map "8" 'vip-digit-argument) -(define-key vip-mode-map "9" 'vip-digit-argument) - -(define-key vip-mode-map ":" 'vip-ex) -(define-key vip-mode-map ";" 'vip-repeat-find) -(define-key vip-mode-map "<" 'vip-command-argument) -(define-key vip-mode-map "=" 'vip-command-argument) -(define-key vip-mode-map ">" 'vip-command-argument) -(define-key vip-mode-map "?" 'vip-search-backward) -(define-key vip-mode-map "@" 'vip-nil) - -(define-key vip-mode-map "A" 'vip-Append) -(define-key vip-mode-map "B" 'vip-backward-Word) -(define-key vip-mode-map "C" 'vip-ctl-c-equivalent) -(define-key vip-mode-map "D" 'vip-kill-line) -(define-key vip-mode-map "E" 'vip-end-of-Word) -(define-key vip-mode-map "F" 'vip-find-char-backward) -(define-key vip-mode-map "G" 'vip-goto-line) -(define-key vip-mode-map "H" 'vip-window-top) -(define-key vip-mode-map "I" 'vip-Insert) -(define-key vip-mode-map "J" 'vip-join-lines) -(define-key vip-mode-map "K" 'vip-kill-buffer) -(define-key vip-mode-map "L" 'vip-window-bottom) -(define-key vip-mode-map "M" 'vip-window-middle) -(define-key vip-mode-map "N" 'vip-search-Next) -(define-key vip-mode-map "O" 'vip-Open-line) -(define-key vip-mode-map "P" 'vip-Put-back) -(define-key vip-mode-map "Q" 'vip-query-replace) -(define-key vip-mode-map "R" 'vip-replace-string) -(define-key vip-mode-map "S" 'vip-switch-to-buffer-other-window) -(define-key vip-mode-map "T" 'vip-goto-char-backward) -(define-key vip-mode-map "U" 'vip-nil) -(define-key vip-mode-map "V" 'vip-find-file-other-window) -(define-key vip-mode-map "W" 'vip-forward-Word) -(define-key vip-mode-map "X" 'vip-ctl-x-equivalent) -(define-key vip-mode-map "Y" 'vip-yank-line) -(define-key vip-mode-map "ZZ" 'save-buffers-kill-emacs) - -(define-key vip-mode-map "[" 'vip-nil) -(define-key vip-mode-map "\\" 'vip-escape-to-emacs) -(define-key vip-mode-map "]" 'vip-nil) -(define-key vip-mode-map "^" 'vip-bol-and-skip-white) -(define-key vip-mode-map "_" 'vip-nil) -(define-key vip-mode-map "`" 'vip-goto-mark) - -(define-key vip-mode-map "a" 'vip-append) -(define-key vip-mode-map "b" 'vip-backward-word) -(define-key vip-mode-map "c" 'vip-command-argument) -(define-key vip-mode-map "d" 'vip-command-argument) -(define-key vip-mode-map "e" 'vip-end-of-word) -(define-key vip-mode-map "f" 'vip-find-char-forward) -(define-key vip-mode-map "g" 'vip-info-on-file) -(define-key vip-mode-map "h" 'vip-backward-char) -(define-key vip-mode-map "i" 'vip-insert) -(define-key vip-mode-map "j" 'vip-next-line) -(define-key vip-mode-map "k" 'vip-previous-line) -(define-key vip-mode-map "l" 'vip-forward-char) -(define-key vip-mode-map "m" 'vip-mark-point) -(define-key vip-mode-map "n" 'vip-search-next) -(define-key vip-mode-map "o" 'vip-open-line) -(define-key vip-mode-map "p" 'vip-put-back) -(define-key vip-mode-map "q" 'vip-nil) -(define-key vip-mode-map "r" 'vip-replace-char) -(define-key vip-mode-map "s" 'vip-switch-to-buffer) -(define-key vip-mode-map "t" 'vip-goto-char-forward) -(define-key vip-mode-map "u" 'vip-undo) -(define-key vip-mode-map "v" 'vip-find-file) -(define-key vip-mode-map "w" 'vip-forward-word) -(define-key vip-mode-map "x" 'vip-delete-char) -(define-key vip-mode-map "y" 'vip-command-argument) -(define-key vip-mode-map "zH" 'vip-line-to-top) -(define-key vip-mode-map "zM" 'vip-line-to-middle) -(define-key vip-mode-map "zL" 'vip-line-to-bottom) -(define-key vip-mode-map "z\C-m" 'vip-line-to-top) -(define-key vip-mode-map "z." 'vip-line-to-middle) -(define-key vip-mode-map "z-" 'vip-line-to-bottom) - -(define-key vip-mode-map "{" 'vip-backward-paragraph) -(define-key vip-mode-map "|" 'vip-goto-col) -(define-key vip-mode-map "}" 'vip-forward-paragraph) -(define-key vip-mode-map "~" 'vip-nil) -(define-key vip-mode-map "\177" 'vip-delete-backward-char) +(defvar vip-mode-map + (let ((map (make-keymap))) + (define-key map "\C-a" 'beginning-of-line) + (define-key map "\C-b" 'vip-scroll-back) + (define-key map "\C-c" 'vip-ctl-c) + (define-key map "\C-d" 'vip-scroll-up) + (define-key map "\C-e" 'vip-scroll-up-one) + (define-key map "\C-f" 'vip-scroll) + (define-key map "\C-g" 'vip-keyboard-quit) + (define-key map "\C-h" 'help-command) + (define-key map "\C-m" 'vip-scroll-back) + (define-key map "\C-n" 'vip-other-window) + (define-key map "\C-o" 'vip-open-line-at-point) + (define-key map "\C-u" 'vip-scroll-down) + (define-key map "\C-x" 'vip-ctl-x) + (define-key map "\C-y" 'vip-scroll-down-one) + (define-key map "\C-z" 'vip-change-mode-to-emacs) + (define-key map "\e" 'vip-ESC) + + (define-key map " " 'vip-scroll) + (define-key map "!" 'vip-command-argument) + (define-key map "\"" 'vip-command-argument) + (define-key map "#" 'vip-command-argument) + (define-key map "$" 'vip-goto-eol) + (define-key map "%" 'vip-paren-match) + (define-key map "&" 'vip-nil) + (define-key map "'" 'vip-goto-mark-and-skip-white) + (define-key map "(" 'vip-backward-sentence) + (define-key map ")" 'vip-forward-sentence) + (define-key map "*" 'call-last-kbd-macro) + (define-key map "+" 'vip-next-line-at-bol) + (define-key map "," 'vip-repeat-find-opposite) + (define-key map "-" 'vip-previous-line-at-bol) + (define-key map "." 'vip-repeat) + (define-key map "/" 'vip-search-forward) + + (define-key map "0" 'vip-beginning-of-line) + (define-key map "1" 'vip-digit-argument) + (define-key map "2" 'vip-digit-argument) + (define-key map "3" 'vip-digit-argument) + (define-key map "4" 'vip-digit-argument) + (define-key map "5" 'vip-digit-argument) + (define-key map "6" 'vip-digit-argument) + (define-key map "7" 'vip-digit-argument) + (define-key map "8" 'vip-digit-argument) + (define-key map "9" 'vip-digit-argument) + + (define-key map ":" 'vip-ex) + (define-key map ";" 'vip-repeat-find) + (define-key map "<" 'vip-command-argument) + (define-key map "=" 'vip-command-argument) + (define-key map ">" 'vip-command-argument) + (define-key map "?" 'vip-search-backward) + (define-key map "@" 'vip-nil) + + (define-key map "A" 'vip-Append) + (define-key map "B" 'vip-backward-Word) + (define-key map "C" 'vip-ctl-c-equivalent) + (define-key map "D" 'vip-kill-line) + (define-key map "E" 'vip-end-of-Word) + (define-key map "F" 'vip-find-char-backward) + (define-key map "G" 'vip-goto-line) + (define-key map "H" 'vip-window-top) + (define-key map "I" 'vip-Insert) + (define-key map "J" 'vip-join-lines) + (define-key map "K" 'vip-kill-buffer) + (define-key map "L" 'vip-window-bottom) + (define-key map "M" 'vip-window-middle) + (define-key map "N" 'vip-search-Next) + (define-key map "O" 'vip-Open-line) + (define-key map "P" 'vip-Put-back) + (define-key map "Q" 'vip-query-replace) + (define-key map "R" 'vip-replace-string) + (define-key map "S" 'vip-switch-to-buffer-other-window) + (define-key map "T" 'vip-goto-char-backward) + (define-key map "U" 'vip-nil) + (define-key map "V" 'vip-find-file-other-window) + (define-key map "W" 'vip-forward-Word) + (define-key map "X" 'vip-ctl-x-equivalent) + (define-key map "Y" 'vip-yank-line) + (define-key map "ZZ" 'save-buffers-kill-emacs) + + (define-key map "[" 'vip-nil) + (define-key map "\\" 'vip-escape-to-emacs) + (define-key map "]" 'vip-nil) + (define-key map "^" 'vip-bol-and-skip-white) + (define-key map "_" 'vip-nil) + (define-key map "`" 'vip-goto-mark) + + (define-key map "a" 'vip-append) + (define-key map "b" 'vip-backward-word) + (define-key map "c" 'vip-command-argument) + (define-key map "d" 'vip-command-argument) + (define-key map "e" 'vip-end-of-word) + (define-key map "f" 'vip-find-char-forward) + (define-key map "g" 'vip-info-on-file) + (define-key map "h" 'vip-backward-char) + (define-key map "i" 'vip-insert) + (define-key map "j" 'vip-next-line) + (define-key map "k" 'vip-previous-line) + (define-key map "l" 'vip-forward-char) + (define-key map "m" 'vip-mark-point) + (define-key map "n" 'vip-search-next) + (define-key map "o" 'vip-open-line) + (define-key map "p" 'vip-put-back) + (define-key map "q" 'vip-nil) + (define-key map "r" 'vip-replace-char) + (define-key map "s" 'vip-switch-to-buffer) + (define-key map "t" 'vip-goto-char-forward) + (define-key map "u" 'vip-undo) + (define-key map "v" 'vip-find-file) + (define-key map "w" 'vip-forward-word) + (define-key map "x" 'vip-delete-char) + (define-key map "y" 'vip-command-argument) + (define-key map "zH" 'vip-line-to-top) + (define-key map "zM" 'vip-line-to-middle) + (define-key map "zL" 'vip-line-to-bottom) + (define-key map "z\C-m" 'vip-line-to-top) + (define-key map "z." 'vip-line-to-middle) + (define-key map "z-" 'vip-line-to-bottom) + + (define-key map "{" 'vip-backward-paragraph) + (define-key map "|" 'vip-goto-col) + (define-key map "}" 'vip-forward-paragraph) + (define-key map "~" 'vip-nil) + (define-key map "\177" 'vip-delete-backward-char) + map)) (defun vip-version () (interactive) diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index b7cf79cc3cb..2996fee9bcb 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,3 +1,8 @@ +2011-02-10 Stefan Monnier + + * erc-list.el (erc-list-menu-mode-map): Move initialization + into declaration. + 2011-02-07 Julien Danjou * erc-track.el (erc-window-configuration-change): New function. diff --git a/lisp/erc/erc-list.el b/lisp/erc/erc-list.el index ae579dba3bd..b8eb5a4aa19 100644 --- a/lisp/erc/erc-list.el +++ b/lisp/erc/erc-list.el @@ -117,6 +117,17 @@ (sort-fields col (point-min) (point-max)) (sort-numeric-fields col (point-min) (point-max)))))) +(defvar erc-list-menu-mode-map + (let ((map (make-keymap))) + (set-keymap-parent map special-mode-map) + (define-key map "k" 'erc-list-kill) + (define-key map "j" 'erc-list-join) + (define-key map "g" 'erc-list-revert) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) + map) + "Local keymap for `erc-list-mode' buffers.") + (defvar erc-list-menu-sort-button-map (let ((map (make-sparse-keymap))) (define-key map [header-line mouse-1] 'erc-list-menu-sort-by-column) @@ -146,12 +157,6 @@ (put 'erc-list-menu-mode 'mode-class 'special) -(define-key erc-list-menu-mode-map "k" 'erc-list-kill) -(define-key erc-list-menu-mode-map "j" 'erc-list-join) -(define-key erc-list-menu-mode-map "g" 'erc-list-revert) -(define-key erc-list-menu-mode-map "n" 'next-line) -(define-key erc-list-menu-mode-map "p" 'previous-line) - ;; Handle a "322" response. This response tells us about a single ;; channel. (defun erc-list-handle-322 (proc parsed) diff --git a/lisp/help-mode.el b/lisp/help-mode.el index 826145d7af0..724b0186679 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -33,18 +33,19 @@ (require 'view) (eval-when-compile (require 'easymenu)) -(defvar help-mode-map (make-sparse-keymap) +(defvar help-mode-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map button-buffer-map) + + (define-key map [mouse-2] 'help-follow-mouse) + (define-key map "\C-c\C-b" 'help-go-back) + (define-key map "\C-c\C-f" 'help-go-forward) + (define-key map "\C-c\C-c" 'help-follow-symbol) + ;; Documentation only, since we use minor-mode-overriding-map-alist. + (define-key map "\r" 'help-follow) + map) "Keymap for help mode.") -(set-keymap-parent help-mode-map button-buffer-map) - -(define-key help-mode-map [mouse-2] 'help-follow-mouse) -(define-key help-mode-map "\C-c\C-b" 'help-go-back) -(define-key help-mode-map "\C-c\C-f" 'help-go-forward) -(define-key help-mode-map "\C-c\C-c" 'help-follow-symbol) -;; Documentation only, since we use minor-mode-overriding-map-alist. -(define-key help-mode-map "\r" 'help-follow) - (easy-menu-define help-mode-menu help-mode-map "Menu for Help Mode." '("Help-Mode" diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el index d97e6cf4b08..a0b5844582b 100644 --- a/lisp/hi-lock.el +++ b/lisp/hi-lock.el @@ -238,45 +238,47 @@ a library is being loaded.") (make-variable-buffer-local 'hi-lock-file-patterns) (put 'hi-lock-file-patterns 'permanent-local t) -(defvar hi-lock-menu (make-sparse-keymap "Hi Lock") +(defvar hi-lock-menu + (let ((map (make-sparse-keymap "Hi Lock"))) + (define-key-after map [highlight-regexp] + '(menu-item "Highlight Regexp..." highlight-regexp + :help "Highlight text matching PATTERN (a regexp).")) + + (define-key-after map [highlight-phrase] + '(menu-item "Highlight Phrase..." highlight-phrase + :help "Highlight text matching PATTERN (a regexp processed to match phrases).")) + + (define-key-after map [highlight-lines-matching-regexp] + '(menu-item "Highlight Lines..." highlight-lines-matching-regexp + :help "Highlight lines containing match of PATTERN (a regexp).")) + + (define-key-after map [unhighlight-regexp] + '(menu-item "Remove Highlighting..." unhighlight-regexp + :help "Remove previously entered highlighting pattern." + :enable hi-lock-interactive-patterns)) + + (define-key-after map [hi-lock-write-interactive-patterns] + '(menu-item "Patterns to Buffer" hi-lock-write-interactive-patterns + :help "Insert interactively added REGEXPs into buffer at point." + :enable hi-lock-interactive-patterns)) + + (define-key-after map [hi-lock-find-patterns] + '(menu-item "Patterns from Buffer" hi-lock-find-patterns + :help "Use patterns (if any) near top of buffer.")) + map) "Menu for hi-lock mode.") -(define-key-after hi-lock-menu [highlight-regexp] - '(menu-item "Highlight Regexp..." highlight-regexp - :help "Highlight text matching PATTERN (a regexp).")) - -(define-key-after hi-lock-menu [highlight-phrase] - '(menu-item "Highlight Phrase..." highlight-phrase - :help "Highlight text matching PATTERN (a regexp processed to match phrases).")) - -(define-key-after hi-lock-menu [highlight-lines-matching-regexp] - '(menu-item "Highlight Lines..." highlight-lines-matching-regexp - :help "Highlight lines containing match of PATTERN (a regexp).")) - -(define-key-after hi-lock-menu [unhighlight-regexp] - '(menu-item "Remove Highlighting..." unhighlight-regexp - :help "Remove previously entered highlighting pattern." - :enable hi-lock-interactive-patterns)) - -(define-key-after hi-lock-menu [hi-lock-write-interactive-patterns] - '(menu-item "Patterns to Buffer" hi-lock-write-interactive-patterns - :help "Insert interactively added REGEXPs into buffer at point." - :enable hi-lock-interactive-patterns)) - -(define-key-after hi-lock-menu [hi-lock-find-patterns] - '(menu-item "Patterns from Buffer" hi-lock-find-patterns - :help "Use patterns (if any) near top of buffer.")) - -(defvar hi-lock-map (make-sparse-keymap "Hi Lock") +(defvar hi-lock-map + (let ((map (make-sparse-keymap "Hi Lock"))) + (define-key map "\C-xwi" 'hi-lock-find-patterns) + (define-key map "\C-xwl" 'highlight-lines-matching-regexp) + (define-key map "\C-xwp" 'highlight-phrase) + (define-key map "\C-xwh" 'highlight-regexp) + (define-key map "\C-xwr" 'unhighlight-regexp) + (define-key map "\C-xwb" 'hi-lock-write-interactive-patterns) + map) "Key map for hi-lock.") -(define-key hi-lock-map "\C-xwi" 'hi-lock-find-patterns) -(define-key hi-lock-map "\C-xwl" 'highlight-lines-matching-regexp) -(define-key hi-lock-map "\C-xwp" 'highlight-phrase) -(define-key hi-lock-map "\C-xwh" 'highlight-regexp) -(define-key hi-lock-map "\C-xwr" 'unhighlight-regexp) -(define-key hi-lock-map "\C-xwb" 'hi-lock-write-interactive-patterns) - ;; Visible Functions ;;;###autoload diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 04048e0e572..f7ac24fa2e3 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -384,14 +384,66 @@ directory, like `default-directory'." (regexp :tag "To"))) :group 'ibuffer) +(defvar ibuffer-mode-groups-popup + (let ((groups-map (make-sparse-keymap "Filter Groups"))) + ;; Filter groups + + (define-key-after groups-map [filters-to-filter-group] + '(menu-item "Create filter group from current filters..." + ibuffer-filters-to-filter-group + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) + (define-key-after groups-map [forward-filter-group] + '(menu-item "Move point to the next filter group" + ibuffer-forward-filter-group)) + (define-key-after groups-map [backward-filter-group] + '(menu-item "Move point to the previous filter group" + ibuffer-backward-filter-group)) + (define-key-after groups-map [jump-to-filter-group] + '(menu-item "Move point to a specific filter group..." + ibuffer-jump-to-filter-group)) + (define-key-after groups-map [kill-filter-group] + '(menu-item "Kill filter group named..." + ibuffer-kill-filter-group + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) + (define-key-after groups-map [yank-filter-group] + '(menu-item "Yank last killed filter group before..." + ibuffer-yank-filter-group + :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring))) + (define-key-after groups-map [pop-filter-group] + '(menu-item "Remove top filter group" + ibuffer-pop-filter-group + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) + (define-key-after groups-map [clear-filter-groups] + '(menu-item "Remove all filter groups" + ibuffer-clear-filter-groups + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) + (define-key-after groups-map [pop-filter-group] + '(menu-item "Decompose filter group..." + ibuffer-pop-filter-group + :help "\"Unmake\" a filter group" + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) + (define-key-after groups-map [save-filter-groups] + '(menu-item "Save current filter groups permanently..." + ibuffer-save-filter-groups + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups) + :help "Use a mnemnonic name to store current filter groups")) + (define-key-after groups-map [switch-to-saved-filter-groups] + '(menu-item "Restore permanently saved filters..." + ibuffer-switch-to-saved-filter-groups + :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups) + :help "Replace current filters with a saved stack")) + (define-key-after groups-map [delete-saved-filter-groups] + '(menu-item "Delete permanently saved filter groups..." + ibuffer-delete-saved-filter-groups + :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups))) + (define-key-after groups-map [set-filter-groups-by-mode] + '(menu-item "Set current filter groups to filter by mode" + ibuffer-set-filter-groups-by-mode)) + + groups-map)) -(defvar ibuffer-mode-map nil) -(defvar ibuffer-mode-operate-map nil) -(defvar ibuffer-mode-groups-popup nil) -(unless ibuffer-mode-map - (let ((map (make-sparse-keymap)) - (operate-map (make-sparse-keymap "Operate")) - (groups-map (make-sparse-keymap "Filter Groups"))) +(defvar ibuffer-mode-map + (let ((map (make-keymap))) (define-key map (kbd "0") 'digit-argument) (define-key map (kbd "1") 'digit-argument) (define-key map (kbd "2") 'digit-argument) @@ -545,10 +597,10 @@ directory, like `default-directory'." '(menu-item "View (other frame)" ibuffer-visit-buffer-other-frame)) (define-key-after map [menu-bar view ibuffer-update] '(menu-item "Update" ibuffer-update - :help "Regenerate the list of buffers")) + :help "Regenerate the list of buffers")) (define-key-after map [menu-bar view switch-format] '(menu-item "Switch display format" ibuffer-switch-format - :help "Toggle between available values of `ibuffer-formats'")) + :help "Toggle between available values of `ibuffer-formats'")) (define-key-after map [menu-bar view dashes] '("--")) @@ -562,28 +614,29 @@ directory, like `default-directory'." '(menu-item "Sort by buffer size" ibuffer-do-sort-by-size)) (define-key-after map [menu-bar view sort do-sort-by-alphabetic] '(menu-item "Sort lexicographically" ibuffer-do-sort-by-alphabetic - :help "Sort by the alphabetic order of buffer name")) + :help "Sort by the alphabetic order of buffer name")) (define-key-after map [menu-bar view sort do-sort-by-recency] '(menu-item "Sort by view time" ibuffer-do-sort-by-recency - :help "Sort by the last time the buffer was displayed")) + :help "Sort by the last time the buffer was displayed")) (define-key-after map [menu-bar view sort dashes] '("--")) (define-key-after map [menu-bar view sort invert-sorting] '(menu-item "Reverse sorting order" ibuffer-invert-sorting)) (define-key-after map [menu-bar view sort toggle-sorting-mode] '(menu-item "Switch sorting mode" ibuffer-toggle-sorting-mode - :help "Switch between the various sorting criteria")) + :help "Switch between the various sorting criteria")) (define-key-after map [menu-bar view filter] (cons "Filter" (make-sparse-keymap "Filter"))) (define-key-after map [menu-bar view filter filter-disable] '(menu-item "Disable all filtering" ibuffer-filter-disable - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) (define-key-after map [menu-bar view filter filter-by-mode] '(menu-item "Add filter by major mode..." ibuffer-filter-by-mode)) (define-key-after map [menu-bar view filter filter-by-mode] - '(menu-item "Add filter by major mode in use..." ibuffer-filter-by-used-mode)) + '(menu-item "Add filter by major mode in use..." + ibuffer-filter-by-used-mode)) (define-key-after map [menu-bar view filter filter-by-name] '(menu-item "Add filter by buffer name..." ibuffer-filter-by-name)) (define-key-after map [menu-bar view filter filter-by-filename] @@ -591,158 +644,112 @@ directory, like `default-directory'." (define-key-after map [menu-bar view filter filter-by-size-lt] '(menu-item "Add filter by size less than..." ibuffer-filter-by-size-lt)) (define-key-after map [menu-bar view filter filter-by-size-gt] - '(menu-item "Add filter by size greater than..." ibuffer-filter-by-size-gt)) + '(menu-item "Add filter by size greater than..." + ibuffer-filter-by-size-gt)) (define-key-after map [menu-bar view filter filter-by-content] - '(menu-item "Add filter by content (regexp)..." ibuffer-filter-by-content)) + '(menu-item "Add filter by content (regexp)..." + ibuffer-filter-by-content)) (define-key-after map [menu-bar view filter filter-by-predicate] - '(menu-item "Add filter by Lisp predicate..." ibuffer-filter-by-predicate)) + '(menu-item "Add filter by Lisp predicate..." + ibuffer-filter-by-predicate)) (define-key-after map [menu-bar view filter pop-filter] '(menu-item "Remove top filter" ibuffer-pop-filter - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) (define-key-after map [menu-bar view filter or-filter] '(menu-item "OR top two filters" ibuffer-or-filter - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers - (cdr ibuffer-filtering-qualifiers)) - :help "Create a new filter which is the logical OR of the top two filters")) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers + (cdr ibuffer-filtering-qualifiers)) + :help + "Create a new filter which is the logical OR of the top two filters")) (define-key-after map [menu-bar view filter negate-filter] '(menu-item "Negate top filter" ibuffer-negate-filter - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) (define-key-after map [menu-bar view filter decompose-filter] '(menu-item "Decompose top filter" ibuffer-decompose-filter - :enable (and (featurep 'ibuf-ext) (memq (car ibuffer-filtering-qualifiers) '(or saved not))) - :help "Break down a complex filter like OR or NOT")) + :enable (and (featurep 'ibuf-ext) + (memq (car ibuffer-filtering-qualifiers) '(or saved not))) + :help "Break down a complex filter like OR or NOT")) (define-key-after map [menu-bar view filter exchange-filters] '(menu-item "Swap top two filters" ibuffer-exchange-filters - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers - (cdr ibuffer-filtering-qualifiers)))) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers + (cdr ibuffer-filtering-qualifiers)))) (define-key-after map [menu-bar view filter save-filters] '(menu-item "Save current filters permanently..." ibuffer-save-filters - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) - :help "Use a mnemnonic name to store current filter stack")) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) + :help "Use a mnemnonic name to store current filter stack")) (define-key-after map [menu-bar view filter switch-to-saved-filters] - '(menu-item "Restore permanently saved filters..." ibuffer-switch-to-saved-filters - :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters) - :help "Replace current filters with a saved stack")) + '(menu-item "Restore permanently saved filters..." + ibuffer-switch-to-saved-filters + :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters) + :help "Replace current filters with a saved stack")) (define-key-after map [menu-bar view filter add-saved-filters] - '(menu-item "Add to permanently saved filters..." ibuffer-add-saved-filters - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) - :help "Include already saved stack with current filters")) + '(menu-item "Add to permanently saved filters..." + ibuffer-add-saved-filters + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) + :help "Include already saved stack with current filters")) (define-key-after map [menu-bar view filter delete-saved-filters] '(menu-item "Delete permanently saved filters..." - ibuffer-delete-saved-filters - :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters))) - - ;; Filter groups - - (define-key-after groups-map [filters-to-filter-group] - '(menu-item "Create filter group from current filters..." - ibuffer-filters-to-filter-group - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) - (define-key-after groups-map [forward-filter-group] - '(menu-item "Move point to the next filter group" - ibuffer-forward-filter-group)) - (define-key-after groups-map [backward-filter-group] - '(menu-item "Move point to the previous filter group" - ibuffer-backward-filter-group)) - (define-key-after groups-map [jump-to-filter-group] - '(menu-item "Move point to a specific filter group..." - ibuffer-jump-to-filter-group)) - (define-key-after groups-map [kill-filter-group] - '(menu-item "Kill filter group named..." - ibuffer-kill-filter-group - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) - (define-key-after groups-map [yank-filter-group] - '(menu-item "Yank last killed filter group before..." - ibuffer-yank-filter-group - :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring))) - (define-key-after groups-map [pop-filter-group] - '(menu-item "Remove top filter group" - ibuffer-pop-filter-group - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) - (define-key-after groups-map [clear-filter-groups] - '(menu-item "Remove all filter groups" - ibuffer-clear-filter-groups - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) - (define-key-after groups-map [pop-filter-group] - '(menu-item "Decompose filter group..." - ibuffer-pop-filter-group - :help "\"Unmake\" a filter group" - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) - (define-key-after groups-map [save-filter-groups] - '(menu-item "Save current filter groups permanently..." - ibuffer-save-filter-groups - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups) - :help "Use a mnemnonic name to store current filter groups")) - (define-key-after groups-map [switch-to-saved-filter-groups] - '(menu-item "Restore permanently saved filters..." - ibuffer-switch-to-saved-filter-groups - :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups) - :help "Replace current filters with a saved stack")) - (define-key-after groups-map [delete-saved-filter-groups] - '(menu-item "Delete permanently saved filter groups..." - ibuffer-delete-saved-filter-groups - :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups))) - (define-key-after groups-map [set-filter-groups-by-mode] - '(menu-item "Set current filter groups to filter by mode" - ibuffer-set-filter-groups-by-mode)) + ibuffer-delete-saved-filters + :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters))) (define-key-after map [menu-bar view filter-groups] - (cons "Filter Groups" groups-map)) + (cons "Filter Groups" ibuffer-mode-groups-popup)) (define-key-after map [menu-bar view dashes2] '("--")) (define-key-after map [menu-bar view diff-with-file] '(menu-item "Diff with file" ibuffer-diff-with-file - :help "View the differences between this buffer and its file")) + :help "View the differences between this buffer and its file")) (define-key-after map [menu-bar view auto-mode] '(menu-item "Toggle Auto Mode" ibuffer-auto-mode - :help "Attempt to automatically update the Ibuffer buffer")) + :help "Attempt to automatically update the Ibuffer buffer")) (define-key-after map [menu-bar view customize] '(menu-item "Customize Ibuffer" ibuffer-customize - :help "Use Custom to customize Ibuffer")) + :help "Use Custom to customize Ibuffer")) (define-key-after map [menu-bar mark] (cons "Mark" (make-sparse-keymap "Mark"))) (define-key-after map [menu-bar mark toggle-marks] '(menu-item "Toggle marks" ibuffer-toggle-marks - :help "Unmark marked buffers, and mark unmarked buffers")) + :help "Unmark marked buffers, and mark unmarked buffers")) (define-key-after map [menu-bar mark mark-forward] '(menu-item "Mark" ibuffer-mark-forward - :help "Mark the buffer at point")) + :help "Mark the buffer at point")) (define-key-after map [menu-bar mark unmark-forward] '(menu-item "Unmark" ibuffer-unmark-forward - :help "Unmark the buffer at point")) + :help "Unmark the buffer at point")) (define-key-after map [menu-bar mark mark-by-mode] '(menu-item "Mark by mode..." ibuffer-mark-by-mode - :help "Mark all buffers in a particular major mode")) + :help "Mark all buffers in a particular major mode")) (define-key-after map [menu-bar mark mark-modified-buffers] '(menu-item "Mark modified buffers" ibuffer-mark-modified-buffers - :help "Mark all buffers which have been modified")) + :help "Mark all buffers which have been modified")) (define-key-after map [menu-bar mark mark-unsaved-buffers] '(menu-item "Mark unsaved buffers" ibuffer-mark-unsaved-buffers - :help "Mark all buffers which have a file and are modified")) + :help "Mark all buffers which have a file and are modified")) (define-key-after map [menu-bar mark mark-read-only-buffers] '(menu-item "Mark read-only buffers" ibuffer-mark-read-only-buffers - :help "Mark all buffers which are read-only")) + :help "Mark all buffers which are read-only")) (define-key-after map [menu-bar mark mark-special-buffers] '(menu-item "Mark special buffers" ibuffer-mark-special-buffers - :help "Mark all buffers whose name begins with a *")) + :help "Mark all buffers whose name begins with a *")) (define-key-after map [menu-bar mark mark-dired-buffers] '(menu-item "Mark dired buffers" ibuffer-mark-dired-buffers - :help "Mark buffers in dired-mode")) + :help "Mark buffers in dired-mode")) (define-key-after map [menu-bar mark mark-dissociated-buffers] '(menu-item "Mark dissociated buffers" ibuffer-mark-dissociated-buffers - :help "Mark buffers with a non-existent associated file")) + :help "Mark buffers with a non-existent associated file")) (define-key-after map [menu-bar mark mark-help-buffers] '(menu-item "Mark help buffers" ibuffer-mark-help-buffers - :help "Mark buffers in help-mode")) + :help "Mark buffers in help-mode")) (define-key-after map [menu-bar mark mark-compressed-file-buffers] - '(menu-item "Mark compressed file buffers" ibuffer-mark-compressed-file-buffers - :help "Mark buffers which have a file that is compressed")) + '(menu-item "Mark compressed file buffers" + ibuffer-mark-compressed-file-buffers + :help "Mark buffers which have a file that is compressed")) (define-key-after map [menu-bar mark mark-old-buffers] '(menu-item "Mark old buffers" ibuffer-mark-old-buffers - :help "Mark buffers which have not been viewed recently")) + :help "Mark buffers which have not been viewed recently")) (define-key-after map [menu-bar mark unmark-all] '(menu-item "Unmark All" ibuffer-unmark-all)) @@ -751,16 +758,19 @@ directory, like `default-directory'." (define-key-after map [menu-bar mark mark-by-name-regexp] '(menu-item "Mark by buffer name (regexp)..." ibuffer-mark-by-name-regexp - :help "Mark buffers whose name matches a regexp")) + :help "Mark buffers whose name matches a regexp")) (define-key-after map [menu-bar mark mark-by-mode-regexp] '(menu-item "Mark by major mode (regexp)..." ibuffer-mark-by-mode-regexp - :help "Mark buffers whose major mode name matches a regexp")) + :help "Mark buffers whose major mode name matches a regexp")) (define-key-after map [menu-bar mark mark-by-file-name-regexp] - '(menu-item "Mark by file name (regexp)..." ibuffer-mark-by-file-name-regexp - :help "Mark buffers whose file name matches a regexp")) + '(menu-item "Mark by file name (regexp)..." + ibuffer-mark-by-file-name-regexp + :help "Mark buffers whose file name matches a regexp")) - ;; Operate map is added later + map)) +(defvar ibuffer-mode-operate-map + (let ((operate-map (make-sparse-keymap "Operate"))) (define-key-after operate-map [do-view] '(menu-item "View" ibuffer-do-view)) (define-key-after operate-map [do-view-other-frame] @@ -769,47 +779,45 @@ directory, like `default-directory'." '(menu-item "Save" ibuffer-do-save)) (define-key-after operate-map [do-replace-regexp] '(menu-item "Replace (regexp)..." ibuffer-do-replace-regexp - :help "Replace text inside marked buffers")) + :help "Replace text inside marked buffers")) (define-key-after operate-map [do-query-replace] '(menu-item "Query Replace..." ibuffer-do-query-replace - :help "Replace text in marked buffers, asking each time")) + :help "Replace text in marked buffers, asking each time")) (define-key-after operate-map [do-query-replace-regexp] '(menu-item "Query Replace (regexp)..." ibuffer-do-query-replace-regexp - :help "Replace text in marked buffers by regexp, asking each time")) + :help "Replace text in marked buffers by regexp, asking each time")) (define-key-after operate-map [do-print] '(menu-item "Print" ibuffer-do-print)) (define-key-after operate-map [do-toggle-modified] '(menu-item "Toggle modification flag" ibuffer-do-toggle-modified)) (define-key-after operate-map [do-revert] '(menu-item "Revert" ibuffer-do-revert - :help "Revert marked buffers to their associated file")) + :help "Revert marked buffers to their associated file")) (define-key-after operate-map [do-rename-uniquely] '(menu-item "Rename Uniquely" ibuffer-do-rename-uniquely - :help "Rename marked buffers to a new, unique name")) + :help "Rename marked buffers to a new, unique name")) (define-key-after operate-map [do-delete] '(menu-item "Kill" ibuffer-do-delete)) (define-key-after operate-map [do-occur] '(menu-item "List lines matching..." ibuffer-do-occur - :help "View all lines in marked buffers matching a regexp")) + :help "View all lines in marked buffers matching a regexp")) (define-key-after operate-map [do-shell-command-pipe] '(menu-item "Pipe to shell command..." ibuffer-do-shell-command-pipe - :help "For each marked buffer, send its contents to a shell command")) + :help "For each marked buffer, send its contents to a shell command")) (define-key-after operate-map [do-shell-command-pipe-replace] '(menu-item "Pipe to shell command (replace)..." ibuffer-do-shell-command-pipe-replace - :help "For each marked buffer, replace its contents with output of shell command")) + :help "For each marked buffer, replace its contents with output of shell command")) (define-key-after operate-map [do-shell-command-file] '(menu-item "Shell command on buffer's file..." ibuffer-do-shell-command-file - :help "For each marked buffer, run a shell command with its file as argument")) + :help "For each marked buffer, run a shell command with its file as argument")) (define-key-after operate-map [do-eval] '(menu-item "Eval..." ibuffer-do-eval - :help "Evaluate a Lisp form in each marked buffer")) + :help "Evaluate a Lisp form in each marked buffer")) (define-key-after operate-map [do-view-and-eval] '(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval - :help "Evaluate a Lisp form in each marked buffer while viewing it")) + :help "Evaluate a Lisp form in each marked buffer while viewing it")) - (setq ibuffer-mode-map map - ibuffer-mode-operate-map operate-map - ibuffer-mode-groups-popup (copy-keymap groups-map)))) + operate-map)) (define-key ibuffer-mode-groups-popup [kill-filter-group] '(menu-item "Kill filter group" @@ -1559,9 +1567,8 @@ If point is on a group name, this function operates on that group." from-end-p)) (setq strlen (length str)) (setq str - ,(ibuffer-compile-make-eliding-form 'str - elide - from-end-p))))) + ,(ibuffer-compile-make-eliding-form + 'str elide from-end-p))))) ;; Now, put these forms together with the rest of the code. (let ((callform ;; Is this an "inline" column? This means we have @@ -1575,16 +1582,18 @@ If point is on a group name, this function operates on that group." ;; You're not expected to understand this. Hell, I ;; don't even understand it, and I wrote it five ;; minutes ago. - (insertgenfn (ibuffer-aif (get sym 'ibuffer-column-summarizer) - ;; I really, really wish Emacs Lisp had closures. - (lambda (arg sym) - `(insert - (let ((ret ,arg)) - (put ',sym 'ibuffer-column-summary - (cons ret (get ',sym 'ibuffer-column-summary))) - ret))) - (lambda (arg sym) - `(insert ,arg)))) + (insertgenfn + (ibuffer-aif (get sym 'ibuffer-column-summarizer) + ;; I really, really wish Emacs Lisp had closures. + (lambda (arg sym) + `(insert + (let ((ret ,arg)) + (put ',sym 'ibuffer-column-summary + (cons ret (get ',sym + 'ibuffer-column-summary))) + ret))) + (lambda (arg sym) + `(insert ,arg)))) (mincompform `(< strlen ,(if (integerp min) min 'min))) @@ -1617,7 +1626,8 @@ If point is on a group name, this function operates on that group." `(strlen (length str)))) outforms) (setq outforms - (append outforms (list (funcall insertgenfn 'str sym))))) + (append outforms + (list (funcall insertgenfn 'str sym))))) ;; The simple case; just insert the string. (push (funcall insertgenfn callform sym) outforms)) ;; Finally, return a `let' form which binds the diff --git a/lisp/kmacro.el b/lisp/kmacro.el index 689120c0f8f..6f4bed3ec5b 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -916,34 +916,35 @@ without repeating the prefix." (defvar kmacro-step-edit-help) ;; kmacro step edit help enabled (defvar kmacro-step-edit-num-input-keys) ;; to ignore duplicate pre-command hook -(defvar kmacro-step-edit-map (make-sparse-keymap) +(defvar kmacro-step-edit-map + (let ((map (make-sparse-keymap))) + ;; query-replace-map answers include: `act', `skip', `act-and-show', + ;; `exit', `act-and-exit', `edit', `delete-and-edit', `recenter', + ;; `automatic', `backup', `exit-prefix', and `help'.") + ;; Also: `quit', `edit-replacement' + + (set-keymap-parent map query-replace-map) + + (define-key map "\t" 'act-repeat) + (define-key map [tab] 'act-repeat) + (define-key map "\C-k" 'skip-rest) + (define-key map "c" 'automatic) + (define-key map "f" 'skip-keep) + (define-key map "q" 'quit) + (define-key map "d" 'skip) + (define-key map "\C-d" 'skip) + (define-key map "i" 'insert) + (define-key map "I" 'insert-1) + (define-key map "r" 'replace) + (define-key map "R" 'replace-1) + (define-key map "a" 'append) + (define-key map "A" 'append-end) + map) "Keymap that defines the responses to questions in `kmacro-step-edit-macro'. This keymap is an extension to the `query-replace-map', allowing the following additional answers: `insert', `insert-1', `replace', `replace-1', `append', `append-end', `act-repeat', `skip-end', `skip-keep'.") -;; query-replace-map answers include: `act', `skip', `act-and-show', -;; `exit', `act-and-exit', `edit', `delete-and-edit', `recenter', -;; `automatic', `backup', `exit-prefix', and `help'.") -;; Also: `quit', `edit-replacement' - -(set-keymap-parent kmacro-step-edit-map query-replace-map) - -(define-key kmacro-step-edit-map "\t" 'act-repeat) -(define-key kmacro-step-edit-map [tab] 'act-repeat) -(define-key kmacro-step-edit-map "\C-k" 'skip-rest) -(define-key kmacro-step-edit-map "c" 'automatic) -(define-key kmacro-step-edit-map "f" 'skip-keep) -(define-key kmacro-step-edit-map "q" 'quit) -(define-key kmacro-step-edit-map "d" 'skip) -(define-key kmacro-step-edit-map "\C-d" 'skip) -(define-key kmacro-step-edit-map "i" 'insert) -(define-key kmacro-step-edit-map "I" 'insert-1) -(define-key kmacro-step-edit-map "r" 'replace) -(define-key kmacro-step-edit-map "R" 'replace-1) -(define-key kmacro-step-edit-map "a" 'append) -(define-key kmacro-step-edit-map "A" 'append-end) - (defvar kmacro-step-edit-prefix-commands '(universal-argument universal-argument-more universal-argument-minus digit-argument negative-argument) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 7e1cbe4ea8d..7e44ae22e1e 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -4418,7 +4418,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order. ;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic ;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels -;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "76a7ae570a4fa96a9233d0276f52f515") +;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "adad96c9eb13cae4bae0769f731d8784") ;;; Generated autoloads from rmailsum.el (autoload 'rmail-summary "rmailsum" "\ diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index e0f40afc0d1..1d5e062fe27 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -64,7 +64,196 @@ Setting this option to nil might speed up the generation of summaries." "Overlay used to highlight the current message in the Rmail summary.") (put 'rmail-summary-overlay 'permanent-local t) -(defvar rmail-summary-mode-map nil +(defvar rmail-summary-mode-map + (let ((map (make-keymap))) + (suppress-keymap map) + (define-key map [mouse-2] 'rmail-summary-mouse-goto-message) + (define-key map "a" 'rmail-summary-add-label) + (define-key map "b" 'rmail-summary-bury) + (define-key map "c" 'rmail-summary-continue) + (define-key map "d" 'rmail-summary-delete-forward) + (define-key map "\C-d" 'rmail-summary-delete-backward) + (define-key map "e" 'rmail-summary-edit-current-message) + (define-key map "f" 'rmail-summary-forward) + (define-key map "g" 'rmail-summary-get-new-mail) + (define-key map "h" 'rmail-summary) + (define-key map "i" 'rmail-summary-input) + (define-key map "j" 'rmail-summary-goto-msg) + (define-key map "\C-m" 'rmail-summary-goto-msg) + (define-key map "k" 'rmail-summary-kill-label) + (define-key map "l" 'rmail-summary-by-labels) + (define-key map "\e\C-h" 'rmail-summary) + (define-key map "\e\C-l" 'rmail-summary-by-labels) + (define-key map "\e\C-r" 'rmail-summary-by-recipients) + (define-key map "\e\C-s" 'rmail-summary-by-regexp) + ;; `f' for "from". + (define-key map "\e\C-f" 'rmail-summary-by-senders) + (define-key map "\e\C-t" 'rmail-summary-by-topic) + (define-key map "m" 'rmail-summary-mail) + (define-key map "\M-m" 'rmail-summary-retry-failure) + (define-key map "n" 'rmail-summary-next-msg) + (define-key map "\en" 'rmail-summary-next-all) + (define-key map "\e\C-n" 'rmail-summary-next-labeled-message) + (define-key map "o" 'rmail-summary-output) + (define-key map "\C-o" 'rmail-summary-output-as-seen) + (define-key map "p" 'rmail-summary-previous-msg) + (define-key map "\ep" 'rmail-summary-previous-all) + (define-key map "\e\C-p" 'rmail-summary-previous-labeled-message) + (define-key map "q" 'rmail-summary-quit) + (define-key map "Q" 'rmail-summary-wipe) + (define-key map "r" 'rmail-summary-reply) + (define-key map "s" 'rmail-summary-expunge-and-save) + ;; See rms's comment in rmail.el + ;; (define-key map "\er" 'rmail-summary-search-backward) + (define-key map "\es" 'rmail-summary-search) + (define-key map "t" 'rmail-summary-toggle-header) + (define-key map "u" 'rmail-summary-undelete) + (define-key map "\M-u" 'rmail-summary-undelete-many) + (define-key map "x" 'rmail-summary-expunge) + (define-key map "w" 'rmail-summary-output-body) + (define-key map "v" 'rmail-mime) + (define-key map "." 'rmail-summary-beginning-of-message) + (define-key map "/" 'rmail-summary-end-of-message) + (define-key map "<" 'rmail-summary-first-message) + (define-key map ">" 'rmail-summary-last-message) + (define-key map " " 'rmail-summary-scroll-msg-up) + (define-key map "\177" 'rmail-summary-scroll-msg-down) + (define-key map "?" 'describe-mode) + (define-key map "\C-c\C-n" 'rmail-summary-next-same-subject) + (define-key map "\C-c\C-p" 'rmail-summary-previous-same-subject) + (define-key map "\C-c\C-s\C-d" 'rmail-summary-sort-by-date) + (define-key map "\C-c\C-s\C-s" 'rmail-summary-sort-by-subject) + (define-key map "\C-c\C-s\C-a" 'rmail-summary-sort-by-author) + (define-key map "\C-c\C-s\C-r" 'rmail-summary-sort-by-recipient) + (define-key map "\C-c\C-s\C-c" 'rmail-summary-sort-by-correspondent) + (define-key map "\C-c\C-s\C-l" 'rmail-summary-sort-by-lines) + (define-key map "\C-c\C-s\C-k" 'rmail-summary-sort-by-labels) + (define-key map "\C-x\C-s" 'rmail-summary-save-buffer) + + ;; Menu bar bindings. + + (define-key map [menu-bar] (make-sparse-keymap)) + + (define-key map [menu-bar classify] + (cons "Classify" (make-sparse-keymap "Classify"))) + + (define-key map [menu-bar classify output-menu] + '("Output (Rmail Menu)..." . rmail-summary-output-menu)) + + (define-key map [menu-bar classify input-menu] + '("Input Rmail File (menu)..." . rmail-input-menu)) + + (define-key map [menu-bar classify input-menu] + '(nil)) + + (define-key map [menu-bar classify output-menu] + '(nil)) + + (define-key map [menu-bar classify output-body] + '("Output body..." . rmail-summary-output-body)) + + (define-key map [menu-bar classify output-inbox] + '("Output..." . rmail-summary-output)) + + (define-key map [menu-bar classify output] + '("Output as seen..." . rmail-summary-output-as-seen)) + + (define-key map [menu-bar classify kill-label] + '("Kill Label..." . rmail-summary-kill-label)) + + (define-key map [menu-bar classify add-label] + '("Add Label..." . rmail-summary-add-label)) + + (define-key map [menu-bar summary] + (cons "Summary" (make-sparse-keymap "Summary"))) + + (define-key map [menu-bar summary senders] + '("By Senders..." . rmail-summary-by-senders)) + + (define-key map [menu-bar summary labels] + '("By Labels..." . rmail-summary-by-labels)) + + (define-key map [menu-bar summary recipients] + '("By Recipients..." . rmail-summary-by-recipients)) + + (define-key map [menu-bar summary topic] + '("By Topic..." . rmail-summary-by-topic)) + + (define-key map [menu-bar summary regexp] + '("By Regexp..." . rmail-summary-by-regexp)) + + (define-key map [menu-bar summary all] + '("All" . rmail-summary)) + + (define-key map [menu-bar mail] + (cons "Mail" (make-sparse-keymap "Mail"))) + + (define-key map [menu-bar mail rmail-summary-get-new-mail] + '("Get New Mail" . rmail-summary-get-new-mail)) + + (define-key map [menu-bar mail lambda] + '("----")) + + (define-key map [menu-bar mail continue] + '("Continue" . rmail-summary-continue)) + + (define-key map [menu-bar mail resend] + '("Re-send..." . rmail-summary-resend)) + + (define-key map [menu-bar mail forward] + '("Forward" . rmail-summary-forward)) + + (define-key map [menu-bar mail retry] + '("Retry" . rmail-summary-retry-failure)) + + (define-key map [menu-bar mail reply] + '("Reply" . rmail-summary-reply)) + + (define-key map [menu-bar mail mail] + '("Mail" . rmail-summary-mail)) + + (define-key map [menu-bar delete] + (cons "Delete" (make-sparse-keymap "Delete"))) + + (define-key map [menu-bar delete expunge/save] + '("Expunge/Save" . rmail-summary-expunge-and-save)) + + (define-key map [menu-bar delete expunge] + '("Expunge" . rmail-summary-expunge)) + + (define-key map [menu-bar delete undelete] + '("Undelete" . rmail-summary-undelete)) + + (define-key map [menu-bar delete delete] + '("Delete" . rmail-summary-delete-forward)) + + (define-key map [menu-bar move] + (cons "Move" (make-sparse-keymap "Move"))) + + (define-key map [menu-bar move search-back] + '("Search Back..." . rmail-summary-search-backward)) + + (define-key map [menu-bar move search] + '("Search..." . rmail-summary-search)) + + (define-key map [menu-bar move previous] + '("Previous Nondeleted" . rmail-summary-previous-msg)) + + (define-key map [menu-bar move next] + '("Next Nondeleted" . rmail-summary-next-msg)) + + (define-key map [menu-bar move last] + '("Last" . rmail-summary-last-message)) + + (define-key map [menu-bar move first] + '("First" . rmail-summary-first-message)) + + (define-key map [menu-bar move previous] + '("Previous" . rmail-summary-previous-all)) + + (define-key map [menu-bar move next] + '("Next" . rmail-summary-next-all)) + map) "Keymap used in Rmail summary mode.") ;; Entry points for making a summary buffer. @@ -990,207 +1179,6 @@ Search, the `unseen' attribute is restored.") (save-excursion (switch-to-buffer rmail-buffer) (save-buffer)))) - - -(if rmail-summary-mode-map - nil - (setq rmail-summary-mode-map (make-keymap)) - (suppress-keymap rmail-summary-mode-map) - - (define-key rmail-summary-mode-map [mouse-2] 'rmail-summary-mouse-goto-message) - (define-key rmail-summary-mode-map "a" 'rmail-summary-add-label) - (define-key rmail-summary-mode-map "b" 'rmail-summary-bury) - (define-key rmail-summary-mode-map "c" 'rmail-summary-continue) - (define-key rmail-summary-mode-map "d" 'rmail-summary-delete-forward) - (define-key rmail-summary-mode-map "\C-d" 'rmail-summary-delete-backward) - (define-key rmail-summary-mode-map "e" 'rmail-summary-edit-current-message) - (define-key rmail-summary-mode-map "f" 'rmail-summary-forward) - (define-key rmail-summary-mode-map "g" 'rmail-summary-get-new-mail) - (define-key rmail-summary-mode-map "h" 'rmail-summary) - (define-key rmail-summary-mode-map "i" 'rmail-summary-input) - (define-key rmail-summary-mode-map "j" 'rmail-summary-goto-msg) - (define-key rmail-summary-mode-map "\C-m" 'rmail-summary-goto-msg) - (define-key rmail-summary-mode-map "k" 'rmail-summary-kill-label) - (define-key rmail-summary-mode-map "l" 'rmail-summary-by-labels) - (define-key rmail-summary-mode-map "\e\C-h" 'rmail-summary) - (define-key rmail-summary-mode-map "\e\C-l" 'rmail-summary-by-labels) - (define-key rmail-summary-mode-map "\e\C-r" 'rmail-summary-by-recipients) - (define-key rmail-summary-mode-map "\e\C-s" 'rmail-summary-by-regexp) - ;; `f' for "from". - (define-key rmail-summary-mode-map "\e\C-f" 'rmail-summary-by-senders) - (define-key rmail-summary-mode-map "\e\C-t" 'rmail-summary-by-topic) - (define-key rmail-summary-mode-map "m" 'rmail-summary-mail) - (define-key rmail-summary-mode-map "\M-m" 'rmail-summary-retry-failure) - (define-key rmail-summary-mode-map "n" 'rmail-summary-next-msg) - (define-key rmail-summary-mode-map "\en" 'rmail-summary-next-all) - (define-key rmail-summary-mode-map "\e\C-n" 'rmail-summary-next-labeled-message) - (define-key rmail-summary-mode-map "o" 'rmail-summary-output) - (define-key rmail-summary-mode-map "\C-o" 'rmail-summary-output-as-seen) - (define-key rmail-summary-mode-map "p" 'rmail-summary-previous-msg) - (define-key rmail-summary-mode-map "\ep" 'rmail-summary-previous-all) - (define-key rmail-summary-mode-map "\e\C-p" 'rmail-summary-previous-labeled-message) - (define-key rmail-summary-mode-map "q" 'rmail-summary-quit) - (define-key rmail-summary-mode-map "Q" 'rmail-summary-wipe) - (define-key rmail-summary-mode-map "r" 'rmail-summary-reply) - (define-key rmail-summary-mode-map "s" 'rmail-summary-expunge-and-save) - ;; See rms's comment in rmail.el -;;; (define-key rmail-summary-mode-map "\er" 'rmail-summary-search-backward) - (define-key rmail-summary-mode-map "\es" 'rmail-summary-search) - (define-key rmail-summary-mode-map "t" 'rmail-summary-toggle-header) - (define-key rmail-summary-mode-map "u" 'rmail-summary-undelete) - (define-key rmail-summary-mode-map "\M-u" 'rmail-summary-undelete-many) - (define-key rmail-summary-mode-map "x" 'rmail-summary-expunge) - (define-key rmail-summary-mode-map "w" 'rmail-summary-output-body) - (define-key rmail-summary-mode-map "v" 'rmail-mime) - (define-key rmail-summary-mode-map "." 'rmail-summary-beginning-of-message) - (define-key rmail-summary-mode-map "/" 'rmail-summary-end-of-message) - (define-key rmail-summary-mode-map "<" 'rmail-summary-first-message) - (define-key rmail-summary-mode-map ">" 'rmail-summary-last-message) - (define-key rmail-summary-mode-map " " 'rmail-summary-scroll-msg-up) - (define-key rmail-summary-mode-map "\177" 'rmail-summary-scroll-msg-down) - (define-key rmail-summary-mode-map "?" 'describe-mode) - (define-key rmail-summary-mode-map "\C-c\C-n" 'rmail-summary-next-same-subject) - (define-key rmail-summary-mode-map "\C-c\C-p" 'rmail-summary-previous-same-subject) - (define-key rmail-summary-mode-map "\C-c\C-s\C-d" - 'rmail-summary-sort-by-date) - (define-key rmail-summary-mode-map "\C-c\C-s\C-s" - 'rmail-summary-sort-by-subject) - (define-key rmail-summary-mode-map "\C-c\C-s\C-a" - 'rmail-summary-sort-by-author) - (define-key rmail-summary-mode-map "\C-c\C-s\C-r" - 'rmail-summary-sort-by-recipient) - (define-key rmail-summary-mode-map "\C-c\C-s\C-c" - 'rmail-summary-sort-by-correspondent) - (define-key rmail-summary-mode-map "\C-c\C-s\C-l" - 'rmail-summary-sort-by-lines) - (define-key rmail-summary-mode-map "\C-c\C-s\C-k" - 'rmail-summary-sort-by-labels) - (define-key rmail-summary-mode-map "\C-x\C-s" 'rmail-summary-save-buffer) - ) - -;;; Menu bar bindings. - -(define-key rmail-summary-mode-map [menu-bar] (make-sparse-keymap)) - -(define-key rmail-summary-mode-map [menu-bar classify] - (cons "Classify" (make-sparse-keymap "Classify"))) - -(define-key rmail-summary-mode-map [menu-bar classify output-menu] - '("Output (Rmail Menu)..." . rmail-summary-output-menu)) - -(define-key rmail-summary-mode-map [menu-bar classify input-menu] - '("Input Rmail File (menu)..." . rmail-input-menu)) - -(define-key rmail-summary-mode-map [menu-bar classify input-menu] - '(nil)) - -(define-key rmail-summary-mode-map [menu-bar classify output-menu] - '(nil)) - -(define-key rmail-summary-mode-map [menu-bar classify output-body] - '("Output body..." . rmail-summary-output-body)) - -(define-key rmail-summary-mode-map [menu-bar classify output-inbox] - '("Output..." . rmail-summary-output)) - -(define-key rmail-summary-mode-map [menu-bar classify output] - '("Output as seen..." . rmail-summary-output-as-seen)) - -(define-key rmail-summary-mode-map [menu-bar classify kill-label] - '("Kill Label..." . rmail-summary-kill-label)) - -(define-key rmail-summary-mode-map [menu-bar classify add-label] - '("Add Label..." . rmail-summary-add-label)) - -(define-key rmail-summary-mode-map [menu-bar summary] - (cons "Summary" (make-sparse-keymap "Summary"))) - -(define-key rmail-summary-mode-map [menu-bar summary senders] - '("By Senders..." . rmail-summary-by-senders)) - -(define-key rmail-summary-mode-map [menu-bar summary labels] - '("By Labels..." . rmail-summary-by-labels)) - -(define-key rmail-summary-mode-map [menu-bar summary recipients] - '("By Recipients..." . rmail-summary-by-recipients)) - -(define-key rmail-summary-mode-map [menu-bar summary topic] - '("By Topic..." . rmail-summary-by-topic)) - -(define-key rmail-summary-mode-map [menu-bar summary regexp] - '("By Regexp..." . rmail-summary-by-regexp)) - -(define-key rmail-summary-mode-map [menu-bar summary all] - '("All" . rmail-summary)) - -(define-key rmail-summary-mode-map [menu-bar mail] - (cons "Mail" (make-sparse-keymap "Mail"))) - -(define-key rmail-summary-mode-map [menu-bar mail rmail-summary-get-new-mail] - '("Get New Mail" . rmail-summary-get-new-mail)) - -(define-key rmail-summary-mode-map [menu-bar mail lambda] - '("----")) - -(define-key rmail-summary-mode-map [menu-bar mail continue] - '("Continue" . rmail-summary-continue)) - -(define-key rmail-summary-mode-map [menu-bar mail resend] - '("Re-send..." . rmail-summary-resend)) - -(define-key rmail-summary-mode-map [menu-bar mail forward] - '("Forward" . rmail-summary-forward)) - -(define-key rmail-summary-mode-map [menu-bar mail retry] - '("Retry" . rmail-summary-retry-failure)) - -(define-key rmail-summary-mode-map [menu-bar mail reply] - '("Reply" . rmail-summary-reply)) - -(define-key rmail-summary-mode-map [menu-bar mail mail] - '("Mail" . rmail-summary-mail)) - -(define-key rmail-summary-mode-map [menu-bar delete] - (cons "Delete" (make-sparse-keymap "Delete"))) - -(define-key rmail-summary-mode-map [menu-bar delete expunge/save] - '("Expunge/Save" . rmail-summary-expunge-and-save)) - -(define-key rmail-summary-mode-map [menu-bar delete expunge] - '("Expunge" . rmail-summary-expunge)) - -(define-key rmail-summary-mode-map [menu-bar delete undelete] - '("Undelete" . rmail-summary-undelete)) - -(define-key rmail-summary-mode-map [menu-bar delete delete] - '("Delete" . rmail-summary-delete-forward)) - -(define-key rmail-summary-mode-map [menu-bar move] - (cons "Move" (make-sparse-keymap "Move"))) - -(define-key rmail-summary-mode-map [menu-bar move search-back] - '("Search Back..." . rmail-summary-search-backward)) - -(define-key rmail-summary-mode-map [menu-bar move search] - '("Search..." . rmail-summary-search)) - -(define-key rmail-summary-mode-map [menu-bar move previous] - '("Previous Nondeleted" . rmail-summary-previous-msg)) - -(define-key rmail-summary-mode-map [menu-bar move next] - '("Next Nondeleted" . rmail-summary-next-msg)) - -(define-key rmail-summary-mode-map [menu-bar move last] - '("Last" . rmail-summary-last-message)) - -(define-key rmail-summary-mode-map [menu-bar move first] - '("First" . rmail-summary-first-message)) - -(define-key rmail-summary-mode-map [menu-bar move previous] - '("Previous" . rmail-summary-previous-all)) - -(define-key rmail-summary-mode-map [menu-bar move next] - '("Next" . rmail-summary-next-all)) (defun rmail-summary-mouse-goto-message (event) "Select the message whose summary line you click on." diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 42caeee447c..8a33381b618 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -28,11 +28,17 @@ ;;; Code: +;; This is referenced by some code below; it is defined in uniquify.el +(defvar uniquify-buffer-name-style) + +;; From emulation/cua-base.el; used below +(defvar cua-enable-cua-keys) + + ;; Don't clobber an existing menu-bar keymap, to preserve any menu-bar key ;; definitions made in loaddefs.el. (or (lookup-key global-map [menu-bar]) (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar"))) -(defvar menu-bar-help-menu (make-sparse-keymap "Help")) (if (not (featurep 'ns)) ;; Force Help item to come last, after the major mode's own items. @@ -52,149 +58,151 @@ (define-key global-map [menu-bar services] ; set-up in ns-win (cons (purecopy "Services") (make-sparse-keymap "Services")))) -;; If running under GNUstep, "Help" is moved and renamed "Info" (see below). -(or (and (featurep 'ns) - (not (eq system-type 'darwin))) - (define-key global-map [menu-bar help-menu] - (cons (purecopy "Help") menu-bar-help-menu))) - -(defvar menu-bar-tools-menu (make-sparse-keymap "Tools")) -(define-key global-map [menu-bar tools] - (cons (purecopy "Tools") menu-bar-tools-menu)) ;; This definition is just to show what this looks like. ;; It gets modified in place when menu-bar-update-buffers is called. (defvar global-buffers-menu-map (make-sparse-keymap "Buffers")) -(define-key global-map [menu-bar buffer] - (cons (purecopy "Buffers") global-buffers-menu-map)) -(defvar menu-bar-options-menu (make-sparse-keymap "Options")) -(define-key global-map [menu-bar options] - (cons (purecopy "Options") menu-bar-options-menu)) -(defvar menu-bar-edit-menu (make-sparse-keymap "Edit")) -(define-key global-map [menu-bar edit] - (cons (purecopy "Edit") menu-bar-edit-menu)) -(defvar menu-bar-file-menu (make-sparse-keymap "File")) -(define-key global-map [menu-bar file] - (cons (purecopy "File") menu-bar-file-menu)) - -;; Put "Help" menu at the front, called "Info". -(and (featurep 'ns) - (not (eq system-type 'darwin)) - (define-key global-map [menu-bar help-menu] - (cons (purecopy "Info") menu-bar-help-menu))) ;; Only declared obsolete (and only made a proper alias) in 23.3. -(define-obsolete-variable-alias 'menu-bar-files-menu 'menu-bar-file-menu "22.1") - -;; This is referenced by some code below; it is defined in uniquify.el -(defvar uniquify-buffer-name-style) - -;; From emulation/cua-base.el; used below -(defvar cua-enable-cua-keys) +(define-obsolete-variable-alias + 'menu-bar-files-menu 'menu-bar-file-menu "22.1") +(defvar menu-bar-file-menu + (let ((menu (make-sparse-keymap "File"))) + + ;; The "File" menu items + (define-key menu [exit-emacs] + `(menu-item ,(purecopy "Quit") save-buffers-kill-terminal + :help ,(purecopy "Save unsaved buffers, then exit"))) - -;; The "File" menu items -(define-key menu-bar-file-menu [exit-emacs] - `(menu-item ,(purecopy "Quit") save-buffers-kill-terminal - :help ,(purecopy "Save unsaved buffers, then exit"))) - -(define-key menu-bar-file-menu [separator-exit] - menu-bar-separator) - -;; Don't use delete-frame as event name because that is a special -;; event. -(define-key menu-bar-file-menu [delete-this-frame] - `(menu-item ,(purecopy "Delete Frame") delete-frame - :visible (fboundp 'delete-frame) - :enable (delete-frame-enabled-p) - :help ,(purecopy "Delete currently selected frame"))) -(define-key menu-bar-file-menu [make-frame-on-display] - `(menu-item ,(purecopy "New Frame on Display...") make-frame-on-display - :visible (fboundp 'make-frame-on-display) - :help ,(purecopy "Open a new frame on another display"))) -(define-key menu-bar-file-menu [make-frame] - `(menu-item ,(purecopy "New Frame") make-frame-command - :visible (fboundp 'make-frame-command) - :help ,(purecopy "Open a new frame"))) - -(define-key menu-bar-file-menu [one-window] - `(menu-item ,(purecopy "Remove Splits") delete-other-windows - :enable (not (one-window-p t nil)) - :help ,(purecopy "Selected window grows to fill the whole frame"))) - -(define-key menu-bar-file-menu [split-window] - `(menu-item ,(purecopy "Split Window") split-window-vertically - :enable (and (menu-bar-menu-frame-live-and-visible-p) - (menu-bar-non-minibuffer-window-p)) - :help ,(purecopy "Split selected window in two windows"))) - -(define-key menu-bar-file-menu [separator-window] - menu-bar-separator) - -(define-key menu-bar-file-menu [ps-print-region] - `(menu-item ,(purecopy "Postscript Print Region (B+W)") ps-print-region - :enable mark-active - :help ,(purecopy "Pretty-print marked region in black and white to PostScript printer"))) -(define-key menu-bar-file-menu [ps-print-buffer] - `(menu-item ,(purecopy "Postscript Print Buffer (B+W)") ps-print-buffer - :enable (menu-bar-menu-frame-live-and-visible-p) - :help ,(purecopy "Pretty-print current buffer in black and white to PostScript printer"))) -(define-key menu-bar-file-menu [ps-print-region-faces] - `(menu-item ,(purecopy "Postscript Print Region") ps-print-region-with-faces - :enable mark-active - :help ,(purecopy "Pretty-print marked region to PostScript printer"))) -(define-key menu-bar-file-menu [ps-print-buffer-faces] - `(menu-item ,(purecopy "Postscript Print Buffer") ps-print-buffer-with-faces - :enable (menu-bar-menu-frame-live-and-visible-p) - :help ,(purecopy "Pretty-print current buffer to PostScript printer"))) -(define-key menu-bar-file-menu [print-region] - `(menu-item ,(purecopy "Print Region") print-region - :enable mark-active - :help ,(purecopy "Print region between mark and current position"))) -(define-key menu-bar-file-menu [print-buffer] - `(menu-item ,(purecopy "Print Buffer") print-buffer - :enable (menu-bar-menu-frame-live-and-visible-p) - :help ,(purecopy "Print current buffer with page headings"))) - -(define-key menu-bar-file-menu [separator-print] - menu-bar-separator) - -(define-key menu-bar-file-menu [recover-session] - `(menu-item ,(purecopy "Recover Crashed Session") recover-session - :enable (and auto-save-list-file-prefix - (file-directory-p - (file-name-directory auto-save-list-file-prefix)) - (directory-files - (file-name-directory auto-save-list-file-prefix) - nil - (concat "\\`" - (regexp-quote - (file-name-nondirectory - auto-save-list-file-prefix))) - t)) - :help ,(purecopy "Recover edits from a crashed session"))) -(define-key menu-bar-file-menu [revert-buffer] - `(menu-item ,(purecopy "Revert Buffer") revert-buffer - :enable (or revert-buffer-function - revert-buffer-insert-file-contents-function - (and buffer-file-number - (or (buffer-modified-p) - (not (verify-visited-file-modtime - (current-buffer)))))) - :help ,(purecopy "Re-read current buffer from its file"))) -(define-key menu-bar-file-menu [write-file] - `(menu-item ,(purecopy "Save As...") write-file - :enable (and (menu-bar-menu-frame-live-and-visible-p) - (menu-bar-non-minibuffer-window-p)) - :help ,(purecopy "Write current buffer to another file"))) -(define-key menu-bar-file-menu [save-buffer] - `(menu-item ,(purecopy "Save") save-buffer - :enable (and (buffer-modified-p) - (buffer-file-name) - (menu-bar-non-minibuffer-window-p)) - :help ,(purecopy "Save current buffer to its file"))) - -(define-key menu-bar-file-menu [separator-save] - menu-bar-separator) + (define-key menu [separator-exit] + menu-bar-separator) + + ;; Don't use delete-frame as event name because that is a special + ;; event. + (define-key menu [delete-this-frame] + `(menu-item ,(purecopy "Delete Frame") delete-frame + :visible (fboundp 'delete-frame) + :enable (delete-frame-enabled-p) + :help ,(purecopy "Delete currently selected frame"))) + (define-key menu [make-frame-on-display] + `(menu-item ,(purecopy "New Frame on Display...") make-frame-on-display + :visible (fboundp 'make-frame-on-display) + :help ,(purecopy "Open a new frame on another display"))) + (define-key menu [make-frame] + `(menu-item ,(purecopy "New Frame") make-frame-command + :visible (fboundp 'make-frame-command) + :help ,(purecopy "Open a new frame"))) + + (define-key menu [one-window] + `(menu-item ,(purecopy "Remove Splits") delete-other-windows + :enable (not (one-window-p t nil)) + :help ,(purecopy + "Selected window grows to fill the whole frame"))) + + (define-key menu [split-window] + `(menu-item ,(purecopy "Split Window") split-window-vertically + :enable (and (menu-bar-menu-frame-live-and-visible-p) + (menu-bar-non-minibuffer-window-p)) + :help ,(purecopy "Split selected window in two windows"))) + + (define-key menu [separator-window] + menu-bar-separator) + + (define-key menu [ps-print-region] + `(menu-item ,(purecopy "Postscript Print Region (B+W)") ps-print-region + :enable mark-active + :help ,(purecopy "Pretty-print marked region in black and white to PostScript printer"))) + (define-key menu [ps-print-buffer] + `(menu-item ,(purecopy "Postscript Print Buffer (B+W)") ps-print-buffer + :enable (menu-bar-menu-frame-live-and-visible-p) + :help ,(purecopy "Pretty-print current buffer in black and white to PostScript printer"))) + (define-key menu [ps-print-region-faces] + `(menu-item ,(purecopy "Postscript Print Region") + ps-print-region-with-faces + :enable mark-active + :help ,(purecopy + "Pretty-print marked region to PostScript printer"))) + (define-key menu [ps-print-buffer-faces] + `(menu-item ,(purecopy "Postscript Print Buffer") + ps-print-buffer-with-faces + :enable (menu-bar-menu-frame-live-and-visible-p) + :help ,(purecopy "Pretty-print current buffer to PostScript printer"))) + (define-key menu [print-region] + `(menu-item ,(purecopy "Print Region") print-region + :enable mark-active + :help ,(purecopy "Print region between mark and current position"))) + (define-key menu [print-buffer] + `(menu-item ,(purecopy "Print Buffer") print-buffer + :enable (menu-bar-menu-frame-live-and-visible-p) + :help ,(purecopy "Print current buffer with page headings"))) + + (define-key menu [separator-print] + menu-bar-separator) + + (define-key menu [recover-session] + `(menu-item ,(purecopy "Recover Crashed Session") recover-session + :enable + (and auto-save-list-file-prefix + (file-directory-p + (file-name-directory auto-save-list-file-prefix)) + (directory-files + (file-name-directory auto-save-list-file-prefix) + nil + (concat "\\`" + (regexp-quote + (file-name-nondirectory + auto-save-list-file-prefix))) + t)) + :help ,(purecopy "Recover edits from a crashed session"))) + (define-key menu [revert-buffer] + `(menu-item ,(purecopy "Revert Buffer") revert-buffer + :enable (or revert-buffer-function + revert-buffer-insert-file-contents-function + (and buffer-file-number + (or (buffer-modified-p) + (not (verify-visited-file-modtime + (current-buffer)))))) + :help ,(purecopy "Re-read current buffer from its file"))) + (define-key menu [write-file] + `(menu-item ,(purecopy "Save As...") write-file + :enable (and (menu-bar-menu-frame-live-and-visible-p) + (menu-bar-non-minibuffer-window-p)) + :help ,(purecopy "Write current buffer to another file"))) + (define-key menu [save-buffer] + `(menu-item ,(purecopy "Save") save-buffer + :enable (and (buffer-modified-p) + (buffer-file-name) + (menu-bar-non-minibuffer-window-p)) + :help ,(purecopy "Save current buffer to its file"))) + + (define-key menu [separator-save] + menu-bar-separator) + + + (define-key menu [kill-buffer] + `(menu-item ,(purecopy "Close") kill-this-buffer + :enable (kill-this-buffer-enabled-p) + :help ,(purecopy "Discard (kill) current buffer"))) + (define-key menu [insert-file] + `(menu-item ,(purecopy "Insert File...") insert-file + :enable (menu-bar-non-minibuffer-window-p) + :help ,(purecopy "Insert another file into current buffer"))) + (define-key menu [dired] + `(menu-item ,(purecopy "Open Directory...") dired + :enable (menu-bar-non-minibuffer-window-p) + :help ,(purecopy + "Read a directory, to operate on its files"))) + (define-key menu [open-file] + `(menu-item ,(purecopy "Open File...") menu-find-file-existing + :enable (menu-bar-non-minibuffer-window-p) + :help ,(purecopy + "Read an existing file into an Emacs buffer"))) + (define-key menu [new-file] + `(menu-item ,(purecopy "Visit New File...") find-file + :enable (menu-bar-non-minibuffer-window-p) + :help ,(purecopy + "Specify a new file's name, to edit the file"))) + + menu)) (defun menu-find-file-existing () "Edit the existing file FILENAME." @@ -206,31 +214,6 @@ (find-file-existing filename) (find-file filename)))) - -(define-key menu-bar-file-menu [kill-buffer] - `(menu-item ,(purecopy "Close") kill-this-buffer - :enable (kill-this-buffer-enabled-p) - :help ,(purecopy "Discard (kill) current buffer"))) -(define-key menu-bar-file-menu [insert-file] - `(menu-item ,(purecopy "Insert File...") insert-file - :enable (menu-bar-non-minibuffer-window-p) - :help ,(purecopy "Insert another file into current buffer"))) -(define-key menu-bar-file-menu [dired] - `(menu-item ,(purecopy "Open Directory...") dired - :enable (menu-bar-non-minibuffer-window-p) - :help ,(purecopy "Read a directory, to operate on its files"))) -(define-key menu-bar-file-menu [open-file] - `(menu-item ,(purecopy "Open File...") menu-find-file-existing - :enable (menu-bar-non-minibuffer-window-p) - :help ,(purecopy "Read an existing file into an Emacs buffer"))) -(define-key menu-bar-file-menu [new-file] - `(menu-item ,(purecopy "Visit New File...") find-file - :enable (menu-bar-non-minibuffer-window-p) - :help ,(purecopy "Specify a new file's name, to edit the file"))) - - -;; The "Edit" menu items - ;; The "Edit->Search" submenu (defvar menu-bar-last-search-type nil "Type of last non-incremental search command called from the menu.") @@ -297,131 +280,253 @@ (isearch-update-ring string t) (re-search-backward string))) -(defvar menu-bar-search-menu (make-sparse-keymap "Search")) - ;; The Edit->Search->Incremental Search menu (defvar menu-bar-i-search-menu - (make-sparse-keymap "Incremental Search")) - -(define-key menu-bar-i-search-menu [isearch-backward-regexp] - `(menu-item ,(purecopy "Backward Regexp...") isearch-backward-regexp - :help ,(purecopy "Search backwards for a regular expression as you type it"))) -(define-key menu-bar-i-search-menu [isearch-forward-regexp] - `(menu-item ,(purecopy "Forward Regexp...") isearch-forward-regexp - :help ,(purecopy "Search forward for a regular expression as you type it"))) -(define-key menu-bar-i-search-menu [isearch-backward] - `(menu-item ,(purecopy "Backward String...") isearch-backward - :help ,(purecopy "Search backwards for a string as you type it"))) -(define-key menu-bar-i-search-menu [isearch-forward] - `(menu-item ,(purecopy "Forward String...") isearch-forward - :help ,(purecopy "Search forward for a string as you type it"))) - -(define-key menu-bar-search-menu [i-search] - `(menu-item ,(purecopy "Incremental Search") ,menu-bar-i-search-menu)) -(define-key menu-bar-search-menu [separator-tag-isearch] - menu-bar-separator) - -(define-key menu-bar-search-menu [tags-continue] - `(menu-item ,(purecopy "Continue Tags Search") tags-loop-continue - :help ,(purecopy "Continue last tags search operation"))) -(define-key menu-bar-search-menu [tags-srch] - `(menu-item ,(purecopy "Search Tagged Files...") tags-search - :help ,(purecopy "Search for a regexp in all tagged files"))) -(define-key menu-bar-search-menu [separator-tag-search] - menu-bar-separator) - -(define-key menu-bar-search-menu [repeat-search-back] - `(menu-item ,(purecopy "Repeat Backwards") nonincremental-repeat-search-backward - :enable (or (and (eq menu-bar-last-search-type 'string) - search-ring) - (and (eq menu-bar-last-search-type 'regexp) - regexp-search-ring)) - :help ,(purecopy "Repeat last search backwards"))) -(define-key menu-bar-search-menu [repeat-search-fwd] - `(menu-item ,(purecopy "Repeat Forward") nonincremental-repeat-search-forward - :enable (or (and (eq menu-bar-last-search-type 'string) - search-ring) - (and (eq menu-bar-last-search-type 'regexp) - regexp-search-ring)) - :help ,(purecopy "Repeat last search forward"))) -(define-key menu-bar-search-menu [separator-repeat-search] - menu-bar-separator) - -(define-key menu-bar-search-menu [re-search-backward] - `(menu-item ,(purecopy "Regexp Backwards...") nonincremental-re-search-backward - :help ,(purecopy "Search backwards for a regular expression"))) -(define-key menu-bar-search-menu [re-search-forward] - `(menu-item ,(purecopy "Regexp Forward...") nonincremental-re-search-forward - :help ,(purecopy "Search forward for a regular expression"))) - -(define-key menu-bar-search-menu [search-backward] - `(menu-item ,(purecopy "String Backwards...") nonincremental-search-backward - :help ,(purecopy "Search backwards for a string"))) -(define-key menu-bar-search-menu [search-forward] - `(menu-item ,(purecopy "String Forward...") nonincremental-search-forward - :help ,(purecopy "Search forward for a string"))) + (let ((menu (make-sparse-keymap "Incremental Search"))) + (define-key menu [isearch-backward-regexp] + `(menu-item ,(purecopy "Backward Regexp...") isearch-backward-regexp + :help ,(purecopy + "Search backwards for a regular expression as you type it"))) + (define-key menu [isearch-forward-regexp] + `(menu-item ,(purecopy "Forward Regexp...") isearch-forward-regexp + :help ,(purecopy + "Search forward for a regular expression as you type it"))) + (define-key menu [isearch-backward] + `(menu-item ,(purecopy "Backward String...") isearch-backward + :help ,(purecopy "Search backwards for a string as you type it"))) + (define-key menu [isearch-forward] + `(menu-item ,(purecopy "Forward String...") isearch-forward + :help ,(purecopy "Search forward for a string as you type it"))) + menu)) + +(defvar menu-bar-search-menu + (let ((menu (make-sparse-keymap "Search"))) + + (define-key menu [i-search] + `(menu-item ,(purecopy "Incremental Search") ,menu-bar-i-search-menu)) + (define-key menu [separator-tag-isearch] + menu-bar-separator) + + (define-key menu [tags-continue] + `(menu-item ,(purecopy "Continue Tags Search") tags-loop-continue + :help ,(purecopy "Continue last tags search operation"))) + (define-key menu [tags-srch] + `(menu-item ,(purecopy "Search Tagged Files...") tags-search + :help ,(purecopy "Search for a regexp in all tagged files"))) + (define-key menu [separator-tag-search] menu-bar-separator) + + (define-key menu [repeat-search-back] + `(menu-item ,(purecopy "Repeat Backwards") + nonincremental-repeat-search-backward + :enable (or (and (eq menu-bar-last-search-type 'string) + search-ring) + (and (eq menu-bar-last-search-type 'regexp) + regexp-search-ring)) + :help ,(purecopy "Repeat last search backwards"))) + (define-key menu [repeat-search-fwd] + `(menu-item ,(purecopy "Repeat Forward") + nonincremental-repeat-search-forward + :enable (or (and (eq menu-bar-last-search-type 'string) + search-ring) + (and (eq menu-bar-last-search-type 'regexp) + regexp-search-ring)) + :help ,(purecopy "Repeat last search forward"))) + (define-key menu [separator-repeat-search] + menu-bar-separator) + + (define-key menu [re-search-backward] + `(menu-item ,(purecopy "Regexp Backwards...") + nonincremental-re-search-backward + :help ,(purecopy + "Search backwards for a regular expression"))) + (define-key menu [re-search-forward] + `(menu-item ,(purecopy "Regexp Forward...") + nonincremental-re-search-forward + :help ,(purecopy "Search forward for a regular expression"))) + + (define-key menu [search-backward] + `(menu-item ,(purecopy "String Backwards...") + nonincremental-search-backward + :help ,(purecopy "Search backwards for a string"))) + (define-key menu [search-forward] + `(menu-item ,(purecopy "String Forward...") nonincremental-search-forward + :help ,(purecopy "Search forward for a string"))) + menu)) ;; The Edit->Replace submenu -(defvar menu-bar-replace-menu (make-sparse-keymap "Replace")) - -(define-key menu-bar-replace-menu [tags-repl-continue] - `(menu-item ,(purecopy "Continue Replace") tags-loop-continue - :help ,(purecopy "Continue last tags replace operation"))) -(define-key menu-bar-replace-menu [tags-repl] - `(menu-item ,(purecopy "Replace in Tagged Files...") tags-query-replace - :help ,(purecopy "Interactively replace a regexp in all tagged files"))) -(define-key menu-bar-replace-menu [separator-replace-tags] - menu-bar-separator) - -(define-key menu-bar-replace-menu [query-replace-regexp] - `(menu-item ,(purecopy "Replace Regexp...") query-replace-regexp - :enable (not buffer-read-only) - :help ,(purecopy "Replace regular expression interactively, ask about each occurrence"))) -(define-key menu-bar-replace-menu [query-replace] - `(menu-item ,(purecopy "Replace String...") query-replace - :enable (not buffer-read-only) - :help ,(purecopy "Replace string interactively, ask about each occurrence"))) +(defvar menu-bar-replace-menu + (let ((menu (make-sparse-keymap "Replace"))) + (define-key menu [tags-repl-continue] + `(menu-item ,(purecopy "Continue Replace") tags-loop-continue + :help ,(purecopy "Continue last tags replace operation"))) + (define-key menu [tags-repl] + `(menu-item ,(purecopy "Replace in Tagged Files...") tags-query-replace + :help ,(purecopy + "Interactively replace a regexp in all tagged files"))) + (define-key menu [separator-replace-tags] + menu-bar-separator) + + (define-key menu [query-replace-regexp] + `(menu-item ,(purecopy "Replace Regexp...") query-replace-regexp + :enable (not buffer-read-only) + :help ,(purecopy "Replace regular expression interactively, ask about each occurrence"))) + (define-key menu [query-replace] + `(menu-item ,(purecopy "Replace String...") query-replace + :enable (not buffer-read-only) + :help ,(purecopy + "Replace string interactively, ask about each occurrence"))) + menu)) ;;; Assemble the top-level Edit menu items. -(define-key menu-bar-edit-menu [props] - `(menu-item ,(purecopy "Text Properties") facemenu-menu)) - -;; ns-win.el said: Add spell for platorm consistency. -(if (featurep 'ns) - (define-key menu-bar-edit-menu [spell] - `(menu-item ,(purecopy "Spell") ispell-menu-map))) - -(define-key menu-bar-edit-menu [fill] - `(menu-item ,(purecopy "Fill") fill-region - :enable (and mark-active (not buffer-read-only)) - :help - ,(purecopy "Fill text in region to fit between left and right margin"))) - -(define-key menu-bar-edit-menu [separator-bookmark] - menu-bar-separator) - -(define-key menu-bar-edit-menu [bookmark] - `(menu-item ,(purecopy "Bookmarks") menu-bar-bookmark-map)) +(defvar menu-bar-goto-menu + (let ((menu (make-sparse-keymap "Go To"))) + + (define-key menu [set-tags-name] + `(menu-item ,(purecopy "Set Tags File Name...") visit-tags-table + :help ,(purecopy "Tell Tags commands which tag table file to use"))) + + (define-key menu [separator-tag-file] + menu-bar-separator) + + (define-key menu [apropos-tags] + `(menu-item ,(purecopy "Tags Apropos...") tags-apropos + :help ,(purecopy "Find function/variables whose names match regexp"))) + (define-key menu [next-tag-otherw] + `(menu-item ,(purecopy "Next Tag in Other Window") + menu-bar-next-tag-other-window + :enable (and (boundp 'tags-location-ring) + (not (ring-empty-p tags-location-ring))) + :help ,(purecopy "Find next function/variable matching last tag name in another window"))) + + (define-key menu [next-tag] + `(menu-item ,(purecopy "Find Next Tag") + menu-bar-next-tag + :enable (and (boundp 'tags-location-ring) + (not (ring-empty-p tags-location-ring))) + :help ,(purecopy "Find next function/variable matching last tag name"))) + (define-key menu [find-tag-otherw] + `(menu-item ,(purecopy "Find Tag in Other Window...") find-tag-other-window + :help ,(purecopy "Find function/variable definition in another window"))) + (define-key menu [find-tag] + `(menu-item ,(purecopy "Find Tag...") find-tag + :help ,(purecopy "Find definition of function or variable"))) + + (define-key menu [separator-tags] + menu-bar-separator) + + (define-key menu [end-of-buf] + `(menu-item ,(purecopy "Goto End of Buffer") end-of-buffer)) + (define-key menu [beg-of-buf] + `(menu-item ,(purecopy "Goto Beginning of Buffer") beginning-of-buffer)) + (define-key menu [go-to-pos] + `(menu-item ,(purecopy "Goto Buffer Position...") goto-char + :help ,(purecopy "Read a number N and go to buffer position N"))) + (define-key menu [go-to-line] + `(menu-item ,(purecopy "Goto Line...") goto-line + :help ,(purecopy "Read a line number and go to that line"))) + menu)) -(defvar menu-bar-goto-menu (make-sparse-keymap "Go To")) -(define-key menu-bar-goto-menu [set-tags-name] - `(menu-item ,(purecopy "Set Tags File Name...") visit-tags-table - :help ,(purecopy "Tell Tags commands which tag table file to use"))) - -(define-key menu-bar-goto-menu [separator-tag-file] - menu-bar-separator) +(defvar yank-menu (cons (purecopy "Select Yank") nil)) +(fset 'yank-menu (cons 'keymap yank-menu)) -(define-key menu-bar-goto-menu [apropos-tags] - `(menu-item ,(purecopy "Tags Apropos...") tags-apropos - :help ,(purecopy "Find function/variables whose names match regexp"))) -(define-key menu-bar-goto-menu [next-tag-otherw] - `(menu-item ,(purecopy "Next Tag in Other Window") - menu-bar-next-tag-other-window - :enable (and (boundp 'tags-location-ring) - (not (ring-empty-p tags-location-ring))) - :help ,(purecopy "Find next function/variable matching last tag name in another window"))) +(defvar menu-bar-edit-menu + (let ((menu (make-sparse-keymap "Edit"))) + + (define-key menu [props] + `(menu-item ,(purecopy "Text Properties") facemenu-menu)) + + ;; ns-win.el said: Add spell for platorm consistency. + (if (featurep 'ns) + (define-key menu [spell] + `(menu-item ,(purecopy "Spell") ispell-menu-map))) + + (define-key menu [fill] + `(menu-item ,(purecopy "Fill") fill-region + :enable (and mark-active (not buffer-read-only)) + :help + ,(purecopy "Fill text in region to fit between left and right margin"))) + + (define-key menu [separator-bookmark] + menu-bar-separator) + + (define-key menu [bookmark] + `(menu-item ,(purecopy "Bookmarks") menu-bar-bookmark-map)) + + (define-key menu [goto] + `(menu-item ,(purecopy "Go To") ,menu-bar-goto-menu)) + + (define-key menu [replace] + `(menu-item ,(purecopy "Replace") ,menu-bar-replace-menu)) + + (define-key menu [search] + `(menu-item ,(purecopy "Search") ,menu-bar-search-menu)) + + (define-key menu [separator-search] + menu-bar-separator) + + (define-key menu [mark-whole-buffer] + `(menu-item ,(purecopy "Select All") mark-whole-buffer + :help ,(purecopy "Mark the whole buffer for a subsequent cut/copy"))) + (define-key menu [clear] + `(menu-item ,(purecopy "Clear") delete-region + :enable (and mark-active + (not buffer-read-only)) + :help + ,(purecopy "Delete the text in region between mark and current position"))) + + + (define-key menu (if (featurep 'ns) [select-paste] + [paste-from-menu]) + ;; ns-win.el said: Change text to be more consistent with + ;; surrounding menu items `paste', etc." + `(menu-item ,(purecopy (if (featurep 'ns) "Select and Paste" + "Paste from Kill Menu")) yank-menu + :enable (and (cdr yank-menu) (not buffer-read-only)) + :help ,(purecopy "Choose a string from the kill ring and paste it"))) + (define-key menu [paste] + `(menu-item ,(purecopy "Paste") yank + :enable (and (or + ;; Emacs compiled --without-x (or --with-ns) + ;; doesn't have x-selection-exists-p. + (and (fboundp 'x-selection-exists-p) + (x-selection-exists-p 'CLIPBOARD)) + (if (featurep 'ns) ; like paste-from-menu + (cdr yank-menu) + kill-ring)) + (not buffer-read-only)) + :help ,(purecopy "Paste (yank) text most recently cut/copied"))) + (define-key menu [copy] + ;; ns-win.el said: Substitute a Copy function that works better + ;; under X (for GNUstep). + `(menu-item ,(purecopy "Copy") ,(if (featurep 'ns) + 'ns-copy-including-secondary + 'kill-ring-save) + :enable mark-active + :help ,(purecopy "Copy text in region between mark and current position") + :keys ,(purecopy (if (featurep 'ns) + "\\[ns-copy-including-secondary]" + "\\[kill-ring-save]")))) + (define-key menu [cut] + `(menu-item ,(purecopy "Cut") kill-region + :enable (and mark-active (not buffer-read-only)) + :help + ,(purecopy "Cut (kill) text in region between mark and current position"))) + ;; ns-win.el said: Separate undo from cut/paste section. + (if (featurep 'ns) + (define-key menu [separator-undo] menu-bar-separator)) + + (define-key menu [undo] + `(menu-item ,(purecopy "Undo") undo + :enable (and (not buffer-read-only) + (not (eq t buffer-undo-list)) + (if (eq last-command 'undo) + (listp pending-undo-list) + (consp buffer-undo-list))) + :help ,(purecopy "Undo last operation"))) + + menu)) (defun menu-bar-next-tag-other-window () "Find the next definition of the tag already specified." @@ -433,105 +538,6 @@ (interactive) (find-tag nil t)) -(define-key menu-bar-goto-menu [next-tag] - `(menu-item ,(purecopy "Find Next Tag") - menu-bar-next-tag - :enable (and (boundp 'tags-location-ring) - (not (ring-empty-p tags-location-ring))) - :help ,(purecopy "Find next function/variable matching last tag name"))) -(define-key menu-bar-goto-menu [find-tag-otherw] - `(menu-item ,(purecopy "Find Tag in Other Window...") find-tag-other-window - :help ,(purecopy "Find function/variable definition in another window"))) -(define-key menu-bar-goto-menu [find-tag] - `(menu-item ,(purecopy "Find Tag...") find-tag - :help ,(purecopy "Find definition of function or variable"))) - -(define-key menu-bar-goto-menu [separator-tags] - menu-bar-separator) - -(define-key menu-bar-goto-menu [end-of-buf] - `(menu-item ,(purecopy "Goto End of Buffer") end-of-buffer)) -(define-key menu-bar-goto-menu [beg-of-buf] - `(menu-item ,(purecopy "Goto Beginning of Buffer") beginning-of-buffer)) -(define-key menu-bar-goto-menu [go-to-pos] - `(menu-item ,(purecopy "Goto Buffer Position...") goto-char - :help ,(purecopy "Read a number N and go to buffer position N"))) -(define-key menu-bar-goto-menu [go-to-line] - `(menu-item ,(purecopy "Goto Line...") goto-line - :help ,(purecopy "Read a line number and go to that line"))) - -(define-key menu-bar-edit-menu [goto] - `(menu-item ,(purecopy "Go To") ,menu-bar-goto-menu)) - -(define-key menu-bar-edit-menu [replace] - `(menu-item ,(purecopy "Replace") ,menu-bar-replace-menu)) - -(define-key menu-bar-edit-menu [search] - `(menu-item ,(purecopy "Search") ,menu-bar-search-menu)) - -(define-key menu-bar-edit-menu [separator-search] - menu-bar-separator) - -(define-key menu-bar-edit-menu [mark-whole-buffer] - `(menu-item ,(purecopy "Select All") mark-whole-buffer - :help ,(purecopy "Mark the whole buffer for a subsequent cut/copy"))) -(define-key menu-bar-edit-menu [clear] - `(menu-item ,(purecopy "Clear") delete-region - :enable (and mark-active - (not buffer-read-only)) - :help - ,(purecopy "Delete the text in region between mark and current position"))) -(defvar yank-menu (cons (purecopy "Select Yank") nil)) -(fset 'yank-menu (cons 'keymap yank-menu)) -(define-key menu-bar-edit-menu (if (featurep 'ns) [select-paste] - [paste-from-menu]) - ;; ns-win.el said: Change text to be more consistent with - ;; surrounding menu items `paste', etc." - `(menu-item ,(purecopy (if (featurep 'ns) "Select and Paste" - "Paste from Kill Menu")) yank-menu - :enable (and (cdr yank-menu) (not buffer-read-only)) - :help ,(purecopy "Choose a string from the kill ring and paste it"))) -(define-key menu-bar-edit-menu [paste] - `(menu-item ,(purecopy "Paste") yank - :enable (and (or - ;; Emacs compiled --without-x (or --with-ns) - ;; doesn't have x-selection-exists-p. - (and (fboundp 'x-selection-exists-p) - (x-selection-exists-p 'CLIPBOARD)) - (if (featurep 'ns) ; like paste-from-menu - (cdr yank-menu) - kill-ring)) - (not buffer-read-only)) - :help ,(purecopy "Paste (yank) text most recently cut/copied"))) -(define-key menu-bar-edit-menu [copy] - ;; ns-win.el said: Substitute a Copy function that works better - ;; under X (for GNUstep). - `(menu-item ,(purecopy "Copy") ,(if (featurep 'ns) - 'ns-copy-including-secondary - 'kill-ring-save) - :enable mark-active - :help ,(purecopy "Copy text in region between mark and current position") - :keys ,(purecopy (if (featurep 'ns) - "\\[ns-copy-including-secondary]" - "\\[kill-ring-save]")))) -(define-key menu-bar-edit-menu [cut] - `(menu-item ,(purecopy "Cut") kill-region - :enable (and mark-active (not buffer-read-only)) - :help - ,(purecopy "Cut (kill) text in region between mark and current position"))) -;; ns-win.el said: Separate undo from cut/paste section. -(if (featurep 'ns) - (define-key menu-bar-edit-menu [separator-undo] menu-bar-separator)) - -(define-key menu-bar-edit-menu [undo] - `(menu-item ,(purecopy "Undo") undo - :enable (and (not buffer-read-only) - (not (eq t buffer-undo-list)) - (if (eq last-command 'undo) - (listp pending-undo-list) - (consp buffer-undo-list))) - :help ,(purecopy "Undo last operation"))) - (define-obsolete-function-alias 'menu-bar-kill-ring-save 'kill-ring-save "24.1") @@ -581,48 +587,49 @@ Do the same for the keys of the same name." ;; The "Options" menu items -(defvar menu-bar-custom-menu (make-sparse-keymap "Customize")) - -(define-key menu-bar-custom-menu [customize-apropos-faces] - `(menu-item ,(purecopy "Faces Matching...") customize-apropos-faces - :help ,(purecopy "Browse faces matching a regexp or word list"))) -(define-key menu-bar-custom-menu [customize-apropos-options] - `(menu-item ,(purecopy "Options Matching...") customize-apropos-options - :help ,(purecopy "Browse options matching a regexp or word list"))) -(define-key menu-bar-custom-menu [customize-apropos] - `(menu-item ,(purecopy "All Settings Matching...") customize-apropos - :help ,(purecopy "Browse customizable settings matching a regexp or word list"))) -(define-key menu-bar-custom-menu [separator-1] - menu-bar-separator) -(define-key menu-bar-custom-menu [customize-group] - `(menu-item ,(purecopy "Specific Group...") customize-group - :help ,(purecopy "Customize settings of specific group"))) -(define-key menu-bar-custom-menu [customize-face] - `(menu-item ,(purecopy "Specific Face...") customize-face - :help ,(purecopy "Customize attributes of specific face"))) -(define-key menu-bar-custom-menu [customize-option] - `(menu-item ,(purecopy "Specific Option...") customize-option - :help ,(purecopy "Customize value of specific option"))) -(define-key menu-bar-custom-menu [separator-2] - menu-bar-separator) -(define-key menu-bar-custom-menu [customize-changed-options] - `(menu-item ,(purecopy "New Options...") customize-changed-options - :help ,(purecopy "Options added or changed in recent Emacs versions"))) -(define-key menu-bar-custom-menu [customize-saved] - `(menu-item ,(purecopy "Saved Options") customize-saved - :help ,(purecopy "Customize previously saved options"))) -(define-key menu-bar-custom-menu [separator-3] - menu-bar-separator) -(define-key menu-bar-custom-menu [customize-browse] - `(menu-item ,(purecopy "Browse Customization Groups") customize-browse - :help ,(purecopy "Browse all customization groups"))) -(define-key menu-bar-custom-menu [customize] - `(menu-item ,(purecopy "Top-level Customization Group") customize - :help ,(purecopy "The master group called `Emacs'"))) -(define-key menu-bar-custom-menu [customize-themes] - `(menu-item ,(purecopy "Custom Themes") customize-themes - :help ,(purecopy "Choose a pre-defined customization theme"))) - +(defvar menu-bar-custom-menu + (let ((menu (make-sparse-keymap "Customize"))) + + (define-key menu [customize-apropos-faces] + `(menu-item ,(purecopy "Faces Matching...") customize-apropos-faces + :help ,(purecopy "Browse faces matching a regexp or word list"))) + (define-key menu [customize-apropos-options] + `(menu-item ,(purecopy "Options Matching...") customize-apropos-options + :help ,(purecopy "Browse options matching a regexp or word list"))) + (define-key menu [customize-apropos] + `(menu-item ,(purecopy "All Settings Matching...") customize-apropos + :help ,(purecopy "Browse customizable settings matching a regexp or word list"))) + (define-key menu [separator-1] + menu-bar-separator) + (define-key menu [customize-group] + `(menu-item ,(purecopy "Specific Group...") customize-group + :help ,(purecopy "Customize settings of specific group"))) + (define-key menu [customize-face] + `(menu-item ,(purecopy "Specific Face...") customize-face + :help ,(purecopy "Customize attributes of specific face"))) + (define-key menu [customize-option] + `(menu-item ,(purecopy "Specific Option...") customize-option + :help ,(purecopy "Customize value of specific option"))) + (define-key menu [separator-2] + menu-bar-separator) + (define-key menu [customize-changed-options] + `(menu-item ,(purecopy "New Options...") customize-changed-options + :help ,(purecopy "Options added or changed in recent Emacs versions"))) + (define-key menu [customize-saved] + `(menu-item ,(purecopy "Saved Options") customize-saved + :help ,(purecopy "Customize previously saved options"))) + (define-key menu [separator-3] + menu-bar-separator) + (define-key menu [customize-browse] + `(menu-item ,(purecopy "Browse Customization Groups") customize-browse + :help ,(purecopy "Browse all customization groups"))) + (define-key menu [customize] + `(menu-item ,(purecopy "Top-level Customization Group") customize + :help ,(purecopy "The master group called `Emacs'"))) + (define-key menu [customize-themes] + `(menu-item ,(purecopy "Custom Themes") customize-themes + :help ,(purecopy "Choose a pre-defined customization theme"))) + menu)) ;(defvar menu-bar-preferences-menu (make-sparse-keymap "Preferences")) (defmacro menu-bar-make-mm-toggle (fname doc help &optional props) @@ -692,12 +699,6 @@ by \"Save Options\" in Custom buffers.") (custom-push-theme 'theme-face 'default 'user 'set spec) (put 'default 'face-modified nil)))) - - -;;; Assemble all the top-level items of the "Options" menu -(define-key menu-bar-options-menu [customize] - `(menu-item ,(purecopy "Customize Emacs") ,menu-bar-custom-menu)) - (defun menu-bar-options-save () "Save current values of Options menu items using Custom." (interactive) @@ -745,276 +746,204 @@ by \"Save Options\" in Custom buffers.") (when need-save (custom-save-all)))) -(define-key menu-bar-options-menu [package] - '(menu-item "Manage Emacs Packages" package-list-packages - :help "Install or uninstall additional Emacs packages")) - -(define-key menu-bar-options-menu [save] - `(menu-item ,(purecopy "Save Options") menu-bar-options-save - :help ,(purecopy "Save options set from the menu above"))) - -(define-key menu-bar-options-menu [custom-separator] - menu-bar-separator) - -(define-key menu-bar-options-menu [menu-set-font] - `(menu-item ,(purecopy "Set Default Font...") menu-set-font - :visible (display-multi-font-p) - :help ,(purecopy "Select a default font"))) - -(if (featurep 'system-font-setting) - (define-key menu-bar-options-menu [menu-system-font] - (menu-bar-make-toggle toggle-use-system-font font-use-system-font - "Use system font" - "Use system font: %s" - "Use the monospaced font defined by the system"))) +;;; Assemble all the top-level items of the "Options" menu ;; The "Show/Hide" submenu of menu "Options" -(defvar menu-bar-showhide-menu (make-sparse-keymap "Show/Hide")) - -(define-key menu-bar-showhide-menu [column-number-mode] - (menu-bar-make-mm-toggle column-number-mode - "Column Numbers" - "Show the current column number in the mode line")) - -(define-key menu-bar-showhide-menu [line-number-mode] - (menu-bar-make-mm-toggle line-number-mode - "Line Numbers" - "Show the current line number in the mode line")) - -(define-key menu-bar-showhide-menu [size-indication-mode] - (menu-bar-make-mm-toggle size-indication-mode - "Size Indication" - "Show the size of the buffer in the mode line")) - -(define-key menu-bar-showhide-menu [linecolumn-separator] - menu-bar-separator) - -(define-key menu-bar-showhide-menu [showhide-battery] - (menu-bar-make-mm-toggle display-battery-mode - "Battery Status" - "Display battery status information in mode line")) - -(define-key menu-bar-showhide-menu [showhide-date-time] - (menu-bar-make-mm-toggle display-time-mode - "Time, Load and Mail" - "Display time, system load averages and \ -mail status in mode line")) - -(define-key menu-bar-showhide-menu [datetime-separator] - menu-bar-separator) - -(define-key menu-bar-showhide-menu [showhide-speedbar] - `(menu-item ,(purecopy "Speedbar") speedbar-frame-mode - :help ,(purecopy "Display a Speedbar quick-navigation frame") - :button (:toggle - . (and (boundp 'speedbar-frame) - (frame-live-p (symbol-value 'speedbar-frame)) - (frame-visible-p - (symbol-value 'speedbar-frame)))))) - -(defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe")) - -(defvar menu-bar-showhide-fringe-ind-menu - (make-sparse-keymap "Buffer boundaries")) - (defun menu-bar-showhide-fringe-ind-customize () "Show customization buffer for `indicate-buffer-boundaries'." (interactive) (customize-variable 'indicate-buffer-boundaries)) -(define-key menu-bar-showhide-fringe-ind-menu [customize] - `(menu-item ,(purecopy "Other (Customize)") - menu-bar-showhide-fringe-ind-customize - :help ,(purecopy "Additional choices available through Custom buffer") - :visible (display-graphic-p) - :button (:radio . (not (member indicate-buffer-boundaries - '(nil left right - ((top . left) (bottom . right)) - ((t . right) (top . left)))))))) - (defun menu-bar-showhide-fringe-ind-mixed () "Display top and bottom indicators in opposite fringes, arrows in right." (interactive) (customize-set-variable 'indicate-buffer-boundaries '((t . right) (top . left)))) -(define-key menu-bar-showhide-fringe-ind-menu [mixed] - `(menu-item ,(purecopy "Opposite, Arrows Right") menu-bar-showhide-fringe-ind-mixed - :help - ,(purecopy "Show top/bottom indicators in opposite fringes, arrows in right") - :visible (display-graphic-p) - :button (:radio . (equal indicate-buffer-boundaries - '((t . right) (top . left)))))) - (defun menu-bar-showhide-fringe-ind-box () "Display top and bottom indicators in opposite fringes." (interactive) (customize-set-variable 'indicate-buffer-boundaries '((top . left) (bottom . right)))) -(define-key menu-bar-showhide-fringe-ind-menu [box] - `(menu-item ,(purecopy "Opposite, No Arrows") menu-bar-showhide-fringe-ind-box - :help ,(purecopy "Show top/bottom indicators in opposite fringes, no arrows") - :visible (display-graphic-p) - :button (:radio . (equal indicate-buffer-boundaries - '((top . left) (bottom . right)))))) - (defun menu-bar-showhide-fringe-ind-right () "Display buffer boundaries and arrows in the right fringe." (interactive) (customize-set-variable 'indicate-buffer-boundaries 'right)) -(define-key menu-bar-showhide-fringe-ind-menu [right] - `(menu-item ,(purecopy "In Right Fringe") menu-bar-showhide-fringe-ind-right - :help ,(purecopy "Show buffer boundaries and arrows in right fringe") - :visible (display-graphic-p) - :button (:radio . (eq indicate-buffer-boundaries 'right)))) - (defun menu-bar-showhide-fringe-ind-left () "Display buffer boundaries and arrows in the left fringe." (interactive) (customize-set-variable 'indicate-buffer-boundaries 'left)) -(define-key menu-bar-showhide-fringe-ind-menu [left] - `(menu-item ,(purecopy "In Left Fringe") menu-bar-showhide-fringe-ind-left - :help ,(purecopy "Show buffer boundaries and arrows in left fringe") - :visible (display-graphic-p) - :button (:radio . (eq indicate-buffer-boundaries 'left)))) - (defun menu-bar-showhide-fringe-ind-none () "Do not display any buffer boundary indicators." (interactive) (customize-set-variable 'indicate-buffer-boundaries nil)) -(define-key menu-bar-showhide-fringe-ind-menu [none] - `(menu-item ,(purecopy "No Indicators") menu-bar-showhide-fringe-ind-none - :help ,(purecopy "Hide all buffer boundary indicators and arrows") - :visible (display-graphic-p) - :button (:radio . (eq indicate-buffer-boundaries nil)))) - -(define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind] - `(menu-item ,(purecopy "Buffer Boundaries") ,menu-bar-showhide-fringe-ind-menu - :visible (display-graphic-p) - :help ,(purecopy "Indicate buffer boundaries in fringe"))) - -(define-key menu-bar-showhide-fringe-menu [indicate-empty-lines] - (menu-bar-make-toggle toggle-indicate-empty-lines indicate-empty-lines - "Empty Line Indicators" - "Indicating of empty lines %s" - "Indicate trailing empty lines in fringe, globally")) +(defvar menu-bar-showhide-fringe-ind-menu + (let ((menu (make-sparse-keymap "Buffer boundaries"))) + + (define-key menu [customize] + `(menu-item ,(purecopy "Other (Customize)") + menu-bar-showhide-fringe-ind-customize + :help ,(purecopy "Additional choices available through Custom buffer") + :visible (display-graphic-p) + :button (:radio . (not (member indicate-buffer-boundaries + '(nil left right + ((top . left) (bottom . right)) + ((t . right) (top . left)))))))) + + (define-key menu [mixed] + `(menu-item ,(purecopy "Opposite, Arrows Right") menu-bar-showhide-fringe-ind-mixed + :help + ,(purecopy "Show top/bottom indicators in opposite fringes, arrows in right") + :visible (display-graphic-p) + :button (:radio . (equal indicate-buffer-boundaries + '((t . right) (top . left)))))) + + (define-key menu [box] + `(menu-item ,(purecopy "Opposite, No Arrows") menu-bar-showhide-fringe-ind-box + :help ,(purecopy "Show top/bottom indicators in opposite fringes, no arrows") + :visible (display-graphic-p) + :button (:radio . (equal indicate-buffer-boundaries + '((top . left) (bottom . right)))))) + + (define-key menu [right] + `(menu-item ,(purecopy "In Right Fringe") menu-bar-showhide-fringe-ind-right + :help ,(purecopy "Show buffer boundaries and arrows in right fringe") + :visible (display-graphic-p) + :button (:radio . (eq indicate-buffer-boundaries 'right)))) + + (define-key menu [left] + `(menu-item ,(purecopy "In Left Fringe") menu-bar-showhide-fringe-ind-left + :help ,(purecopy "Show buffer boundaries and arrows in left fringe") + :visible (display-graphic-p) + :button (:radio . (eq indicate-buffer-boundaries 'left)))) + + (define-key menu [none] + `(menu-item ,(purecopy "No Indicators") menu-bar-showhide-fringe-ind-none + :help ,(purecopy "Hide all buffer boundary indicators and arrows") + :visible (display-graphic-p) + :button (:radio . (eq indicate-buffer-boundaries nil)))) + menu)) (defun menu-bar-showhide-fringe-menu-customize () "Show customization buffer for `fringe-mode'." (interactive) (customize-variable 'fringe-mode)) -(define-key menu-bar-showhide-fringe-menu [customize] - `(menu-item ,(purecopy "Customize Fringe") menu-bar-showhide-fringe-menu-customize - :help ,(purecopy "Detailed customization of fringe") - :visible (display-graphic-p))) - (defun menu-bar-showhide-fringe-menu-customize-reset () "Reset the fringe mode: display fringes on both sides of a window." (interactive) (customize-set-variable 'fringe-mode nil)) -(define-key menu-bar-showhide-fringe-menu [default] - `(menu-item ,(purecopy "Default") menu-bar-showhide-fringe-menu-customize-reset - :help ,(purecopy "Default width fringe on both left and right side") - :visible (display-graphic-p) - :button (:radio . (eq fringe-mode nil)))) - (defun menu-bar-showhide-fringe-menu-customize-right () "Display fringes only on the right of each window." (interactive) (require 'fringe) (customize-set-variable 'fringe-mode '(0 . nil))) -(define-key menu-bar-showhide-fringe-menu [right] - `(menu-item ,(purecopy "On the Right") menu-bar-showhide-fringe-menu-customize-right - :help ,(purecopy "Fringe only on the right side") - :visible (display-graphic-p) - :button (:radio . (equal fringe-mode '(0 . nil))))) - (defun menu-bar-showhide-fringe-menu-customize-left () "Display fringes only on the left of each window." (interactive) (require 'fringe) (customize-set-variable 'fringe-mode '(nil . 0))) -(define-key menu-bar-showhide-fringe-menu [left] - `(menu-item ,(purecopy "On the Left") menu-bar-showhide-fringe-menu-customize-left - :help ,(purecopy "Fringe only on the left side") - :visible (display-graphic-p) - :button (:radio . (equal fringe-mode '(nil . 0))))) - (defun menu-bar-showhide-fringe-menu-customize-disable () "Do not display window fringes." (interactive) (require 'fringe) (customize-set-variable 'fringe-mode 0)) -(define-key menu-bar-showhide-fringe-menu [none] - `(menu-item ,(purecopy "None") menu-bar-showhide-fringe-menu-customize-disable - :help ,(purecopy "Turn off fringe") - :visible (display-graphic-p) - :button (:radio . (eq fringe-mode 0)))) - -(define-key menu-bar-showhide-menu [showhide-fringe] - `(menu-item ,(purecopy "Fringe") ,menu-bar-showhide-fringe-menu - :visible (display-graphic-p))) - -(defvar menu-bar-showhide-scroll-bar-menu (make-sparse-keymap "Scroll-bar")) - -(define-key menu-bar-showhide-scroll-bar-menu [right] - `(menu-item ,(purecopy "On the Right") - menu-bar-right-scroll-bar - :help ,(purecopy "Scroll-bar on the right side") - :visible (display-graphic-p) - :button (:radio . (eq (cdr (assq 'vertical-scroll-bars - (frame-parameters))) 'right)))) +(defvar menu-bar-showhide-fringe-menu + (let ((menu (make-sparse-keymap "Fringe"))) + + (define-key menu [showhide-fringe-ind] + `(menu-item ,(purecopy "Buffer Boundaries") ,menu-bar-showhide-fringe-ind-menu + :visible (display-graphic-p) + :help ,(purecopy "Indicate buffer boundaries in fringe"))) + + (define-key menu [indicate-empty-lines] + (menu-bar-make-toggle toggle-indicate-empty-lines indicate-empty-lines + "Empty Line Indicators" + "Indicating of empty lines %s" + "Indicate trailing empty lines in fringe, globally")) + + (define-key menu [customize] + `(menu-item ,(purecopy "Customize Fringe") menu-bar-showhide-fringe-menu-customize + :help ,(purecopy "Detailed customization of fringe") + :visible (display-graphic-p))) + + (define-key menu [default] + `(menu-item ,(purecopy "Default") menu-bar-showhide-fringe-menu-customize-reset + :help ,(purecopy "Default width fringe on both left and right side") + :visible (display-graphic-p) + :button (:radio . (eq fringe-mode nil)))) + + (define-key menu [right] + `(menu-item ,(purecopy "On the Right") menu-bar-showhide-fringe-menu-customize-right + :help ,(purecopy "Fringe only on the right side") + :visible (display-graphic-p) + :button (:radio . (equal fringe-mode '(0 . nil))))) + + (define-key menu [left] + `(menu-item ,(purecopy "On the Left") menu-bar-showhide-fringe-menu-customize-left + :help ,(purecopy "Fringe only on the left side") + :visible (display-graphic-p) + :button (:radio . (equal fringe-mode '(nil . 0))))) + + (define-key menu [none] + `(menu-item ,(purecopy "None") menu-bar-showhide-fringe-menu-customize-disable + :help ,(purecopy "Turn off fringe") + :visible (display-graphic-p) + :button (:radio . (eq fringe-mode 0)))) + menu)) + (defun menu-bar-right-scroll-bar () "Display scroll bars on the right of each window." (interactive) (customize-set-variable 'scroll-bar-mode 'right)) -(define-key menu-bar-showhide-scroll-bar-menu [left] - `(menu-item ,(purecopy "On the Left") - menu-bar-left-scroll-bar - :help ,(purecopy "Scroll-bar on the left side") - :visible (display-graphic-p) - :button (:radio . (eq (cdr (assq 'vertical-scroll-bars - (frame-parameters))) 'left)))) - (defun menu-bar-left-scroll-bar () "Display scroll bars on the left of each window." (interactive) (customize-set-variable 'scroll-bar-mode 'left)) -(define-key menu-bar-showhide-scroll-bar-menu [none] - `(menu-item ,(purecopy "None") - menu-bar-no-scroll-bar - :help ,(purecopy "Turn off scroll-bar") - :visible (display-graphic-p) - :button (:radio . (eq (cdr (assq 'vertical-scroll-bars - (frame-parameters))) nil)))) - (defun menu-bar-no-scroll-bar () "Turn off scroll bars." (interactive) (customize-set-variable 'scroll-bar-mode nil)) -(define-key menu-bar-showhide-menu [showhide-scroll-bar] - `(menu-item ,(purecopy "Scroll-bar") ,menu-bar-showhide-scroll-bar-menu - :visible (display-graphic-p))) - -(define-key menu-bar-showhide-menu [showhide-tooltip-mode] - `(menu-item ,(purecopy "Tooltips") tooltip-mode - :help ,(purecopy "Turn tooltips on/off") - :visible (and (display-graphic-p) (fboundp 'x-show-tip)) - :button (:toggle . tooltip-mode))) +(defvar menu-bar-showhide-scroll-bar-menu + (let ((menu (make-sparse-keymap "Scroll-bar"))) + + (define-key menu [right] + `(menu-item ,(purecopy "On the Right") + menu-bar-right-scroll-bar + :help ,(purecopy "Scroll-bar on the right side") + :visible (display-graphic-p) + :button (:radio . (eq (cdr (assq 'vertical-scroll-bars + (frame-parameters))) 'right)))) + + (define-key menu [left] + `(menu-item ,(purecopy "On the Left") + menu-bar-left-scroll-bar + :help ,(purecopy "Scroll-bar on the left side") + :visible (display-graphic-p) + :button (:radio . (eq (cdr (assq 'vertical-scroll-bars + (frame-parameters))) 'left)))) + + (define-key menu [none] + `(menu-item ,(purecopy "None") + menu-bar-no-scroll-bar + :help ,(purecopy "Turn off scroll-bar") + :visible (display-graphic-p) + :button (:radio . (eq (cdr (assq 'vertical-scroll-bars + (frame-parameters))) nil)))) + menu)) (defun menu-bar-frame-for-menubar () "Return the frame suitable for updating the menu bar." @@ -1027,14 +956,6 @@ mail status in mode line")) (and (numberp val) (> val 0))) -(define-key menu-bar-showhide-menu [menu-bar-mode] - `(menu-item ,(purecopy "Menu-bar") toggle-menu-bar-mode-from-frame - :help ,(purecopy "Turn menu-bar on/off") - :button - (:toggle . (menu-bar-positive-p - (frame-parameter (menu-bar-frame-for-menubar) - 'menu-bar-lines))))) - (defun menu-bar-set-tool-bar-position (position) (customize-set-variable 'tool-bar-mode t) (customize-set-variable 'tool-bar-position position)) @@ -1059,163 +980,147 @@ mail status in mode line")) (interactive) (menu-bar-set-tool-bar-position 'bottom)) -(if (featurep 'move-toolbar) - (progn - (defvar menu-bar-showhide-tool-bar-menu (make-sparse-keymap "Tool-bar")) - - (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-left] - `(menu-item ,(purecopy "On the left") - menu-bar-showhide-tool-bar-menu-customize-enable-left - :help ,(purecopy "Tool-bar at the left side") - :visible (display-graphic-p) - :button - (:radio . (and tool-bar-mode - (eq (frame-parameter - (menu-bar-frame-for-menubar) - 'tool-bar-position) - 'left))))) - - (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-right] - `(menu-item ,(purecopy "On the right") - menu-bar-showhide-tool-bar-menu-customize-enable-right - :help ,(purecopy "Tool-bar at the right side") - :visible (display-graphic-p) - :button - (:radio . (and tool-bar-mode - (eq (frame-parameter - (menu-bar-frame-for-menubar) - 'tool-bar-position) - 'right))))) - - (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-bottom] - `(menu-item ,(purecopy "On the bottom") - menu-bar-showhide-tool-bar-menu-customize-enable-bottom - :help ,(purecopy "Tool-bar at the bottom") - :visible (display-graphic-p) - :button - (:radio . (and tool-bar-mode - (eq (frame-parameter - (menu-bar-frame-for-menubar) - 'tool-bar-position) - 'bottom))))) - - (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-top] - `(menu-item ,(purecopy "On the top") - menu-bar-showhide-tool-bar-menu-customize-enable-top - :help ,(purecopy "Tool-bar at the top") - :visible (display-graphic-p) - :button - (:radio . (and tool-bar-mode - (eq (frame-parameter - (menu-bar-frame-for-menubar) - 'tool-bar-position) - 'top))))) - - (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-none] - `(menu-item ,(purecopy "None") - menu-bar-showhide-tool-bar-menu-customize-disable - :help ,(purecopy "Turn tool-bar off") - :visible (display-graphic-p) - :button (:radio . (eq tool-bar-mode nil)))) - - (define-key menu-bar-showhide-menu [showhide-tool-bar] - `(menu-item ,(purecopy "Tool-bar") ,menu-bar-showhide-tool-bar-menu - :visible (display-graphic-p))) - - ) - ;; else not tool bar that can move. - (define-key menu-bar-showhide-menu [showhide-tool-bar] - `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame - :help ,(purecopy "Turn tool-bar on/off") - :visible (display-graphic-p) - :button - (:toggle . (menu-bar-positive-p - (frame-parameter (menu-bar-frame-for-menubar) - 'tool-bar-lines)))))) - -(define-key menu-bar-options-menu [showhide] - `(menu-item ,(purecopy "Show/Hide") ,menu-bar-showhide-menu)) - -(define-key menu-bar-options-menu [showhide-separator] - menu-bar-separator) - -(define-key menu-bar-options-menu [mule] - ;; It is better not to use backquote here, - ;; because that makes a bootstrapping problem - ;; if you need to recompile all the Lisp files using interpreted code. - `(menu-item ,(purecopy "Multilingual Environment") ,mule-menu-keymap -;; Most of the MULE menu actually does make sense in unibyte mode, -;; e.g. language selection. -;;; :visible '(default-value 'enable-multibyte-characters) - )) -;(setq menu-bar-final-items (cons 'mule menu-bar-final-items)) -;(define-key menu-bar-options-menu [preferences] -; `(menu-item ,(purecopy "Preferences") ,menu-bar-preferences-menu -; :help ,(purecopy "Toggle important global options"))) - -(define-key menu-bar-options-menu [mule-separator] - menu-bar-separator) - -(define-key menu-bar-options-menu [debug-on-quit] - (menu-bar-make-toggle toggle-debug-on-quit debug-on-quit - "Enter Debugger on Quit/C-g" "Debug on Quit %s" - "Enter Lisp debugger when C-g is pressed")) -(define-key menu-bar-options-menu [debug-on-error] - (menu-bar-make-toggle toggle-debug-on-error debug-on-error - "Enter Debugger on Error" "Debug on Error %s" - "Enter Lisp debugger when an error is signaled")) -(define-key menu-bar-options-menu [debugger-separator] - menu-bar-separator) - -(define-key menu-bar-options-menu [blink-cursor-mode] - (menu-bar-make-mm-toggle blink-cursor-mode - "Blinking Cursor" - "Whether the cursor blinks (Blink Cursor mode)")) -(define-key menu-bar-options-menu [cursor-separator] - menu-bar-separator) - -(define-key menu-bar-options-menu [save-place] - (menu-bar-make-toggle toggle-save-place-globally save-place - "Save Place in Files between Sessions" - "Saving place in files %s" - "Visit files of previous session when restarting Emacs" - (require 'saveplace) - ;; Do it by name, to avoid a free-variable - ;; warning during byte compilation. - (set-default - 'save-place (not (symbol-value 'save-place))))) - -(define-key menu-bar-options-menu [uniquify] - (menu-bar-make-toggle toggle-uniquify-buffer-names uniquify-buffer-name-style - "Use Directory Names in Buffer Names" - "Directory name in buffer names (uniquify) %s" - "Uniquify buffer names by adding parent directory names" - (require 'uniquify) - (setq uniquify-buffer-name-style - (if (not uniquify-buffer-name-style) - 'forward)))) - -(define-key menu-bar-options-menu [edit-options-separator] - menu-bar-separator) -(define-key menu-bar-options-menu [cua-mode] - (menu-bar-make-mm-toggle cua-mode - "C-x/C-c/C-v Cut and Paste (CUA)" - "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste" - (:visible (or (not (boundp 'cua-enable-cua-keys)) - cua-enable-cua-keys)))) - -(define-key menu-bar-options-menu [cua-emulation-mode] - (menu-bar-make-mm-toggle cua-mode - "Shift movement mark region (CUA)" - "Use shifted movement keys to set and extend the region" - (:visible (and (boundp 'cua-enable-cua-keys) - (not cua-enable-cua-keys))))) - -(define-key menu-bar-options-menu [case-fold-search] - (menu-bar-make-toggle toggle-case-fold-search case-fold-search - "Case-Insensitive Search" - "Case-Insensitive Search %s" - "Ignore letter-case in search commands")) +(when (featurep 'move-toolbar) + (defvar menu-bar-showhide-tool-bar-menu + (let ((menu (make-sparse-keymap "Tool-bar"))) + + (define-key menu [showhide-tool-bar-left] + `(menu-item ,(purecopy "On the left") + menu-bar-showhide-tool-bar-menu-customize-enable-left + :help ,(purecopy "Tool-bar at the left side") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter + (menu-bar-frame-for-menubar) + 'tool-bar-position) + 'left))))) + + (define-key menu [showhide-tool-bar-right] + `(menu-item ,(purecopy "On the right") + menu-bar-showhide-tool-bar-menu-customize-enable-right + :help ,(purecopy "Tool-bar at the right side") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter + (menu-bar-frame-for-menubar) + 'tool-bar-position) + 'right))))) + + (define-key menu [showhide-tool-bar-bottom] + `(menu-item ,(purecopy "On the bottom") + menu-bar-showhide-tool-bar-menu-customize-enable-bottom + :help ,(purecopy "Tool-bar at the bottom") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter + (menu-bar-frame-for-menubar) + 'tool-bar-position) + 'bottom))))) + + (define-key menu [showhide-tool-bar-top] + `(menu-item ,(purecopy "On the top") + menu-bar-showhide-tool-bar-menu-customize-enable-top + :help ,(purecopy "Tool-bar at the top") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter + (menu-bar-frame-for-menubar) + 'tool-bar-position) + 'top))))) + + (define-key menu [showhide-tool-bar-none] + `(menu-item ,(purecopy "None") + menu-bar-showhide-tool-bar-menu-customize-disable + :help ,(purecopy "Turn tool-bar off") + :visible (display-graphic-p) + :button (:radio . (eq tool-bar-mode nil)))) + menu))) + +(defvar menu-bar-showhide-menu + (let ((menu (make-sparse-keymap "Show/Hide"))) + + (define-key menu [column-number-mode] + (menu-bar-make-mm-toggle column-number-mode + "Column Numbers" + "Show the current column number in the mode line")) + + (define-key menu [line-number-mode] + (menu-bar-make-mm-toggle line-number-mode + "Line Numbers" + "Show the current line number in the mode line")) + + (define-key menu [size-indication-mode] + (menu-bar-make-mm-toggle size-indication-mode + "Size Indication" + "Show the size of the buffer in the mode line")) + + (define-key menu [linecolumn-separator] + menu-bar-separator) + + (define-key menu [showhide-battery] + (menu-bar-make-mm-toggle display-battery-mode + "Battery Status" + "Display battery status information in mode line")) + + (define-key menu [showhide-date-time] + (menu-bar-make-mm-toggle display-time-mode + "Time, Load and Mail" + "Display time, system load averages and \ +mail status in mode line")) + + (define-key menu [datetime-separator] + menu-bar-separator) + + (define-key menu [showhide-speedbar] + `(menu-item ,(purecopy "Speedbar") speedbar-frame-mode + :help ,(purecopy "Display a Speedbar quick-navigation frame") + :button (:toggle + . (and (boundp 'speedbar-frame) + (frame-live-p (symbol-value 'speedbar-frame)) + (frame-visible-p + (symbol-value 'speedbar-frame)))))) + + (define-key menu [showhide-fringe] + `(menu-item ,(purecopy "Fringe") ,menu-bar-showhide-fringe-menu + :visible (display-graphic-p))) + + (define-key menu [showhide-scroll-bar] + `(menu-item ,(purecopy "Scroll-bar") ,menu-bar-showhide-scroll-bar-menu + :visible (display-graphic-p))) + + (define-key menu [showhide-tooltip-mode] + `(menu-item ,(purecopy "Tooltips") tooltip-mode + :help ,(purecopy "Turn tooltips on/off") + :visible (and (display-graphic-p) (fboundp 'x-show-tip)) + :button (:toggle . tooltip-mode))) + + (define-key menu [menu-bar-mode] + `(menu-item ,(purecopy "Menu-bar") toggle-menu-bar-mode-from-frame + :help ,(purecopy "Turn menu-bar on/off") + :button + (:toggle . (menu-bar-positive-p + (frame-parameter (menu-bar-frame-for-menubar) + 'menu-bar-lines))))) + + (if (and (boundp 'menu-bar-showhide-tool-bar-menu) + (keymapp menu-bar-showhide-tool-bar-menu)) + (define-key menu [showhide-tool-bar] + `(menu-item ,(purecopy "Tool-bar") ,menu-bar-showhide-tool-bar-menu + :visible (display-graphic-p))) + ;; else not tool bar that can move. + (define-key menu [showhide-tool-bar] + `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame + :help ,(purecopy "Turn tool-bar on/off") + :visible (display-graphic-p) + :button + (:toggle . (menu-bar-positive-p + (frame-parameter (menu-bar-frame-for-menubar) + 'tool-bar-lines)))))) + menu)) (defun menu-bar-text-mode-auto-fill () (interactive) @@ -1225,71 +1130,187 @@ mail status in mode line")) ;; -- Per Abrahamsen 2002-02-11. (customize-mark-as-set 'text-mode-hook)) -(define-key menu-bar-options-menu [auto-fill-mode] - `(menu-item ,(purecopy "Auto Fill in Text Modes") - menu-bar-text-mode-auto-fill - :help ,(purecopy "Automatically fill text while typing (Auto Fill mode)") - :button (:toggle . (if (listp text-mode-hook) - (member 'turn-on-auto-fill text-mode-hook) - (eq 'turn-on-auto-fill text-mode-hook))))) - - -(defvar menu-bar-line-wrapping-menu (make-sparse-keymap "Line Wrapping")) - -(define-key menu-bar-line-wrapping-menu [word-wrap] - `(menu-item ,(purecopy "Word Wrap (Visual Line mode)") - (lambda () - (interactive) - (unless visual-line-mode - (visual-line-mode 1)) - (message ,(purecopy "Visual-Line mode enabled"))) - :help ,(purecopy "Wrap long lines at word boundaries") - :button (:radio . (and (null truncate-lines) - (not (truncated-partial-width-window-p)) - word-wrap)) - :visible (menu-bar-menu-frame-live-and-visible-p))) - -(define-key menu-bar-line-wrapping-menu [truncate] - `(menu-item ,(purecopy "Truncate Long Lines") - (lambda () - (interactive) - (if visual-line-mode (visual-line-mode 0)) - (setq word-wrap nil) - (toggle-truncate-lines 1)) - :help ,(purecopy "Truncate long lines at window edge") - :button (:radio . (or truncate-lines - (truncated-partial-width-window-p))) - :visible (menu-bar-menu-frame-live-and-visible-p) - :enable (not (truncated-partial-width-window-p)))) - -(define-key menu-bar-line-wrapping-menu [window-wrap] - `(menu-item ,(purecopy "Wrap at Window Edge") - (lambda () (interactive) - (if visual-line-mode (visual-line-mode 0)) - (setq word-wrap nil) - (if truncate-lines (toggle-truncate-lines -1))) - :help ,(purecopy "Wrap long lines at window edge") - :button (:radio . (and (null truncate-lines) - (not (truncated-partial-width-window-p)) - (not word-wrap))) - :visible (menu-bar-menu-frame-live-and-visible-p) - :enable (not (truncated-partial-width-window-p)))) - -(define-key menu-bar-options-menu [line-wrapping] - `(menu-item ,(purecopy "Line Wrapping in this Buffer") ,menu-bar-line-wrapping-menu)) - - -(define-key menu-bar-options-menu [highlight-separator] - menu-bar-separator) -(define-key menu-bar-options-menu [highlight-paren-mode] - (menu-bar-make-mm-toggle show-paren-mode - "Paren Match Highlighting" - "Highlight matching/mismatched parentheses at cursor (Show Paren mode)")) -(define-key menu-bar-options-menu [transient-mark-mode] - (menu-bar-make-mm-toggle transient-mark-mode - "Active Region Highlighting" - "Make text in active region stand out in color (Transient Mark mode)" - (:enable (not cua-mode)))) + +(defvar menu-bar-line-wrapping-menu + (let ((menu (make-sparse-keymap "Line Wrapping"))) + + (define-key menu [word-wrap] + `(menu-item ,(purecopy "Word Wrap (Visual Line mode)") + (lambda () + (interactive) + (unless visual-line-mode + (visual-line-mode 1)) + (message ,(purecopy "Visual-Line mode enabled"))) + :help ,(purecopy "Wrap long lines at word boundaries") + :button (:radio . (and (null truncate-lines) + (not (truncated-partial-width-window-p)) + word-wrap)) + :visible (menu-bar-menu-frame-live-and-visible-p))) + + (define-key menu [truncate] + `(menu-item ,(purecopy "Truncate Long Lines") + (lambda () + (interactive) + (if visual-line-mode (visual-line-mode 0)) + (setq word-wrap nil) + (toggle-truncate-lines 1)) + :help ,(purecopy "Truncate long lines at window edge") + :button (:radio . (or truncate-lines + (truncated-partial-width-window-p))) + :visible (menu-bar-menu-frame-live-and-visible-p) + :enable (not (truncated-partial-width-window-p)))) + + (define-key menu [window-wrap] + `(menu-item ,(purecopy "Wrap at Window Edge") + (lambda () (interactive) + (if visual-line-mode (visual-line-mode 0)) + (setq word-wrap nil) + (if truncate-lines (toggle-truncate-lines -1))) + :help ,(purecopy "Wrap long lines at window edge") + :button (:radio . (and (null truncate-lines) + (not (truncated-partial-width-window-p)) + (not word-wrap))) + :visible (menu-bar-menu-frame-live-and-visible-p) + :enable (not (truncated-partial-width-window-p)))) + menu)) + +(defvar menu-bar-options-menu + (let ((menu (make-sparse-keymap "Options"))) + (define-key menu [customize] + `(menu-item ,(purecopy "Customize Emacs") ,menu-bar-custom-menu)) + + (define-key menu [package] + '(menu-item "Manage Emacs Packages" package-list-packages + :help "Install or uninstall additional Emacs packages")) + + (define-key menu [save] + `(menu-item ,(purecopy "Save Options") menu-bar-options-save + :help ,(purecopy "Save options set from the menu above"))) + + (define-key menu [custom-separator] + menu-bar-separator) + + (define-key menu [menu-set-font] + `(menu-item ,(purecopy "Set Default Font...") menu-set-font + :visible (display-multi-font-p) + :help ,(purecopy "Select a default font"))) + + (if (featurep 'system-font-setting) + (define-key menu [menu-system-font] + (menu-bar-make-toggle + toggle-use-system-font font-use-system-font + "Use system font" + "Use system font: %s" + "Use the monospaced font defined by the system"))) + + (define-key menu [showhide] + `(menu-item ,(purecopy "Show/Hide") ,menu-bar-showhide-menu)) + + (define-key menu [showhide-separator] + menu-bar-separator) + + (define-key menu [mule] + ;; It is better not to use backquote here, + ;; because that makes a bootstrapping problem + ;; if you need to recompile all the Lisp files using interpreted code. + `(menu-item ,(purecopy "Multilingual Environment") ,mule-menu-keymap + ;; Most of the MULE menu actually does make sense in + ;; unibyte mode, e.g. language selection. + ;; :visible '(default-value 'enable-multibyte-characters) + )) + ;;(setq menu-bar-final-items (cons 'mule menu-bar-final-items)) + ;;(define-key menu [preferences] + ;; `(menu-item ,(purecopy "Preferences") ,menu-bar-preferences-menu + ;; :help ,(purecopy "Toggle important global options"))) + + (define-key menu [mule-separator] + menu-bar-separator) + + (define-key menu [debug-on-quit] + (menu-bar-make-toggle toggle-debug-on-quit debug-on-quit + "Enter Debugger on Quit/C-g" "Debug on Quit %s" + "Enter Lisp debugger when C-g is pressed")) + (define-key menu [debug-on-error] + (menu-bar-make-toggle toggle-debug-on-error debug-on-error + "Enter Debugger on Error" "Debug on Error %s" + "Enter Lisp debugger when an error is signaled")) + (define-key menu [debugger-separator] + menu-bar-separator) + + (define-key menu [blink-cursor-mode] + (menu-bar-make-mm-toggle blink-cursor-mode + "Blinking Cursor" + "Whether the cursor blinks (Blink Cursor mode)")) + (define-key menu [cursor-separator] + menu-bar-separator) + + (define-key menu [save-place] + (menu-bar-make-toggle toggle-save-place-globally save-place + "Save Place in Files between Sessions" + "Saving place in files %s" + "Visit files of previous session when restarting Emacs" + (require 'saveplace) + ;; Do it by name, to avoid a free-variable + ;; warning during byte compilation. + (set-default + 'save-place (not (symbol-value 'save-place))))) + + (define-key menu [uniquify] + (menu-bar-make-toggle toggle-uniquify-buffer-names uniquify-buffer-name-style + "Use Directory Names in Buffer Names" + "Directory name in buffer names (uniquify) %s" + "Uniquify buffer names by adding parent directory names" + (require 'uniquify) + (setq uniquify-buffer-name-style + (if (not uniquify-buffer-name-style) + 'forward)))) + + (define-key menu [edit-options-separator] + menu-bar-separator) + (define-key menu [cua-mode] + (menu-bar-make-mm-toggle cua-mode + "C-x/C-c/C-v Cut and Paste (CUA)" + "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste" + (:visible (or (not (boundp 'cua-enable-cua-keys)) + cua-enable-cua-keys)))) + + (define-key menu [cua-emulation-mode] + (menu-bar-make-mm-toggle cua-mode + "Shift movement mark region (CUA)" + "Use shifted movement keys to set and extend the region" + (:visible (and (boundp 'cua-enable-cua-keys) + (not cua-enable-cua-keys))))) + + (define-key menu [case-fold-search] + (menu-bar-make-toggle toggle-case-fold-search case-fold-search + "Case-Insensitive Search" + "Case-Insensitive Search %s" + "Ignore letter-case in search commands")) + + (define-key menu [auto-fill-mode] + `(menu-item ,(purecopy "Auto Fill in Text Modes") + menu-bar-text-mode-auto-fill + :help ,(purecopy "Automatically fill text while typing (Auto Fill mode)") + :button (:toggle . (if (listp text-mode-hook) + (member 'turn-on-auto-fill text-mode-hook) + (eq 'turn-on-auto-fill text-mode-hook))))) + + (define-key menu [line-wrapping] + `(menu-item ,(purecopy "Line Wrapping in this Buffer") ,menu-bar-line-wrapping-menu)) + + + (define-key menu [highlight-separator] + menu-bar-separator) + (define-key menu [highlight-paren-mode] + (menu-bar-make-mm-toggle show-paren-mode + "Paren Match Highlighting" + "Highlight matching/mismatched parentheses at cursor (Show Paren mode)")) + (define-key menu [transient-mark-mode] + (menu-bar-make-mm-toggle transient-mark-mode + "Active Region Highlighting" + "Make text in active region stand out in color (Transient Mark mode)" + (:enable (not cua-mode)))) + menu)) ;; The "Tools" menu items @@ -1314,270 +1335,276 @@ mail status in mode line")) (known (assq read-mail-command known-rmail-commands))) (if known (cdr known) (symbol-name read-mail-command)))) -(defvar menu-bar-games-menu (make-sparse-keymap "Games")) - -(define-key menu-bar-tools-menu [games] - `(menu-item ,(purecopy "Games") ,menu-bar-games-menu)) - -(define-key menu-bar-tools-menu [separator-games] - menu-bar-separator) - -(define-key menu-bar-games-menu [zone] - `(menu-item ,(purecopy "Zone Out") zone - :help ,(purecopy "Play tricks with Emacs display when Emacs is idle"))) -(define-key menu-bar-games-menu [tetris] - `(menu-item ,(purecopy "Tetris") tetris - :help ,(purecopy "Falling blocks game"))) -(define-key menu-bar-games-menu [solitaire] - `(menu-item ,(purecopy "Solitaire") solitaire - :help ,(purecopy "Get rid of all the stones"))) -(define-key menu-bar-games-menu [snake] - `(menu-item ,(purecopy "Snake") snake - :help ,(purecopy "Move snake around avoiding collisions"))) -(define-key menu-bar-games-menu [pong] - `(menu-item ,(purecopy "Pong") pong - :help ,(purecopy "Bounce the ball to your opponent"))) -(define-key menu-bar-games-menu [mult] - `(menu-item ,(purecopy "Multiplication Puzzle") mpuz - :help ,(purecopy "Exercise brain with multiplication"))) -(define-key menu-bar-games-menu [life] - `(menu-item ,(purecopy "Life") life - :help ,(purecopy "Watch how John Conway's cellular automaton evolves"))) -(define-key menu-bar-games-menu [land] - `(menu-item ,(purecopy "Landmark") landmark - :help ,(purecopy "Watch a neural-network robot learn landmarks"))) -(define-key menu-bar-games-menu [hanoi] - `(menu-item ,(purecopy "Towers of Hanoi") hanoi - :help ,(purecopy "Watch Towers-of-Hanoi puzzle solved by Emacs"))) -(define-key menu-bar-games-menu [gomoku] - `(menu-item ,(purecopy "Gomoku") gomoku - :help ,(purecopy "Mark 5 contiguous squares (like tic-tac-toe)"))) -(define-key menu-bar-games-menu [bubbles] - `(menu-item ,(purecopy "Bubbles") bubbles - :help ,(purecopy "Remove all bubbles using the fewest moves"))) -(define-key menu-bar-games-menu [black-box] - `(menu-item ,(purecopy "Blackbox") blackbox - :help ,(purecopy "Find balls in a black box by shooting rays"))) -(define-key menu-bar-games-menu [adventure] - `(menu-item ,(purecopy "Adventure") dunnet - :help ,(purecopy "Dunnet, a text Adventure game for Emacs"))) -(define-key menu-bar-games-menu [5x5] - `(menu-item ,(purecopy "5x5") 5x5 - :help ,(purecopy "Fill in all the squares on a 5x5 board"))) +(defvar menu-bar-games-menu + (let ((menu (make-sparse-keymap "Games"))) + + (define-key menu [zone] + `(menu-item ,(purecopy "Zone Out") zone + :help ,(purecopy "Play tricks with Emacs display when Emacs is idle"))) + (define-key menu [tetris] + `(menu-item ,(purecopy "Tetris") tetris + :help ,(purecopy "Falling blocks game"))) + (define-key menu [solitaire] + `(menu-item ,(purecopy "Solitaire") solitaire + :help ,(purecopy "Get rid of all the stones"))) + (define-key menu [snake] + `(menu-item ,(purecopy "Snake") snake + :help ,(purecopy "Move snake around avoiding collisions"))) + (define-key menu [pong] + `(menu-item ,(purecopy "Pong") pong + :help ,(purecopy "Bounce the ball to your opponent"))) + (define-key menu [mult] + `(menu-item ,(purecopy "Multiplication Puzzle") mpuz + :help ,(purecopy "Exercise brain with multiplication"))) + (define-key menu [life] + `(menu-item ,(purecopy "Life") life + :help ,(purecopy "Watch how John Conway's cellular automaton evolves"))) + (define-key menu [land] + `(menu-item ,(purecopy "Landmark") landmark + :help ,(purecopy "Watch a neural-network robot learn landmarks"))) + (define-key menu [hanoi] + `(menu-item ,(purecopy "Towers of Hanoi") hanoi + :help ,(purecopy "Watch Towers-of-Hanoi puzzle solved by Emacs"))) + (define-key menu [gomoku] + `(menu-item ,(purecopy "Gomoku") gomoku + :help ,(purecopy "Mark 5 contiguous squares (like tic-tac-toe)"))) + (define-key menu [bubbles] + `(menu-item ,(purecopy "Bubbles") bubbles + :help ,(purecopy "Remove all bubbles using the fewest moves"))) + (define-key menu [black-box] + `(menu-item ,(purecopy "Blackbox") blackbox + :help ,(purecopy "Find balls in a black box by shooting rays"))) + (define-key menu [adventure] + `(menu-item ,(purecopy "Adventure") dunnet + :help ,(purecopy "Dunnet, a text Adventure game for Emacs"))) + (define-key menu [5x5] + `(menu-item ,(purecopy "5x5") 5x5 + :help ,(purecopy "Fill in all the squares on a 5x5 board"))) + menu)) (defvar menu-bar-encryption-decryption-menu - (make-sparse-keymap "Encryption/Decryption")) - -(define-key menu-bar-tools-menu [encryption-decryption] - `(menu-item ,(purecopy "Encryption/Decryption") ,menu-bar-encryption-decryption-menu)) - -(define-key menu-bar-tools-menu [separator-encryption-decryption] - menu-bar-separator) - -(define-key menu-bar-encryption-decryption-menu [insert-keys] - `(menu-item ,(purecopy "Insert Keys") epa-insert-keys - :help ,(purecopy "Insert public keys after the current point"))) - -(define-key menu-bar-encryption-decryption-menu [export-keys] - `(menu-item ,(purecopy "Export Keys") epa-export-keys - :help ,(purecopy "Export public keys to a file"))) - -(define-key menu-bar-encryption-decryption-menu [import-keys-region] - `(menu-item ,(purecopy "Import Keys from Region") epa-import-keys-region - :help ,(purecopy "Import public keys from the current region"))) - -(define-key menu-bar-encryption-decryption-menu [import-keys] - `(menu-item ,(purecopy "Import Keys from File...") epa-import-keys - :help ,(purecopy "Import public keys from a file"))) - -(define-key menu-bar-encryption-decryption-menu [list-keys] - `(menu-item ,(purecopy "List Keys") epa-list-keys - :help ,(purecopy "Browse your public keyring"))) - -(define-key menu-bar-encryption-decryption-menu [separator-keys] - menu-bar-separator) - -(define-key menu-bar-encryption-decryption-menu [sign-region] - `(menu-item ,(purecopy "Sign Region") epa-sign-region - :help ,(purecopy "Create digital signature of the current region"))) - -(define-key menu-bar-encryption-decryption-menu [verify-region] - `(menu-item ,(purecopy "Verify Region") epa-verify-region - :help ,(purecopy "Verify digital signature of the current region"))) - -(define-key menu-bar-encryption-decryption-menu [encrypt-region] - `(menu-item ,(purecopy "Encrypt Region") epa-encrypt-region - :help ,(purecopy "Encrypt the current region"))) - -(define-key menu-bar-encryption-decryption-menu [decrypt-region] - `(menu-item ,(purecopy "Decrypt Region") epa-decrypt-region - :help ,(purecopy "Decrypt the current region"))) - -(define-key menu-bar-encryption-decryption-menu [separator-file] - menu-bar-separator) - -(define-key menu-bar-encryption-decryption-menu [sign-file] - `(menu-item ,(purecopy "Sign File...") epa-sign-file - :help ,(purecopy "Create digital signature of a file"))) - -(define-key menu-bar-encryption-decryption-menu [verify-file] - `(menu-item ,(purecopy "Verify File...") epa-verify-file - :help ,(purecopy "Verify digital signature of a file"))) - -(define-key menu-bar-encryption-decryption-menu [encrypt-file] - `(menu-item ,(purecopy "Encrypt File...") epa-encrypt-file - :help ,(purecopy "Encrypt a file"))) - -(define-key menu-bar-encryption-decryption-menu [decrypt-file] - `(menu-item ,(purecopy "Decrypt File...") epa-decrypt-file - :help ,(purecopy "Decrypt a file"))) - -(define-key menu-bar-tools-menu [simple-calculator] - `(menu-item ,(purecopy "Simple Calculator") calculator - :help ,(purecopy "Invoke the Emacs built-in quick calculator"))) -(define-key menu-bar-tools-menu [calc] - `(menu-item ,(purecopy "Programmable Calculator") calc - :help ,(purecopy "Invoke the Emacs built-in full scientific calculator"))) -(define-key menu-bar-tools-menu [calendar] - `(menu-item ,(purecopy "Calendar") calendar - :help ,(purecopy "Invoke the Emacs built-in calendar"))) - -(define-key menu-bar-tools-menu [separator-net] - menu-bar-separator) - -(define-key menu-bar-tools-menu [directory-search] - `(menu-item ,(purecopy "Directory Search") eudc-tools-menu)) -(define-key menu-bar-tools-menu [compose-mail] - `(menu-item (format "Send Mail (with %s)" (send-mail-item-name)) compose-mail - :visible (and mail-user-agent (not (eq mail-user-agent 'ignore))) - :help ,(purecopy "Send a mail message"))) -(define-key menu-bar-tools-menu [rmail] - `(menu-item (format "Read Mail (with %s)" (read-mail-item-name)) - menu-bar-read-mail - :visible (and read-mail-command - (not (eq read-mail-command 'ignore))) - :help ,(purecopy "Read your mail and reply to it"))) + (let ((menu (make-sparse-keymap "Encryption/Decryption"))) + (define-key menu [insert-keys] + `(menu-item ,(purecopy "Insert Keys") epa-insert-keys + :help ,(purecopy "Insert public keys after the current point"))) + + (define-key menu [export-keys] + `(menu-item ,(purecopy "Export Keys") epa-export-keys + :help ,(purecopy "Export public keys to a file"))) + + (define-key menu [import-keys-region] + `(menu-item ,(purecopy "Import Keys from Region") epa-import-keys-region + :help ,(purecopy "Import public keys from the current region"))) + + (define-key menu [import-keys] + `(menu-item ,(purecopy "Import Keys from File...") epa-import-keys + :help ,(purecopy "Import public keys from a file"))) + + (define-key menu [list-keys] + `(menu-item ,(purecopy "List Keys") epa-list-keys + :help ,(purecopy "Browse your public keyring"))) + + (define-key menu [separator-keys] + menu-bar-separator) + + (define-key menu [sign-region] + `(menu-item ,(purecopy "Sign Region") epa-sign-region + :help ,(purecopy "Create digital signature of the current region"))) + + (define-key menu [verify-region] + `(menu-item ,(purecopy "Verify Region") epa-verify-region + :help ,(purecopy "Verify digital signature of the current region"))) + + (define-key menu [encrypt-region] + `(menu-item ,(purecopy "Encrypt Region") epa-encrypt-region + :help ,(purecopy "Encrypt the current region"))) + + (define-key menu [decrypt-region] + `(menu-item ,(purecopy "Decrypt Region") epa-decrypt-region + :help ,(purecopy "Decrypt the current region"))) + + (define-key menu [separator-file] + menu-bar-separator) + + (define-key menu [sign-file] + `(menu-item ,(purecopy "Sign File...") epa-sign-file + :help ,(purecopy "Create digital signature of a file"))) + + (define-key menu [verify-file] + `(menu-item ,(purecopy "Verify File...") epa-verify-file + :help ,(purecopy "Verify digital signature of a file"))) + + (define-key menu [encrypt-file] + `(menu-item ,(purecopy "Encrypt File...") epa-encrypt-file + :help ,(purecopy "Encrypt a file"))) + + (define-key menu [decrypt-file] + `(menu-item ,(purecopy "Decrypt File...") epa-decrypt-file + :help ,(purecopy "Decrypt a file"))) + + menu)) (defun menu-bar-read-mail () "Read mail using `read-mail-command'." (interactive) (call-interactively read-mail-command)) -(define-key menu-bar-tools-menu [gnus] - `(menu-item ,(purecopy "Read Net News (Gnus)") gnus - :help ,(purecopy "Read network news groups"))) - -(define-key menu-bar-tools-menu [separator-vc] - menu-bar-separator) - -(define-key menu-bar-tools-menu [pcl-cvs] - `(menu-item ,(purecopy "PCL-CVS") cvs-global-menu)) -(define-key menu-bar-tools-menu [vc] nil) ;Create the place for the VC menu. - -(define-key menu-bar-tools-menu [separator-compare] - menu-bar-separator) - -(define-key menu-bar-tools-menu [epatch] - `(menu-item ,(purecopy "Apply Patch") menu-bar-epatch-menu)) -(define-key menu-bar-tools-menu [ediff-merge] - `(menu-item ,(purecopy "Merge") menu-bar-ediff-merge-menu)) -(define-key menu-bar-tools-menu [compare] - `(menu-item ,(purecopy "Compare (Ediff)") menu-bar-ediff-menu)) - -(define-key menu-bar-tools-menu [separator-spell] - menu-bar-separator) - -(define-key menu-bar-tools-menu [spell] - `(menu-item ,(purecopy "Spell Checking") ispell-menu-map)) - -(define-key menu-bar-tools-menu [separator-prog] - menu-bar-separator) - -(define-key menu-bar-tools-menu [semantic] - `(menu-item ,(purecopy "Source Code Parsers (Semantic)") - semantic-mode - :help ,(purecopy "Toggle automatic parsing in source code buffers (Semantic mode)") - :button (:toggle . (bound-and-true-p semantic-mode)))) - -(define-key menu-bar-tools-menu [ede] - `(menu-item ,(purecopy "Project support (EDE)") - global-ede-mode - :help ,(purecopy "Toggle the Emacs Development Environment (Global EDE mode)") - :button (:toggle . (bound-and-true-p global-ede-mode)))) - -(define-key menu-bar-tools-menu [gdb] - `(menu-item ,(purecopy "Debugger (GDB)...") gdb - :help ,(purecopy "Debug a program from within Emacs with GDB"))) -(define-key menu-bar-tools-menu [shell-on-region] - `(menu-item ,(purecopy "Shell Command on Region...") shell-command-on-region - :enable mark-active - :help ,(purecopy "Pass marked region to a shell command"))) -(define-key menu-bar-tools-menu [shell] - `(menu-item ,(purecopy "Shell Command...") shell-command - :help ,(purecopy "Invoke a shell command and catch its output"))) -(define-key menu-bar-tools-menu [compile] - `(menu-item ,(purecopy "Compile...") compile - :help ,(purecopy "Invoke compiler or Make, view compilation errors"))) -(define-key menu-bar-tools-menu [grep] - `(menu-item ,(purecopy "Search Files (Grep)...") grep - :help ,(purecopy "Search files for strings or regexps (with Grep)"))) - +(defvar menu-bar-tools-menu + (let ((menu (make-sparse-keymap "Tools"))) + + (define-key menu [games] + `(menu-item ,(purecopy "Games") ,menu-bar-games-menu)) + + (define-key menu [separator-games] + menu-bar-separator) + + (define-key menu [encryption-decryption] + `(menu-item ,(purecopy "Encryption/Decryption") ,menu-bar-encryption-decryption-menu)) + + (define-key menu [separator-encryption-decryption] + menu-bar-separator) + + (define-key menu [simple-calculator] + `(menu-item ,(purecopy "Simple Calculator") calculator + :help ,(purecopy "Invoke the Emacs built-in quick calculator"))) + (define-key menu [calc] + `(menu-item ,(purecopy "Programmable Calculator") calc + :help ,(purecopy "Invoke the Emacs built-in full scientific calculator"))) + (define-key menu [calendar] + `(menu-item ,(purecopy "Calendar") calendar + :help ,(purecopy "Invoke the Emacs built-in calendar"))) + + (define-key menu [separator-net] + menu-bar-separator) + + (define-key menu [directory-search] + `(menu-item ,(purecopy "Directory Search") eudc-tools-menu)) + (define-key menu [compose-mail] + `(menu-item (format "Send Mail (with %s)" (send-mail-item-name)) compose-mail + :visible (and mail-user-agent (not (eq mail-user-agent 'ignore))) + :help ,(purecopy "Send a mail message"))) + (define-key menu [rmail] + `(menu-item (format "Read Mail (with %s)" (read-mail-item-name)) + menu-bar-read-mail + :visible (and read-mail-command + (not (eq read-mail-command 'ignore))) + :help ,(purecopy "Read your mail and reply to it"))) + + (define-key menu [gnus] + `(menu-item ,(purecopy "Read Net News (Gnus)") gnus + :help ,(purecopy "Read network news groups"))) + + (define-key menu [separator-vc] + menu-bar-separator) + + (define-key menu [pcl-cvs] + `(menu-item ,(purecopy "PCL-CVS") cvs-global-menu)) + (define-key menu [vc] nil) ;Create the place for the VC menu. + + (define-key menu [separator-compare] + menu-bar-separator) + + (define-key menu [epatch] + `(menu-item ,(purecopy "Apply Patch") menu-bar-epatch-menu)) + (define-key menu [ediff-merge] + `(menu-item ,(purecopy "Merge") menu-bar-ediff-merge-menu)) + (define-key menu [compare] + `(menu-item ,(purecopy "Compare (Ediff)") menu-bar-ediff-menu)) + + (define-key menu [separator-spell] + menu-bar-separator) + + (define-key menu [spell] + `(menu-item ,(purecopy "Spell Checking") ispell-menu-map)) + + (define-key menu [separator-prog] + menu-bar-separator) + + (define-key menu [semantic] + `(menu-item ,(purecopy "Source Code Parsers (Semantic)") + semantic-mode + :help ,(purecopy "Toggle automatic parsing in source code buffers (Semantic mode)") + :button (:toggle . (bound-and-true-p semantic-mode)))) + + (define-key menu [ede] + `(menu-item ,(purecopy "Project support (EDE)") + global-ede-mode + :help ,(purecopy "Toggle the Emacs Development Environment (Global EDE mode)") + :button (:toggle . (bound-and-true-p global-ede-mode)))) + + (define-key menu [gdb] + `(menu-item ,(purecopy "Debugger (GDB)...") gdb + :help ,(purecopy "Debug a program from within Emacs with GDB"))) + (define-key menu [shell-on-region] + `(menu-item ,(purecopy "Shell Command on Region...") shell-command-on-region + :enable mark-active + :help ,(purecopy "Pass marked region to a shell command"))) + (define-key menu [shell] + `(menu-item ,(purecopy "Shell Command...") shell-command + :help ,(purecopy "Invoke a shell command and catch its output"))) + (define-key menu [compile] + `(menu-item ,(purecopy "Compile...") compile + :help ,(purecopy "Invoke compiler or Make, view compilation errors"))) + (define-key menu [grep] + `(menu-item ,(purecopy "Search Files (Grep)...") grep + :help ,(purecopy "Search files for strings or regexps (with Grep)"))) + menu)) ;; The "Help" menu items -(defvar menu-bar-describe-menu (make-sparse-keymap "Describe")) - -(define-key menu-bar-describe-menu [mule-diag] - `(menu-item ,(purecopy "Show All of Mule Status") mule-diag - :visible (default-value 'enable-multibyte-characters) - :help ,(purecopy "Display multilingual environment settings"))) -(define-key menu-bar-describe-menu [describe-coding-system-briefly] - `(menu-item ,(purecopy "Describe Coding System (Briefly)") - describe-current-coding-system-briefly - :visible (default-value 'enable-multibyte-characters))) -(define-key menu-bar-describe-menu [describe-coding-system] - `(menu-item ,(purecopy "Describe Coding System...") describe-coding-system - :visible (default-value 'enable-multibyte-characters))) -(define-key menu-bar-describe-menu [describe-input-method] - `(menu-item ,(purecopy "Describe Input Method...") describe-input-method - :visible (default-value 'enable-multibyte-characters) - :help ,(purecopy "Keyboard layout for specific input method"))) -(define-key menu-bar-describe-menu [describe-language-environment] - `(menu-item ,(purecopy "Describe Language Environment") - ,describe-language-environment-map)) - -(define-key menu-bar-describe-menu [separator-desc-mule] - menu-bar-separator) - -(define-key menu-bar-describe-menu [list-keybindings] - `(menu-item ,(purecopy "List Key Bindings") describe-bindings - :help ,(purecopy "Display all current key bindings (keyboard shortcuts)"))) -(define-key menu-bar-describe-menu [describe-current-display-table] - `(menu-item ,(purecopy "Describe Display Table") describe-current-display-table - :help ,(purecopy "Describe the current display table"))) -(define-key menu-bar-describe-menu [describe-package] - `(menu-item ,(purecopy "Describe Package...") describe-package - :help ,(purecopy "Display documentation of a Lisp package"))) -(define-key menu-bar-describe-menu [describe-face] - `(menu-item ,(purecopy "Describe Face...") describe-face - :help ,(purecopy "Display the properties of a face"))) -(define-key menu-bar-describe-menu [describe-variable] - `(menu-item ,(purecopy "Describe Variable...") describe-variable - :help ,(purecopy "Display documentation of variable/option"))) -(define-key menu-bar-describe-menu [describe-function] - `(menu-item ,(purecopy "Describe Function...") describe-function - :help ,(purecopy "Display documentation of function/command"))) -(define-key menu-bar-describe-menu [describe-key-1] - `(menu-item ,(purecopy "Describe Key or Mouse Operation...") describe-key - ;; Users typically don't identify keys and menu items... - :help ,(purecopy "Display documentation of command bound to a \ +(defvar menu-bar-describe-menu + (let ((menu (make-sparse-keymap "Describe"))) + + (define-key menu [mule-diag] + `(menu-item ,(purecopy "Show All of Mule Status") mule-diag + :visible (default-value 'enable-multibyte-characters) + :help ,(purecopy "Display multilingual environment settings"))) + (define-key menu [describe-coding-system-briefly] + `(menu-item ,(purecopy "Describe Coding System (Briefly)") + describe-current-coding-system-briefly + :visible (default-value 'enable-multibyte-characters))) + (define-key menu [describe-coding-system] + `(menu-item ,(purecopy "Describe Coding System...") describe-coding-system + :visible (default-value 'enable-multibyte-characters))) + (define-key menu [describe-input-method] + `(menu-item ,(purecopy "Describe Input Method...") describe-input-method + :visible (default-value 'enable-multibyte-characters) + :help ,(purecopy "Keyboard layout for specific input method"))) + (define-key menu [describe-language-environment] + `(menu-item ,(purecopy "Describe Language Environment") + ,describe-language-environment-map)) + + (define-key menu [separator-desc-mule] + menu-bar-separator) + + (define-key menu [list-keybindings] + `(menu-item ,(purecopy "List Key Bindings") describe-bindings + :help ,(purecopy "Display all current key bindings (keyboard shortcuts)"))) + (define-key menu [describe-current-display-table] + `(menu-item ,(purecopy "Describe Display Table") describe-current-display-table + :help ,(purecopy "Describe the current display table"))) + (define-key menu [describe-package] + `(menu-item ,(purecopy "Describe Package...") describe-package + :help ,(purecopy "Display documentation of a Lisp package"))) + (define-key menu [describe-face] + `(menu-item ,(purecopy "Describe Face...") describe-face + :help ,(purecopy "Display the properties of a face"))) + (define-key menu [describe-variable] + `(menu-item ,(purecopy "Describe Variable...") describe-variable + :help ,(purecopy "Display documentation of variable/option"))) + (define-key menu [describe-function] + `(menu-item ,(purecopy "Describe Function...") describe-function + :help ,(purecopy "Display documentation of function/command"))) + (define-key menu [describe-key-1] + `(menu-item ,(purecopy "Describe Key or Mouse Operation...") describe-key + ;; Users typically don't identify keys and menu items... + :help ,(purecopy "Display documentation of command bound to a \ key, a click, or a menu-item"))) -(define-key menu-bar-describe-menu [describe-mode] - `(menu-item ,(purecopy "Describe Buffer Modes") describe-mode - :help ,(purecopy "Describe this buffer's major and minor mode"))) + (define-key menu [describe-mode] + `(menu-item ,(purecopy "Describe Buffer Modes") describe-mode + :help ,(purecopy "Describe this buffer's major and minor mode"))) + menu)) -(defvar menu-bar-search-documentation-menu - (make-sparse-keymap "Search Documentation")) (defun menu-bar-read-lispref () "Display the Emacs Lisp Reference manual in Info mode." (interactive) @@ -1605,80 +1632,69 @@ key, a click, or a menu-item"))) (info "elisp") (Info-index topic)) -(define-key menu-bar-search-documentation-menu [search-documentation-strings] - `(menu-item ,(purecopy "Search Documentation Strings...") apropos-documentation - :help - ,(purecopy "Find functions and variables whose doc strings match a regexp"))) -(define-key menu-bar-search-documentation-menu [find-any-object-by-name] - `(menu-item ,(purecopy "Find Any Object by Name...") apropos - :help ,(purecopy "Find symbols of any kind whose names match a regexp"))) -(define-key menu-bar-search-documentation-menu [find-option-by-value] - `(menu-item ,(purecopy "Find Options by Value...") apropos-value - :help ,(purecopy "Find variables whose values match a regexp"))) -(define-key menu-bar-search-documentation-menu [find-options-by-name] - `(menu-item ,(purecopy "Find Options by Name...") apropos-variable - :help ,(purecopy "Find variables whose names match a regexp"))) -(define-key menu-bar-search-documentation-menu [find-commands-by-name] - `(menu-item ,(purecopy "Find Commands by Name...") apropos-command - :help ,(purecopy "Find commands whose names match a regexp"))) -(define-key menu-bar-search-documentation-menu [sep1] - menu-bar-separator) -(define-key menu-bar-search-documentation-menu [lookup-command-in-manual] - `(menu-item ,(purecopy "Look Up Command in User Manual...") Info-goto-emacs-command-node - :help ,(purecopy "Display manual section that describes a command"))) -(define-key menu-bar-search-documentation-menu [lookup-key-in-manual] - `(menu-item ,(purecopy "Look Up Key in User Manual...") Info-goto-emacs-key-command-node - :help ,(purecopy "Display manual section that describes a key"))) -(define-key menu-bar-search-documentation-menu [lookup-subject-in-elisp-manual] - `(menu-item ,(purecopy "Look Up Subject in ELisp Manual...") elisp-index-search - :help ,(purecopy "Find description of a subject in Emacs Lisp manual"))) -(define-key menu-bar-search-documentation-menu [lookup-subject-in-emacs-manual] - `(menu-item ,(purecopy "Look Up Subject in User Manual...") emacs-index-search - :help ,(purecopy "Find description of a subject in Emacs User manual"))) -(define-key menu-bar-search-documentation-menu [emacs-terminology] - `(menu-item ,(purecopy "Emacs Terminology") search-emacs-glossary - :help ,(purecopy "Display the Glossary section of the Emacs manual"))) - -(defvar menu-bar-manuals-menu (make-sparse-keymap "More Manuals")) - -(define-key menu-bar-manuals-menu [man] - `(menu-item ,(purecopy "Read Man Page...") manual-entry - :help ,(purecopy "Man-page docs for external commands and libraries"))) -(define-key menu-bar-manuals-menu [sep2] - menu-bar-separator) -(define-key menu-bar-manuals-menu [order-emacs-manuals] - `(menu-item ,(purecopy "Ordering Manuals") view-order-manuals - :help ,(purecopy "How to order manuals from the Free Software Foundation"))) -(define-key menu-bar-manuals-menu [lookup-subject-in-all-manuals] - `(menu-item ,(purecopy "Lookup Subject in all Manuals...") info-apropos - :help ,(purecopy "Find description of a subject in all installed manuals"))) -(define-key menu-bar-manuals-menu [other-manuals] - `(menu-item ,(purecopy "All Other Manuals (Info)") Info-directory - :help ,(purecopy "Read any of the installed manuals"))) -(define-key menu-bar-manuals-menu [emacs-lisp-reference] - `(menu-item ,(purecopy "Emacs Lisp Reference") menu-bar-read-lispref - :help ,(purecopy "Read the Emacs Lisp Reference manual"))) -(define-key menu-bar-manuals-menu [emacs-lisp-intro] - `(menu-item ,(purecopy "Introduction to Emacs Lisp") menu-bar-read-lispintro - :help ,(purecopy "Read the Introduction to Emacs Lisp Programming"))) - -(define-key menu-bar-help-menu [about-gnu-project] - `(menu-item ,(purecopy "About GNU") describe-gnu-project - :help ,(purecopy "About the GNU System, GNU Project, and GNU/Linux"))) -(define-key menu-bar-help-menu [about-emacs] - `(menu-item ,(purecopy "About Emacs") about-emacs - :help ,(purecopy "Display version number, copyright info, and basic help"))) -(define-key menu-bar-help-menu [sep4] - menu-bar-separator) -(define-key menu-bar-help-menu [describe-no-warranty] - `(menu-item ,(purecopy "(Non)Warranty") describe-no-warranty - :help ,(purecopy "Explain that Emacs has NO WARRANTY"))) -(define-key menu-bar-help-menu [describe-copying] - `(menu-item ,(purecopy "Copying Conditions") describe-copying - :help ,(purecopy "Show the Emacs license (GPL)"))) -(define-key menu-bar-help-menu [getting-new-versions] - `(menu-item ,(purecopy "Getting New Versions") describe-distribution - :help ,(purecopy "How to get the latest version of Emacs"))) +(defvar menu-bar-search-documentation-menu + (let ((menu (make-sparse-keymap "Search Documentation"))) + + (define-key menu [search-documentation-strings] + `(menu-item ,(purecopy "Search Documentation Strings...") apropos-documentation + :help + ,(purecopy "Find functions and variables whose doc strings match a regexp"))) + (define-key menu [find-any-object-by-name] + `(menu-item ,(purecopy "Find Any Object by Name...") apropos + :help ,(purecopy "Find symbols of any kind whose names match a regexp"))) + (define-key menu [find-option-by-value] + `(menu-item ,(purecopy "Find Options by Value...") apropos-value + :help ,(purecopy "Find variables whose values match a regexp"))) + (define-key menu [find-options-by-name] + `(menu-item ,(purecopy "Find Options by Name...") apropos-variable + :help ,(purecopy "Find variables whose names match a regexp"))) + (define-key menu [find-commands-by-name] + `(menu-item ,(purecopy "Find Commands by Name...") apropos-command + :help ,(purecopy "Find commands whose names match a regexp"))) + (define-key menu [sep1] + menu-bar-separator) + (define-key menu [lookup-command-in-manual] + `(menu-item ,(purecopy "Look Up Command in User Manual...") Info-goto-emacs-command-node + :help ,(purecopy "Display manual section that describes a command"))) + (define-key menu [lookup-key-in-manual] + `(menu-item ,(purecopy "Look Up Key in User Manual...") Info-goto-emacs-key-command-node + :help ,(purecopy "Display manual section that describes a key"))) + (define-key menu [lookup-subject-in-elisp-manual] + `(menu-item ,(purecopy "Look Up Subject in ELisp Manual...") elisp-index-search + :help ,(purecopy "Find description of a subject in Emacs Lisp manual"))) + (define-key menu [lookup-subject-in-emacs-manual] + `(menu-item ,(purecopy "Look Up Subject in User Manual...") emacs-index-search + :help ,(purecopy "Find description of a subject in Emacs User manual"))) + (define-key menu [emacs-terminology] + `(menu-item ,(purecopy "Emacs Terminology") search-emacs-glossary + :help ,(purecopy "Display the Glossary section of the Emacs manual"))) + menu)) + +(defvar menu-bar-manuals-menu + (let ((menu (make-sparse-keymap "More Manuals"))) + + (define-key menu [man] + `(menu-item ,(purecopy "Read Man Page...") manual-entry + :help ,(purecopy "Man-page docs for external commands and libraries"))) + (define-key menu [sep2] + menu-bar-separator) + (define-key menu [order-emacs-manuals] + `(menu-item ,(purecopy "Ordering Manuals") view-order-manuals + :help ,(purecopy "How to order manuals from the Free Software Foundation"))) + (define-key menu [lookup-subject-in-all-manuals] + `(menu-item ,(purecopy "Lookup Subject in all Manuals...") info-apropos + :help ,(purecopy "Find description of a subject in all installed manuals"))) + (define-key menu [other-manuals] + `(menu-item ,(purecopy "All Other Manuals (Info)") Info-directory + :help ,(purecopy "Read any of the installed manuals"))) + (define-key menu [emacs-lisp-reference] + `(menu-item ,(purecopy "Emacs Lisp Reference") menu-bar-read-lispref + :help ,(purecopy "Read the Emacs Lisp Reference manual"))) + (define-key menu [emacs-lisp-intro] + `(menu-item ,(purecopy "Introduction to Emacs Lisp") menu-bar-read-lispintro + :help ,(purecopy "Read the Introduction to Emacs Lisp Programming"))) + menu)) + (defun menu-bar-help-extra-packages () "Display help about some additional packages available for Emacs." (interactive) @@ -1686,60 +1702,101 @@ key, a click, or a menu-item"))) (view-file (expand-file-name "MORE.STUFF" data-directory)) (goto-address-mode 1))) -(define-key menu-bar-help-menu [sep2] - menu-bar-separator) -(define-key menu-bar-help-menu [external-packages] - `(menu-item ,(purecopy "Finding Extra Packages") menu-bar-help-extra-packages - :help ,(purecopy "Lisp packages distributed separately for use in Emacs"))) -(define-key menu-bar-help-menu [find-emacs-packages] - `(menu-item ,(purecopy "Search Built-in Packages") finder-by-keyword - :help ,(purecopy "Find built-in packages and features by keyword"))) -(define-key menu-bar-help-menu [more-manuals] - `(menu-item ,(purecopy "More Manuals") ,menu-bar-manuals-menu)) -(define-key menu-bar-help-menu [emacs-manual] - `(menu-item ,(purecopy "Read the Emacs Manual") info-emacs-manual - :help ,(purecopy "Full documentation of Emacs features"))) -(define-key menu-bar-help-menu [describe] - `(menu-item ,(purecopy "Describe") ,menu-bar-describe-menu)) -(define-key menu-bar-help-menu [search-documentation] - `(menu-item ,(purecopy "Search Documentation") ,menu-bar-search-documentation-menu)) -(define-key menu-bar-help-menu [sep1] - menu-bar-separator) -(define-key menu-bar-help-menu [emacs-psychotherapist] - `(menu-item ,(purecopy "Emacs Psychotherapist") doctor - :help ,(purecopy "Our doctor will help you feel better"))) -(define-key menu-bar-help-menu [send-emacs-bug-report] - `(menu-item ,(purecopy "Send Bug Report...") report-emacs-bug - :help ,(purecopy "Send e-mail to Emacs maintainers"))) -(define-key menu-bar-help-menu [emacs-known-problems] - `(menu-item ,(purecopy "Emacs Known Problems") view-emacs-problems - :help ,(purecopy "Read about known problems with Emacs"))) -(define-key menu-bar-help-menu [emacs-news] - `(menu-item ,(purecopy "Emacs News") view-emacs-news - :help ,(purecopy "New features of this version"))) -(define-key menu-bar-help-menu [emacs-faq] - `(menu-item ,(purecopy "Emacs FAQ") view-emacs-FAQ - :help ,(purecopy "Frequently asked (and answered) questions about Emacs"))) (defun help-with-tutorial-spec-language () "Use the Emacs tutorial, specifying which language you want." (interactive) (help-with-tutorial t)) -(define-key menu-bar-help-menu [emacs-tutorial-language-specific] - `(menu-item ,(purecopy "Emacs Tutorial (choose language)...") - help-with-tutorial-spec-language - :help ,(purecopy "Learn how to use Emacs (choose a language)"))) -(define-key menu-bar-help-menu [emacs-tutorial] - `(menu-item ,(purecopy "Emacs Tutorial") help-with-tutorial - :help ,(purecopy "Learn how to use Emacs"))) - -;; In OS X it's in the app menu already. -;; FIXME? There already is an "About Emacs" (sans ...) entry in the Help menu. -(and (featurep 'ns) - (not (eq system-type 'darwin)) - (define-key menu-bar-help-menu [info-panel] - `(menu-item ,(purecopy "About Emacs...") ns-do-emacs-info-panel))) +(defvar menu-bar-help-menu + (let ((menu (make-sparse-keymap "Help"))) + (define-key menu [about-gnu-project] + `(menu-item ,(purecopy "About GNU") describe-gnu-project + :help ,(purecopy "About the GNU System, GNU Project, and GNU/Linux"))) + (define-key menu [about-emacs] + `(menu-item ,(purecopy "About Emacs") about-emacs + :help ,(purecopy "Display version number, copyright info, and basic help"))) + (define-key menu [sep4] + menu-bar-separator) + (define-key menu [describe-no-warranty] + `(menu-item ,(purecopy "(Non)Warranty") describe-no-warranty + :help ,(purecopy "Explain that Emacs has NO WARRANTY"))) + (define-key menu [describe-copying] + `(menu-item ,(purecopy "Copying Conditions") describe-copying + :help ,(purecopy "Show the Emacs license (GPL)"))) + (define-key menu [getting-new-versions] + `(menu-item ,(purecopy "Getting New Versions") describe-distribution + :help ,(purecopy "How to get the latest version of Emacs"))) + (define-key menu [sep2] + menu-bar-separator) + (define-key menu [external-packages] + `(menu-item ,(purecopy "Finding Extra Packages") menu-bar-help-extra-packages + :help ,(purecopy "Lisp packages distributed separately for use in Emacs"))) + (define-key menu [find-emacs-packages] + `(menu-item ,(purecopy "Search Built-in Packages") finder-by-keyword + :help ,(purecopy "Find built-in packages and features by keyword"))) + (define-key menu [more-manuals] + `(menu-item ,(purecopy "More Manuals") ,menu-bar-manuals-menu)) + (define-key menu [emacs-manual] + `(menu-item ,(purecopy "Read the Emacs Manual") info-emacs-manual + :help ,(purecopy "Full documentation of Emacs features"))) + (define-key menu [describe] + `(menu-item ,(purecopy "Describe") ,menu-bar-describe-menu)) + (define-key menu [search-documentation] + `(menu-item ,(purecopy "Search Documentation") ,menu-bar-search-documentation-menu)) + (define-key menu [sep1] + menu-bar-separator) + (define-key menu [emacs-psychotherapist] + `(menu-item ,(purecopy "Emacs Psychotherapist") doctor + :help ,(purecopy "Our doctor will help you feel better"))) + (define-key menu [send-emacs-bug-report] + `(menu-item ,(purecopy "Send Bug Report...") report-emacs-bug + :help ,(purecopy "Send e-mail to Emacs maintainers"))) + (define-key menu [emacs-known-problems] + `(menu-item ,(purecopy "Emacs Known Problems") view-emacs-problems + :help ,(purecopy "Read about known problems with Emacs"))) + (define-key menu [emacs-news] + `(menu-item ,(purecopy "Emacs News") view-emacs-news + :help ,(purecopy "New features of this version"))) + (define-key menu [emacs-faq] + `(menu-item ,(purecopy "Emacs FAQ") view-emacs-FAQ + :help ,(purecopy "Frequently asked (and answered) questions about Emacs"))) + + (define-key menu [emacs-tutorial-language-specific] + `(menu-item ,(purecopy "Emacs Tutorial (choose language)...") + help-with-tutorial-spec-language + :help ,(purecopy "Learn how to use Emacs (choose a language)"))) + (define-key menu [emacs-tutorial] + `(menu-item ,(purecopy "Emacs Tutorial") help-with-tutorial + :help ,(purecopy "Learn how to use Emacs"))) + + ;; In OS X it's in the app menu already. + ;; FIXME? There already is an "About Emacs" (sans ...) entry in the Help menu. + (and (featurep 'ns) + (not (eq system-type 'darwin)) + (define-key menu [info-panel] + `(menu-item ,(purecopy "About Emacs...") ns-do-emacs-info-panel))) + menu)) + +(define-key global-map [menu-bar tools] + (cons (purecopy "Tools") menu-bar-tools-menu)) +(define-key global-map [menu-bar buffer] + (cons (purecopy "Buffers") global-buffers-menu-map)) +(define-key global-map [menu-bar options] + (cons (purecopy "Options") menu-bar-options-menu)) +(define-key global-map [menu-bar edit] + (cons (purecopy "Edit") menu-bar-edit-menu)) +(define-key global-map [menu-bar file] + (cons (purecopy "File") menu-bar-file-menu)) + +;; Put "Help" menu at the end, or Info at the front. +;; If running under GNUstep, "Help" is moved and renamed "Info" (see below). +(if (and (featurep 'ns) + (not (eq system-type 'darwin))) + (define-key global-map [menu-bar help-menu] + (cons (purecopy "Info") menu-bar-help-menu)) + (define-key-after global-map [menu-bar help-menu] + (cons (purecopy "Help") menu-bar-help-menu))) (defun menu-bar-menu-frame-live-and-visible-p () "Return non-nil if the menu frame is alive and visible. diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index 3c4588780a2..d75b36051f0 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -490,6 +490,11 @@ If your system's ping continues until interrupted, you can try setting (autoload 'comint-mode "comint" nil t) +(defvar nslookup-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\t" 'comint-dynamic-complete) + map)) + ;; Using a derived mode gives us keymaps, hooks, etc. (define-derived-mode nslookup-mode comint-mode "Nslookup" "Major mode for interacting with the nslookup program." @@ -499,8 +504,6 @@ If your system's ping continues until interrupted, you can try setting (setq comint-prompt-regexp nslookup-prompt-regexp) (setq comint-input-autoexpand t)) -(define-key nslookup-mode-map "\t" 'comint-dynamic-complete) - ;;;###autoload (defun dns-lookup-host (host) "Lookup the DNS information for HOST (name or IP address)." @@ -556,6 +559,12 @@ If your system's ping continues until interrupted, you can try setting (list host))) (pop-to-buffer buf))) +(defvar ftp-mode-map + (let ((map (make-sparse-keymap))) + ;; Occasionally useful + (define-key map "\t" 'comint-dynamic-complete) + map)) + (define-derived-mode ftp-mode comint-mode "FTP" "Major mode for interacting with the ftp program." (setq comint-prompt-regexp ftp-prompt-regexp) @@ -571,9 +580,6 @@ If your system's ping continues until interrupted, you can try setting (add-hook 'comint-output-filter-functions 'comint-watch-for-password-prompt nil t))) -;; Occasionally useful -(define-key ftp-mode-map "\t" 'comint-dynamic-complete) - (defun smbclient (host service) "Connect to SERVICE on HOST via SMB." (interactive diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el index 0e1279cd86c..cd662cb1784 100644 --- a/lisp/net/newst-plainview.el +++ b/lisp/net/newst-plainview.el @@ -378,6 +378,107 @@ images." ;;; Newsticker mode ;; ====================================================================== + +;; newsticker menu +(defvar newsticker-menu + (let ((map (make-sparse-keymap "Newsticker"))) + + (define-key map [newsticker-browse-url] + '("Browse URL for item at point" . newsticker-browse-url)) + (define-key map [newsticker-separator-1] + '("--")) + (define-key map [newsticker-buffer-update] + '("Update buffer" . newsticker-buffer-update)) + (define-key map [newsticker-separator-2] + '("--")) + (define-key map [newsticker-get-all-news] + '("Get news from all feeds" . newsticker-get-all-news)) + (define-key map [newsticker-get-news-at-point] + '("Get news from feed at point" . newsticker-get-news-at-point)) + (define-key map [newsticker-separator-3] + '("--")) + (define-key map [newsticker-mark-all-items-as-read] + '("Mark all items as read" . newsticker-mark-all-items-as-read)) + (define-key map [newsticker-mark-all-items-at-point-as-read] + '("Mark all items in feed at point as read" . + newsticker-mark-all-items-at-point-as-read)) + (define-key map [newsticker-mark-item-at-point-as-read] + '("Mark item at point as read" . + newsticker-mark-item-at-point-as-read)) + (define-key map [newsticker-mark-item-at-point-as-immortal] + '("Toggle immortality for item at point" . + newsticker-mark-item-at-point-as-immortal)) + (define-key map [newsticker-separator-4] + '("--")) + (define-key map [newsticker-toggle-auto-narrow-to-item] + '("Narrow to single item" . newsticker-toggle-auto-narrow-to-item)) + (define-key map [newsticker-toggle-auto-narrow-to-feed] + '("Narrow to single news feed" . newsticker-toggle-auto-narrow-to-feed)) + (define-key map [newsticker-hide-old-items] + '("Hide old items" . newsticker-hide-old-items)) + (define-key map [newsticker-show-old-items] + '("Show old items" . newsticker-show-old-items)) + (define-key map [newsticker-next-item] + '("Go to next item" . newsticker-next-item)) + (define-key map [newsticker-previous-item] + '("Go to previous item" . newsticker-previous-item)) + map)) + +(defvar newsticker-mode-map + (let ((map (make-keymap))) + (define-key map "sO" 'newsticker-show-old-items) + (define-key map "hO" 'newsticker-hide-old-items) + (define-key map "sa" 'newsticker-show-all-desc) + (define-key map "ha" 'newsticker-hide-all-desc) + (define-key map "sf" 'newsticker-show-feed-desc) + (define-key map "hf" 'newsticker-hide-feed-desc) + (define-key map "so" 'newsticker-show-old-item-desc) + (define-key map "ho" 'newsticker-hide-old-item-desc) + (define-key map "sn" 'newsticker-show-new-item-desc) + (define-key map "hn" 'newsticker-hide-new-item-desc) + (define-key map "se" 'newsticker-show-entry) + (define-key map "he" 'newsticker-hide-entry) + (define-key map "sx" 'newsticker-show-extra) + (define-key map "hx" 'newsticker-hide-extra) + + (define-key map " " 'scroll-up) + (define-key map "q" 'newsticker-close-buffer) + (define-key map "p" 'newsticker-previous-item) + (define-key map "P" 'newsticker-previous-new-item) + (define-key map "F" 'newsticker-previous-feed) + (define-key map "\t" 'newsticker-next-item) + (define-key map "n" 'newsticker-next-item) + (define-key map "N" 'newsticker-next-new-item) + (define-key map "f" 'newsticker-next-feed) + (define-key map "M" 'newsticker-mark-all-items-as-read) + (define-key map "m" + 'newsticker-mark-all-items-at-point-as-read-and-redraw) + (define-key map "o" + 'newsticker-mark-item-at-point-as-read) + (define-key map "O" + 'newsticker-mark-all-items-at-point-as-read) + (define-key map "G" 'newsticker-get-all-news) + (define-key map "g" 'newsticker-get-news-at-point) + (define-key map "u" 'newsticker-buffer-update) + (define-key map "U" 'newsticker-buffer-force-update) + (define-key map "a" 'newsticker-add-url) + + (define-key map "i" + 'newsticker-mark-item-at-point-as-immortal) + + (define-key map "xf" + 'newsticker-toggle-auto-narrow-to-feed) + (define-key map "xi" + 'newsticker-toggle-auto-narrow-to-item) + + ;; Bind menu to mouse. + (define-key map [down-mouse-3] newsticker-menu) + ;; Put menu in menu-bar. + (define-key map [menu-bar Newsticker] + (cons "Newsticker" newsticker-menu)) + + map)) + (define-derived-mode newsticker-mode fundamental-mode "NewsTicker" "Viewing news feeds in Emacs." @@ -414,114 +515,16 @@ images." (add-to-invisibility-spec 'extra)) (newsticker--buffer-set-uptodate nil)) -;; refine its mode-map -(define-key newsticker-mode-map "sO" 'newsticker-show-old-items) -(define-key newsticker-mode-map "hO" 'newsticker-hide-old-items) -(define-key newsticker-mode-map "sa" 'newsticker-show-all-desc) -(define-key newsticker-mode-map "ha" 'newsticker-hide-all-desc) -(define-key newsticker-mode-map "sf" 'newsticker-show-feed-desc) -(define-key newsticker-mode-map "hf" 'newsticker-hide-feed-desc) -(define-key newsticker-mode-map "so" 'newsticker-show-old-item-desc) -(define-key newsticker-mode-map "ho" 'newsticker-hide-old-item-desc) -(define-key newsticker-mode-map "sn" 'newsticker-show-new-item-desc) -(define-key newsticker-mode-map "hn" 'newsticker-hide-new-item-desc) -(define-key newsticker-mode-map "se" 'newsticker-show-entry) -(define-key newsticker-mode-map "he" 'newsticker-hide-entry) -(define-key newsticker-mode-map "sx" 'newsticker-show-extra) -(define-key newsticker-mode-map "hx" 'newsticker-hide-extra) - -(define-key newsticker-mode-map " " 'scroll-up) -(define-key newsticker-mode-map "q" 'newsticker-close-buffer) -(define-key newsticker-mode-map "p" 'newsticker-previous-item) -(define-key newsticker-mode-map "P" 'newsticker-previous-new-item) -(define-key newsticker-mode-map "F" 'newsticker-previous-feed) -(define-key newsticker-mode-map "\t" 'newsticker-next-item) -(define-key newsticker-mode-map "n" 'newsticker-next-item) -(define-key newsticker-mode-map "N" 'newsticker-next-new-item) -(define-key newsticker-mode-map "f" 'newsticker-next-feed) -(define-key newsticker-mode-map "M" 'newsticker-mark-all-items-as-read) -(define-key newsticker-mode-map "m" - 'newsticker-mark-all-items-at-point-as-read-and-redraw) -(define-key newsticker-mode-map "o" - 'newsticker-mark-item-at-point-as-read) -(define-key newsticker-mode-map "O" - 'newsticker-mark-all-items-at-point-as-read) -(define-key newsticker-mode-map "G" 'newsticker-get-all-news) -(define-key newsticker-mode-map "g" 'newsticker-get-news-at-point) -(define-key newsticker-mode-map "u" 'newsticker-buffer-update) -(define-key newsticker-mode-map "U" 'newsticker-buffer-force-update) -(define-key newsticker-mode-map "a" 'newsticker-add-url) - -(define-key newsticker-mode-map "i" - 'newsticker-mark-item-at-point-as-immortal) - -(define-key newsticker-mode-map "xf" - 'newsticker-toggle-auto-narrow-to-feed) -(define-key newsticker-mode-map "xi" - 'newsticker-toggle-auto-narrow-to-item) - ;; maps for the clickable portions -(defvar newsticker--url-keymap (make-sparse-keymap) +(defvar newsticker--url-keymap + (let ((map (make-sparse-keymap))) + (define-key map [mouse-1] 'newsticker-mouse-browse-url) + (define-key map [mouse-2] 'newsticker-mouse-browse-url) + (define-key map "\n" 'newsticker-browse-url) + (define-key map "\C-m" 'newsticker-browse-url) + (define-key map [(control return)] 'newsticker-handle-url) + map) "Key map for click-able headings in the newsticker buffer.") -(define-key newsticker--url-keymap [mouse-1] - 'newsticker-mouse-browse-url) -(define-key newsticker--url-keymap [mouse-2] - 'newsticker-mouse-browse-url) -(define-key newsticker--url-keymap "\n" - 'newsticker-browse-url) -(define-key newsticker--url-keymap "\C-m" - 'newsticker-browse-url) -(define-key newsticker--url-keymap [(control return)] - 'newsticker-handle-url) - -;; newsticker menu -(defvar newsticker-menu (make-sparse-keymap "Newsticker")) - -(define-key newsticker-menu [newsticker-browse-url] - '("Browse URL for item at point" . newsticker-browse-url)) -(define-key newsticker-menu [newsticker-separator-1] - '("--")) -(define-key newsticker-menu [newsticker-buffer-update] - '("Update buffer" . newsticker-buffer-update)) -(define-key newsticker-menu [newsticker-separator-2] - '("--")) -(define-key newsticker-menu [newsticker-get-all-news] - '("Get news from all feeds" . newsticker-get-all-news)) -(define-key newsticker-menu [newsticker-get-news-at-point] - '("Get news from feed at point" . newsticker-get-news-at-point)) -(define-key newsticker-menu [newsticker-separator-3] - '("--")) -(define-key newsticker-menu [newsticker-mark-all-items-as-read] - '("Mark all items as read" . newsticker-mark-all-items-as-read)) -(define-key newsticker-menu [newsticker-mark-all-items-at-point-as-read] - '("Mark all items in feed at point as read" . - newsticker-mark-all-items-at-point-as-read)) -(define-key newsticker-menu [newsticker-mark-item-at-point-as-read] - '("Mark item at point as read" . - newsticker-mark-item-at-point-as-read)) -(define-key newsticker-menu [newsticker-mark-item-at-point-as-immortal] - '("Toggle immortality for item at point" . - newsticker-mark-item-at-point-as-immortal)) -(define-key newsticker-menu [newsticker-separator-4] - '("--")) -(define-key newsticker-menu [newsticker-toggle-auto-narrow-to-item] - '("Narrow to single item" . newsticker-toggle-auto-narrow-to-item)) -(define-key newsticker-menu [newsticker-toggle-auto-narrow-to-feed] - '("Narrow to single news feed" . newsticker-toggle-auto-narrow-to-feed)) -(define-key newsticker-menu [newsticker-hide-old-items] - '("Hide old items" . newsticker-hide-old-items)) -(define-key newsticker-menu [newsticker-show-old-items] - '("Show old items" . newsticker-show-old-items)) -(define-key newsticker-menu [newsticker-next-item] - '("Go to next item" . newsticker-next-item)) -(define-key newsticker-menu [newsticker-previous-item] - '("Go to previous item" . newsticker-previous-item)) - -;; bind menu to mouse -(define-key newsticker-mode-map [down-mouse-3] newsticker-menu) -;; Put menu in menu-bar -(define-key newsticker-mode-map [menu-bar Newsticker] - (cons "Newsticker" newsticker-menu)) ;; ====================================================================== diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index f0581838c48..8e4ded624de 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -861,41 +861,43 @@ IRC command completion is performed only if '/' is the first input char." (interactive "zCoding system for outgoing messages: ") (setq rcirc-encode-coding-system coding-system)) -(defvar rcirc-mode-map (make-sparse-keymap) +(defvar rcirc-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "RET") 'rcirc-send-input) + (define-key map (kbd "M-p") 'rcirc-insert-prev-input) + (define-key map (kbd "M-n") 'rcirc-insert-next-input) + (define-key map (kbd "TAB") 'rcirc-complete) + (define-key map (kbd "C-c C-b") 'rcirc-browse-url) + (define-key map (kbd "C-c C-c") 'rcirc-edit-multiline) + (define-key map (kbd "C-c C-j") 'rcirc-cmd-join) + (define-key map (kbd "C-c C-k") 'rcirc-cmd-kick) + (define-key map (kbd "C-c C-l") 'rcirc-toggle-low-priority) + (define-key map (kbd "C-c C-d") 'rcirc-cmd-mode) + (define-key map (kbd "C-c C-m") 'rcirc-cmd-msg) + (define-key map (kbd "C-c C-r") 'rcirc-cmd-nick) ; rename + (define-key map (kbd "C-c C-o") 'rcirc-omit-mode) + (define-key map (kbd "M-o") 'rcirc-omit-mode) + (define-key map (kbd "C-c C-p") 'rcirc-cmd-part) + (define-key map (kbd "C-c C-q") 'rcirc-cmd-query) + (define-key map (kbd "C-c C-t") 'rcirc-cmd-topic) + (define-key map (kbd "C-c C-n") 'rcirc-cmd-names) + (define-key map (kbd "C-c C-w") 'rcirc-cmd-whois) + (define-key map (kbd "C-c C-x") 'rcirc-cmd-quit) + (define-key map (kbd "C-c TAB") ; C-i + 'rcirc-toggle-ignore-buffer-activity) + (define-key map (kbd "C-c C-s") 'rcirc-switch-to-server-buffer) + (define-key map (kbd "C-c C-a") 'rcirc-jump-to-first-unread-line) + map) "Keymap for rcirc mode.") -(define-key rcirc-mode-map (kbd "RET") 'rcirc-send-input) -(define-key rcirc-mode-map (kbd "M-p") 'rcirc-insert-prev-input) -(define-key rcirc-mode-map (kbd "M-n") 'rcirc-insert-next-input) -(define-key rcirc-mode-map (kbd "TAB") 'rcirc-complete) -(define-key rcirc-mode-map (kbd "C-c C-b") 'rcirc-browse-url) -(define-key rcirc-mode-map (kbd "C-c C-c") 'rcirc-edit-multiline) -(define-key rcirc-mode-map (kbd "C-c C-j") 'rcirc-cmd-join) -(define-key rcirc-mode-map (kbd "C-c C-k") 'rcirc-cmd-kick) -(define-key rcirc-mode-map (kbd "C-c C-l") 'rcirc-toggle-low-priority) -(define-key rcirc-mode-map (kbd "C-c C-d") 'rcirc-cmd-mode) -(define-key rcirc-mode-map (kbd "C-c C-m") 'rcirc-cmd-msg) -(define-key rcirc-mode-map (kbd "C-c C-r") 'rcirc-cmd-nick) ; rename -(define-key rcirc-mode-map (kbd "C-c C-o") 'rcirc-omit-mode) -(define-key rcirc-mode-map (kbd "M-o") 'rcirc-omit-mode) -(define-key rcirc-mode-map (kbd "C-c C-p") 'rcirc-cmd-part) -(define-key rcirc-mode-map (kbd "C-c C-q") 'rcirc-cmd-query) -(define-key rcirc-mode-map (kbd "C-c C-t") 'rcirc-cmd-topic) -(define-key rcirc-mode-map (kbd "C-c C-n") 'rcirc-cmd-names) -(define-key rcirc-mode-map (kbd "C-c C-w") 'rcirc-cmd-whois) -(define-key rcirc-mode-map (kbd "C-c C-x") 'rcirc-cmd-quit) -(define-key rcirc-mode-map (kbd "C-c TAB") ; C-i - 'rcirc-toggle-ignore-buffer-activity) -(define-key rcirc-mode-map (kbd "C-c C-s") 'rcirc-switch-to-server-buffer) -(define-key rcirc-mode-map (kbd "C-c C-a") 'rcirc-jump-to-first-unread-line) - -(defvar rcirc-browse-url-map (make-sparse-keymap) +(defvar rcirc-browse-url-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "RET") 'rcirc-browse-url-at-point) + (define-key map (kbd "") 'rcirc-browse-url-at-mouse) + (define-key map [follow-link] 'mouse-face) + map) "Keymap used for browsing URLs in `rcirc-mode'.") -(define-key rcirc-browse-url-map (kbd "RET") 'rcirc-browse-url-at-point) -(define-key rcirc-browse-url-map (kbd "") 'rcirc-browse-url-at-mouse) -(define-key rcirc-browse-url-map [follow-link] 'mouse-face) - (defvar rcirc-short-buffer-name nil "Generated abbreviation to use to indicate buffer activity.") @@ -1216,16 +1218,14 @@ Create the buffer if it doesn't exist." (and (> pos 0) (goto-char pos)) (message "Type C-c C-c to return text to %s, or C-c C-k to cancel" parent)))) -(defvar rcirc-multiline-minor-mode-map (make-sparse-keymap) +(defvar rcirc-multiline-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-c C-c") 'rcirc-multiline-minor-submit) + (define-key map (kbd "C-x C-s") 'rcirc-multiline-minor-submit) + (define-key map (kbd "C-c C-k") 'rcirc-multiline-minor-cancel) + (define-key map (kbd "ESC ESC ESC") 'rcirc-multiline-minor-cancel) + map) "Keymap for multiline mode in rcirc.") -(define-key rcirc-multiline-minor-mode-map - (kbd "C-c C-c") 'rcirc-multiline-minor-submit) -(define-key rcirc-multiline-minor-mode-map - (kbd "C-x C-s") 'rcirc-multiline-minor-submit) -(define-key rcirc-multiline-minor-mode-map - (kbd "C-c C-k") 'rcirc-multiline-minor-cancel) -(define-key rcirc-multiline-minor-mode-map - (kbd "ESC ESC ESC") 'rcirc-multiline-minor-cancel) (define-minor-mode rcirc-multiline-minor-mode "Minor mode for editing multiple lines in rcirc." @@ -1742,12 +1742,13 @@ This function does not alter the INPUT string." (mapconcat 'identity sorted sep))) ;;; activity tracking -(defvar rcirc-track-minor-mode-map (make-sparse-keymap) +(defvar rcirc-track-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-c C-@") 'rcirc-next-active-buffer) + (define-key map (kbd "C-c C-SPC") 'rcirc-next-active-buffer) + map) "Keymap for rcirc track minor mode.") -(define-key rcirc-track-minor-mode-map (kbd "C-c C-@") 'rcirc-next-active-buffer) -(define-key rcirc-track-minor-mode-map (kbd "C-c C-SPC") 'rcirc-next-active-buffer) - ;;;###autoload (define-minor-mode rcirc-track-minor-mode "Global minor mode for tracking activity in rcirc buffers." diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index b35cf0738bf..5f0908e11c6 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog @@ -1,3 +1,8 @@ +2011-02-10 Stefan Monnier + + * org-remember.el (org-remember-mode-map): + * org-src.el (org-src-mode-map): Move initialization into declaration. + 2011-01-13 Stefan Monnier * org-remember.el (org-remember-mode): diff --git a/lisp/org/org-remember.el b/lisp/org/org-remember.el index 80f9dadd7a4..fd3064a709c 100644 --- a/lisp/org/org-remember.el +++ b/lisp/org/org-remember.el @@ -214,7 +214,11 @@ The remember buffer is still current when this hook runs." :group 'org-remember :type 'hook) -(defvar org-remember-mode-map (make-sparse-keymap) +(defvar org-remember-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-c" 'org-remember-finalize) + (define-key map "\C-c\C-k" 'org-remember-kill) + map) "Keymap for `org-remember-mode', a minor mode. Use this map to set additional keybindings for when Org-mode is used for a Remember buffer.") @@ -224,8 +228,6 @@ for a Remember buffer.") (define-minor-mode org-remember-mode "Minor mode for special key bindings in a remember buffer." nil " Rem" org-remember-mode-map) -(define-key org-remember-mode-map "\C-c\C-c" 'org-remember-finalize) -(define-key org-remember-mode-map "\C-c\C-k" 'org-remember-kill) (defcustom org-remember-clock-out-on-exit 'query "Non-nil means stop the clock when exiting a clocking remember buffer. diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el index 07779700da8..98fdb75423d 100644 --- a/lisp/org/org-src.el +++ b/lisp/org/org-src.el @@ -169,8 +169,10 @@ For example, there is no ocaml-mode in Emacs, but the mode to use is ;;; Editing source examples -(defvar org-src-mode-map (make-sparse-keymap)) -(define-key org-src-mode-map "\C-c'" 'org-edit-src-exit) +(defvar org-src-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c'" 'org-edit-src-exit) + map)) (defvar org-edit-src-force-single-line nil) (defvar org-edit-src-from-org-mode nil) diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el index d0ba9b037e7..cd353d27f07 100644 --- a/lisp/play/gametree.el +++ b/lisp/play/gametree.el @@ -565,6 +565,20 @@ buffer, it is replaced by the new value. See the documentation for (gametree-hack-file-layout)) nil) +;;;; Key bindings +(defvar gametree-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-j" 'gametree-break-line-here) + (define-key map "\C-c\C-v" 'gametree-insert-new-leaf) + (define-key map "\C-c\C-m" 'gametree-merge-line) + (define-key map "\C-c\C-r " 'gametree-layout-to-register) + (define-key map "\C-c\C-r/" 'gametree-layout-to-register) + (define-key map "\C-c\C-rj" 'gametree-apply-register-layout) + (define-key map "\C-c\C-y" 'gametree-save-and-hack-layout) + (define-key map "\C-c;" 'gametree-insert-score) + (define-key map "\C-c^" 'gametree-compute-and-insert-score) + map)) + (define-derived-mode gametree-mode outline-mode "GameTree" "Major mode for managing game analysis trees. Useful to postal and email chess (and, it is hoped, also checkers, go, @@ -575,18 +589,6 @@ shogi, etc.) players, it is a slightly modified version of Outline mode. (make-local-variable 'write-contents-hooks) (add-hook 'write-contents-hooks 'gametree-save-and-hack-layout)) -;;;; Key bindings - -(define-key gametree-mode-map "\C-c\C-j" 'gametree-break-line-here) -(define-key gametree-mode-map "\C-c\C-v" 'gametree-insert-new-leaf) -(define-key gametree-mode-map "\C-c\C-m" 'gametree-merge-line) -(define-key gametree-mode-map "\C-c\C-r " 'gametree-layout-to-register) -(define-key gametree-mode-map "\C-c\C-r/" 'gametree-layout-to-register) -(define-key gametree-mode-map "\C-c\C-rj" 'gametree-apply-register-layout) -(define-key gametree-mode-map "\C-c\C-y" 'gametree-save-and-hack-layout) -(define-key gametree-mode-map "\C-c;" 'gametree-insert-score) -(define-key gametree-mode-map "\C-c^" 'gametree-compute-and-insert-score) - ;;;; Goodies for mousing users (and (fboundp 'track-mouse) (defun gametree-mouse-break-line-here (event) diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el index 5bab360f9ff..601232e4321 100644 --- a/lisp/play/handwrite.el +++ b/lisp/play/handwrite.el @@ -80,8 +80,24 @@ (defvar handwrite-psindex 0 "The index of the PostScript buffer.") -(defvar menu-bar-handwrite-map (make-sparse-keymap "Handwrite functions.")) -(fset 'menu-bar-handwrite-map (symbol-value 'menu-bar-handwrite-map)) +(defvar menu-bar-handwrite-map + (let ((map (make-sparse-keymap "Handwrite functions."))) + (define-key map [numbering] + '(menu-item "Page numbering" handwrite-set-pagenumber + :button (:toggle . handwrite-pagenumbering))) + (define-key map [handwrite-separator2] '("----" . nil)) + (define-key map [10pt] '(menu-item "10 pt" handwrite-10pt + :button (:radio . (eq handwrite-fontsize 10)))) + (define-key map [11pt] '(menu-item "11 pt" handwrite-11pt + :button (:radio . (eq handwrite-fontsize 11)))) + (define-key map [12pt] '(menu-item "12 pt" handwrite-12pt + :button (:radio . (eq handwrite-fontsize 12)))) + (define-key map [13pt] '(menu-item "13 pt" handwrite-13pt + :button (:radio . (eq handwrite-fontsize 13)))) + (define-key map [handwrite-separator1] '("----" . nil)) + (define-key map [handwrite] '("Write by hand" . handwrite)) + map)) +(fset 'menu-bar-handwrite-map menu-bar-handwrite-map) ;; User definable variables @@ -135,10 +151,10 @@ The functions `handwrite-10pt', `handwrite-11pt', `handwrite-12pt' and `handwrite-13pt' set up for various sizes of output. -Variables: handwrite-linespace (default 12) - handwrite-fontsize (default 11) - handwrite-numlines (default 60) - handwrite-pagenumbering (default nil)" +Variables: `handwrite-linespace' (default 12) + `handwrite-fontsize' (default 11) + `handwrite-numlines' (default 60) + `handwrite-pagenumbering' (default nil)" (interactive) (let ((pmin) ; thanks, Havard @@ -258,7 +274,8 @@ Variables: handwrite-linespace (default 12) "Toggle the value of `handwrite-pagenumbering'." (interactive) (if handwrite-pagenumbering - (handwrite-set-pagenumber-off)(handwrite-set-pagenumber-on))) + (handwrite-set-pagenumber-off) + (handwrite-set-pagenumber-on))) (defun handwrite-10pt () "Specify 10-point output for `handwrite. @@ -268,14 +285,6 @@ values for `handwrite-linespace' and `handwrite-numlines'." (setq handwrite-fontsize 10) (setq handwrite-linespace 11) (setq handwrite-numlines handwrite-10pt-numlines) - (define-key menu-bar-handwrite-map [10pt] - '("10 pt *" . handwrite-10pt)) - (define-key menu-bar-handwrite-map [11pt] - '("11 pt" . handwrite-11pt)) - (define-key menu-bar-handwrite-map [12pt] - '("12 pt" . handwrite-12pt)) - (define-key menu-bar-handwrite-map [13pt] - '("13 pt" . handwrite-13pt)) (message "Handwrite output size set to 10 points")) @@ -287,14 +296,6 @@ values for `handwrite-linespace' and `handwrite-numlines'." (setq handwrite-fontsize 11) (setq handwrite-linespace 12) (setq handwrite-numlines handwrite-11pt-numlines) - (define-key menu-bar-handwrite-map [10pt] - '("10 pt" . handwrite-10pt)) - (define-key menu-bar-handwrite-map [11pt] - '("11 pt *" . handwrite-11pt)) - (define-key menu-bar-handwrite-map [12pt] - '("12 pt" . handwrite-12pt)) - (define-key menu-bar-handwrite-map [13pt] - '("13 pt" . handwrite-13pt)) (message "Handwrite output size set to 11 points")) (defun handwrite-12pt () @@ -305,14 +306,6 @@ values for `handwrite-linespace' and `handwrite-numlines'." (setq handwrite-fontsize 12) (setq handwrite-linespace 13) (setq handwrite-numlines handwrite-12pt-numlines) - (define-key menu-bar-handwrite-map [10pt] - '("10 pt" . handwrite-10pt)) - (define-key menu-bar-handwrite-map [11pt] - '("11 pt" . handwrite-11pt)) - (define-key menu-bar-handwrite-map [12pt] - '("12 pt *" . handwrite-12pt)) - (define-key menu-bar-handwrite-map [13pt] - '("13 pt" . handwrite-13pt)) (message "Handwrite output size set to 12 points")) (defun handwrite-13pt () @@ -323,14 +316,6 @@ values for `handwrite-linespace' and `handwrite-numlines'." (setq handwrite-fontsize 13) (setq handwrite-linespace 14) (setq handwrite-numlines handwrite-13pt-numlines) - (define-key menu-bar-handwrite-map [10pt] - '("10 pt" . handwrite-10pt)) - (define-key menu-bar-handwrite-map [11pt] - '("11 pt" . handwrite-11pt)) - (define-key menu-bar-handwrite-map [12pt] - '("12 pt" . handwrite-12pt)) - (define-key menu-bar-handwrite-map [13pt] - '("13 pt *" . handwrite-13pt)) (message "Handwrite output size set to 13 points")) @@ -1263,62 +1248,24 @@ end ;;Sets page numbering off (defun handwrite-set-pagenumber-off () (setq handwrite-pagenumbering nil) - (define-key menu-bar-handwrite-map - [numbering] - '("Page numbering Off" . handwrite-set-pagenumber)) (message "page numbering off")) ;;Sets page numbering on (defun handwrite-set-pagenumber-on () (setq handwrite-pagenumbering t) - (define-key menu-bar-handwrite-map - [numbering] - '("Page numbering On" . handwrite-set-pagenumber)) (message "page numbering on" )) ;; Key bindings - -;;; I'd rather not fill up the menu bar menus with -;;; lots of random miscellaneous features. -- rms. +;; I'd rather not fill up the menu bar menus with +;; lots of random miscellaneous features. -- rms. ;;;(define-key-after ;;; (lookup-key global-map [menu-bar edit]) ;;; [handwrite] ;;; '("Write by hand" . menu-bar-handwrite-map) ;;; 'spell) -(define-key menu-bar-handwrite-map [numbering] - '("Page numbering Off" . handwrite-set-pagenumber)) - -(define-key menu-bar-handwrite-map [10pt] - '("10 pt" . handwrite-10pt)) - -(define-key menu-bar-handwrite-map [11pt] - '("11 pt *" . handwrite-11pt)) - -(define-key menu-bar-handwrite-map [12pt] - '("12 pt" . handwrite-12pt)) - -(define-key menu-bar-handwrite-map [13pt] - '("13 pt" . handwrite-13pt)) - -(define-key menu-bar-handwrite-map [handwrite] - '("Write by hand" . handwrite)) - -(define-key-after - (lookup-key menu-bar-handwrite-map [ ]) - [handwrite-separator1] - '("----" . nil) - 'handwrite) - -(define-key-after - (lookup-key menu-bar-handwrite-map [ ]) - [handwrite-separator2] - '("----" . nil) - '10pt) - - (provide 'handwrite) diff --git a/lisp/play/pong.el b/lisp/play/pong.el index a2912831707..e993e769756 100644 --- a/lisp/play/pong.el +++ b/lisp/play/pong.el @@ -190,21 +190,23 @@ ;;; Initialize maps (defvar pong-mode-map - (make-sparse-keymap 'pong-mode-map) "Modemap for pong-mode.") + (let ((map (make-sparse-keymap 'pong-mode-map))) + (define-key map [left] 'pong-move-left) + (define-key map [right] 'pong-move-right) + (define-key map [up] 'pong-move-up) + (define-key map [down] 'pong-move-down) + (define-key map pong-left-key 'pong-move-left) + (define-key map pong-right-key 'pong-move-right) + (define-key map pong-up-key 'pong-move-up) + (define-key map pong-down-key 'pong-move-down) + (define-key map pong-quit-key 'pong-quit) + (define-key map pong-pause-key 'pong-pause) + map) + "Modemap for pong-mode.") (defvar pong-null-map (make-sparse-keymap 'pong-null-map) "Null map for pong-mode.") -(define-key pong-mode-map [left] 'pong-move-left) -(define-key pong-mode-map [right] 'pong-move-right) -(define-key pong-mode-map [up] 'pong-move-up) -(define-key pong-mode-map [down] 'pong-move-down) -(define-key pong-mode-map pong-left-key 'pong-move-left) -(define-key pong-mode-map pong-right-key 'pong-move-right) -(define-key pong-mode-map pong-up-key 'pong-move-up) -(define-key pong-mode-map pong-down-key 'pong-move-down) -(define-key pong-mode-map pong-quit-key 'pong-quit) -(define-key pong-mode-map pong-pause-key 'pong-pause) ;;; Fun stuff -- The code diff --git a/lisp/play/snake.el b/lisp/play/snake.el index 3714e6be4d2..418c898e825 100644 --- a/lisp/play/snake.el +++ b/lisp/play/snake.el @@ -174,21 +174,22 @@ and then start moving it leftwards.") ;; ;;;;;;;;;;;;; keymaps ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defvar snake-mode-map - (make-sparse-keymap 'snake-mode-map)) + (let ((map (make-sparse-keymap 'snake-mode-map))) -(define-key snake-mode-map "n" 'snake-start-game) -(define-key snake-mode-map "q" 'snake-end-game) -(define-key snake-mode-map "p" 'snake-pause-game) + (define-key map "n" 'snake-start-game) + (define-key map "q" 'snake-end-game) + (define-key map "p" 'snake-pause-game) -(define-key snake-mode-map [left] 'snake-move-left) -(define-key snake-mode-map [right] 'snake-move-right) -(define-key snake-mode-map [up] 'snake-move-up) -(define-key snake-mode-map [down] 'snake-move-down) + (define-key map [left] 'snake-move-left) + (define-key map [right] 'snake-move-right) + (define-key map [up] 'snake-move-up) + (define-key map [down] 'snake-move-down) + map)) (defvar snake-null-map - (make-sparse-keymap 'snake-null-map)) - -(define-key snake-null-map "n" 'snake-start-game) + (let ((map (make-sparse-keymap 'snake-null-map))) + (define-key map "n" 'snake-start-game) + map)) ;; ;;;;;;;;;;;;;;;; game functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/lisp/play/solitaire.el b/lisp/play/solitaire.el index 3e6e941473f..9d6a0ef52b1 100644 --- a/lisp/play/solitaire.el +++ b/lisp/play/solitaire.el @@ -41,6 +41,49 @@ :type 'hook :group 'solitaire) +(defvar solitaire-mode-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map special-mode-map) + + (define-key map "\C-f" 'solitaire-right) + (define-key map "\C-b" 'solitaire-left) + (define-key map "\C-p" 'solitaire-up) + (define-key map "\C-n" 'solitaire-down) + (define-key map "\r" 'solitaire-move) + (define-key map [remap undo] 'solitaire-undo) + (define-key map " " 'solitaire-do-check) + + (define-key map [right] 'solitaire-right) + (define-key map [left] 'solitaire-left) + (define-key map [up] 'solitaire-up) + (define-key map [down] 'solitaire-down) + + (define-key map [S-right] 'solitaire-move-right) + (define-key map [S-left] 'solitaire-move-left) + (define-key map [S-up] 'solitaire-move-up) + (define-key map [S-down] 'solitaire-move-down) + + (define-key map [kp-6] 'solitaire-right) + (define-key map [kp-4] 'solitaire-left) + (define-key map [kp-8] 'solitaire-up) + (define-key map [kp-2] 'solitaire-down) + (define-key map [kp-5] 'solitaire-center-point) + + (define-key map [S-kp-6] 'solitaire-move-right) + (define-key map [S-kp-4] 'solitaire-move-left) + (define-key map [S-kp-8] 'solitaire-move-up) + (define-key map [S-kp-2] 'solitaire-move-down) + + (define-key map [kp-enter] 'solitaire-move) + (define-key map [kp-0] 'solitaire-undo) + + ;; spoil it with s ;) + (define-key map [?s] 'solitaire-solve) + + ;; (define-key map [kp-0] 'solitaire-hint) - Not yet provided ;) + map) + "Keymap for playing Solitaire.") + ;; Solitaire mode is suitable only for specially formatted data. (put 'solitaire-mode 'mode-class 'special) @@ -54,41 +97,6 @@ The usual mnemonic keys move the cursor around the board; in addition, (setq truncate-lines t) (setq show-trailing-whitespace nil)) -(define-key solitaire-mode-map "\C-f" 'solitaire-right) -(define-key solitaire-mode-map "\C-b" 'solitaire-left) -(define-key solitaire-mode-map "\C-p" 'solitaire-up) -(define-key solitaire-mode-map "\C-n" 'solitaire-down) -(define-key solitaire-mode-map "\r" 'solitaire-move) -(define-key solitaire-mode-map [remap undo] 'solitaire-undo) -(define-key solitaire-mode-map " " 'solitaire-do-check) - -(define-key solitaire-mode-map [right] 'solitaire-right) -(define-key solitaire-mode-map [left] 'solitaire-left) -(define-key solitaire-mode-map [up] 'solitaire-up) -(define-key solitaire-mode-map [down] 'solitaire-down) - -(define-key solitaire-mode-map [S-right] 'solitaire-move-right) -(define-key solitaire-mode-map [S-left] 'solitaire-move-left) -(define-key solitaire-mode-map [S-up] 'solitaire-move-up) -(define-key solitaire-mode-map [S-down] 'solitaire-move-down) - -(define-key solitaire-mode-map [kp-6] 'solitaire-right) -(define-key solitaire-mode-map [kp-4] 'solitaire-left) -(define-key solitaire-mode-map [kp-8] 'solitaire-up) -(define-key solitaire-mode-map [kp-2] 'solitaire-down) -(define-key solitaire-mode-map [kp-5] 'solitaire-center-point) - -(define-key solitaire-mode-map [S-kp-6] 'solitaire-move-right) -(define-key solitaire-mode-map [S-kp-4] 'solitaire-move-left) -(define-key solitaire-mode-map [S-kp-8] 'solitaire-move-up) -(define-key solitaire-mode-map [S-kp-2] 'solitaire-move-down) - -(define-key solitaire-mode-map [kp-enter] 'solitaire-move) -(define-key solitaire-mode-map [kp-0] 'solitaire-undo) - -;; spoil it with s ;) -(define-key solitaire-mode-map [?s] 'solitaire-solve) -;; (define-key map [kp-0] 'solitaire-hint) - Not yet provided ;) (defvar solitaire-stones 0 "Counter for the stones that are still there.") diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index bbe9722f548..25d1410621a 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -2983,25 +2983,27 @@ DOC is an optional documentation string." map) "Keymap to select format in the header line.") -(defvar gdb-memory-format-menu (make-sparse-keymap "Format") +(defvar gdb-memory-format-menu + (let ((map (make-sparse-keymap "Format"))) + + (define-key map [binary] + '(menu-item "Binary" gdb-memory-format-binary + :button (:radio . (equal gdb-memory-format "t")))) + (define-key map [octal] + '(menu-item "Octal" gdb-memory-format-octal + :button (:radio . (equal gdb-memory-format "o")))) + (define-key map [unsigned] + '(menu-item "Unsigned Decimal" gdb-memory-format-unsigned + :button (:radio . (equal gdb-memory-format "u")))) + (define-key map [signed] + '(menu-item "Signed Decimal" gdb-memory-format-signed + :button (:radio . (equal gdb-memory-format "d")))) + (define-key map [hexadecimal] + '(menu-item "Hexadecimal" gdb-memory-format-hexadecimal + :button (:radio . (equal gdb-memory-format "x")))) + map) "Menu of display formats in the header line.") -(define-key gdb-memory-format-menu [binary] - '(menu-item "Binary" gdb-memory-format-binary - :button (:radio . (equal gdb-memory-format "t")))) -(define-key gdb-memory-format-menu [octal] - '(menu-item "Octal" gdb-memory-format-octal - :button (:radio . (equal gdb-memory-format "o")))) -(define-key gdb-memory-format-menu [unsigned] - '(menu-item "Unsigned Decimal" gdb-memory-format-unsigned - :button (:radio . (equal gdb-memory-format "u")))) -(define-key gdb-memory-format-menu [signed] - '(menu-item "Signed Decimal" gdb-memory-format-signed - :button (:radio . (equal gdb-memory-format "d")))) -(define-key gdb-memory-format-menu [hexadecimal] - '(menu-item "Hexadecimal" gdb-memory-format-hexadecimal - :button (:radio . (equal gdb-memory-format "x")))) - (defun gdb-memory-format-menu (event) (interactive "@e") (x-popup-menu event gdb-memory-format-menu)) @@ -3061,22 +3063,23 @@ DOC is an optional documentation string." map) "Keymap to select units in the header line.") -(defvar gdb-memory-unit-menu (make-sparse-keymap "Unit") +(defvar gdb-memory-unit-menu + (let ((map (make-sparse-keymap "Unit"))) + (define-key map [giantwords] + '(menu-item "Giant words" gdb-memory-unit-giant + :button (:radio . (equal gdb-memory-unit 8)))) + (define-key map [words] + '(menu-item "Words" gdb-memory-unit-word + :button (:radio . (equal gdb-memory-unit 4)))) + (define-key map [halfwords] + '(menu-item "Halfwords" gdb-memory-unit-halfword + :button (:radio . (equal gdb-memory-unit 2)))) + (define-key map [bytes] + '(menu-item "Bytes" gdb-memory-unit-byte + :button (:radio . (equal gdb-memory-unit 1)))) + map) "Menu of units in the header line.") -(define-key gdb-memory-unit-menu [giantwords] - '(menu-item "Giant words" gdb-memory-unit-giant - :button (:radio . (equal gdb-memory-unit 8)))) -(define-key gdb-memory-unit-menu [words] - '(menu-item "Words" gdb-memory-unit-word - :button (:radio . (equal gdb-memory-unit 4)))) -(define-key gdb-memory-unit-menu [halfwords] - '(menu-item "Halfwords" gdb-memory-unit-halfword - :button (:radio . (equal gdb-memory-unit 2)))) -(define-key gdb-memory-unit-menu [bytes] - '(menu-item "Bytes" gdb-memory-unit-byte - :button (:radio . (equal gdb-memory-unit 1)))) - (defun gdb-memory-unit-menu (event) (interactive "@e") (x-popup-menu event gdb-memory-unit-menu)) diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el index 1b32c7807c6..7202d95c8db 100644 --- a/lisp/progmodes/idlw-help.el +++ b/lisp/progmodes/idlw-help.el @@ -219,23 +219,24 @@ support." ;; Define the key bindings for the Help application -(defvar idlwave-help-mode-map (make-sparse-keymap) +(defvar idlwave-help-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "q" 'idlwave-help-quit) + (define-key map "w" 'widen) + (define-key map "\C-m" (lambda (arg) + (interactive "p") + (scroll-up arg))) + (define-key map " " 'scroll-up) + (define-key map [delete] 'scroll-down) + (define-key map "h" 'idlwave-help-find-header) + (define-key map "H" 'idlwave-help-find-first-header) + (define-key map "." 'idlwave-help-toggle-header-match-and-def) + (define-key map "F" 'idlwave-help-fontify) + (define-key map "\M-?" 'idlwave-help-return-to-calling-frame) + (define-key map "x" 'idlwave-help-return-to-calling-frame) + map) "The keymap used in `idlwave-help-mode'.") -(define-key idlwave-help-mode-map "q" 'idlwave-help-quit) -(define-key idlwave-help-mode-map "w" 'widen) -(define-key idlwave-help-mode-map "\C-m" (lambda (arg) - (interactive "p") - (scroll-up arg))) -(define-key idlwave-help-mode-map " " 'scroll-up) -(define-key idlwave-help-mode-map [delete] 'scroll-down) -(define-key idlwave-help-mode-map "h" 'idlwave-help-find-header) -(define-key idlwave-help-mode-map "H" 'idlwave-help-find-first-header) -(define-key idlwave-help-mode-map "." 'idlwave-help-toggle-header-match-and-def) -(define-key idlwave-help-mode-map "F" 'idlwave-help-fontify) -(define-key idlwave-help-mode-map "\M-?" 'idlwave-help-return-to-calling-frame) -(define-key idlwave-help-mode-map "x" 'idlwave-help-return-to-calling-frame) - ;; Define the menu for the Help application (easy-menu-define diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 72b7914e21b..30d9fc21867 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -8265,20 +8265,26 @@ If we do not know about MODULE, just return KEYWORD literally." ;; keyword - return it as it is. keyword)))) -(defvar idlwave-rinfo-mouse-map (make-sparse-keymap)) -(defvar idlwave-rinfo-map (make-sparse-keymap)) -(define-key idlwave-rinfo-mouse-map - (if (featurep 'xemacs) [button2] [mouse-2]) - 'idlwave-mouse-active-rinfo) -(define-key idlwave-rinfo-mouse-map - (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) - 'idlwave-mouse-active-rinfo-shift) -(define-key idlwave-rinfo-mouse-map - (if (featurep 'xemacs) [button3] [mouse-3]) - 'idlwave-mouse-active-rinfo-right) -(define-key idlwave-rinfo-mouse-map " " 'idlwave-active-rinfo-space) -(define-key idlwave-rinfo-map "q" 'idlwave-quit-help) -(define-key idlwave-rinfo-mouse-map "q" 'idlwave-quit-help) +(defvar idlwave-rinfo-mouse-map + (let ((map (make-sparse-keymap))) + (define-key map + (if (featurep 'xemacs) [button2] [mouse-2]) + 'idlwave-mouse-active-rinfo) + (define-key map + (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) + 'idlwave-mouse-active-rinfo-shift) + (define-key map + (if (featurep 'xemacs) [button3] [mouse-3]) + 'idlwave-mouse-active-rinfo-right) + (define-key map " " 'idlwave-active-rinfo-space) + (define-key map "q" 'idlwave-quit-help) + map)) + +(defvar idlwave-rinfo-map + (let ((map (make-sparse-keymap))) + (define-key map "q" 'idlwave-quit-help) + map)) + (defvar idlwave-popup-source nil) (defvar idlwave-rinfo-marker (make-marker)) diff --git a/lisp/replace.el b/lisp/replace.el index 924622b692d..0f8adea2aca 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -757,6 +757,60 @@ a previously found match." count))) +(defvar occur-mode-map + (let ((map (make-sparse-keymap))) + ;; We use this alternative name, so we can use \\[occur-mode-mouse-goto]. + (define-key map [mouse-2] 'occur-mode-mouse-goto) + (define-key map "\C-c\C-c" 'occur-mode-goto-occurrence) + (define-key map "\C-m" 'occur-mode-goto-occurrence) + (define-key map "o" 'occur-mode-goto-occurrence-other-window) + (define-key map "\C-o" 'occur-mode-display-occurrence) + (define-key map "\M-n" 'occur-next) + (define-key map "\M-p" 'occur-prev) + (define-key map "r" 'occur-rename-buffer) + (define-key map "c" 'clone-buffer) + (define-key map "\C-c\C-f" 'next-error-follow-minor-mode) + (define-key map [menu-bar] (make-sparse-keymap)) + (define-key map [menu-bar occur] + `(cons ,(purecopy "Occur") map)) + (define-key map [next-error-follow-minor-mode] + (menu-bar-make-mm-toggle next-error-follow-minor-mode + "Auto Occurrence Display" + "Display another occurrence when moving the cursor")) + (define-key map [separator-1] menu-bar-separator) + (define-key map [kill-this-buffer] + `(menu-item ,(purecopy "Kill occur buffer") kill-this-buffer + :help ,(purecopy "Kill the current *Occur* buffer"))) + (define-key map [quit-window] + `(menu-item ,(purecopy "Quit occur window") quit-window + :help ,(purecopy "Quit the current *Occur* buffer. Bury it, and maybe delete the selected frame"))) + (define-key map [revert-buffer] + `(menu-item ,(purecopy "Revert occur buffer") revert-buffer + :help ,(purecopy "Replace the text in the *Occur* buffer with the results of rerunning occur"))) + (define-key map [clone-buffer] + `(menu-item ,(purecopy "Clone occur buffer") clone-buffer + :help ,(purecopy "Create and return a twin copy of the current *Occur* buffer"))) + (define-key map [occur-rename-buffer] + `(menu-item ,(purecopy "Rename occur buffer") occur-rename-buffer + :help ,(purecopy "Rename the current *Occur* buffer to *Occur: original-buffer-name*."))) + (define-key map [separator-2] menu-bar-separator) + (define-key map [occur-mode-goto-occurrence-other-window] + `(menu-item ,(purecopy "Go To Occurrence Other Window") occur-mode-goto-occurrence-other-window + :help ,(purecopy "Go to the occurrence the current line describes, in another window"))) + (define-key map [occur-mode-goto-occurrence] + `(menu-item ,(purecopy "Go To Occurrence") occur-mode-goto-occurrence + :help ,(purecopy "Go to the occurrence the current line describes"))) + (define-key map [occur-mode-display-occurrence] + `(menu-item ,(purecopy "Display Occurrence") occur-mode-display-occurrence + :help ,(purecopy "Display in another window the occurrence the current line describes"))) + (define-key map [occur-next] + `(menu-item ,(purecopy "Move to next match") occur-next + :help ,(purecopy "Move to the Nth (default 1) next match in an Occur mode buffer"))) + (define-key map [occur-prev] + `(menu-item ,(purecopy "Move to previous match") occur-prev + :help ,(purecopy "Move to the Nth (default 1) previous match in an Occur mode buffer"))) + map) + "Keymap for `occur-mode'.") (defvar occur-revert-arguments nil "Arguments to pass to `occur-1' to revert an Occur mode buffer. @@ -792,54 +846,6 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it. (add-hook 'change-major-mode-hook 'font-lock-defontify nil t) (setq next-error-function 'occur-next-error)) -(define-key occur-mode-map [mouse-2] 'occur-mode-mouse-goto) -(define-key occur-mode-map "\C-c\C-c" 'occur-mode-goto-occurrence) -(define-key occur-mode-map "\C-m" 'occur-mode-goto-occurrence) -(define-key occur-mode-map "o" 'occur-mode-goto-occurrence-other-window) -(define-key occur-mode-map "\C-o" 'occur-mode-display-occurrence) -(define-key occur-mode-map "\M-n" 'occur-next) -(define-key occur-mode-map "\M-p" 'occur-prev) -(define-key occur-mode-map "r" 'occur-rename-buffer) -(define-key occur-mode-map "c" 'clone-buffer) -(define-key occur-mode-map "\C-c\C-f" 'next-error-follow-minor-mode) -(define-key occur-mode-map [menu-bar] (make-sparse-keymap)) -(define-key occur-mode-map [menu-bar occur] `(cons ,(purecopy "Occur") map)) -(define-key occur-mode-map [next-error-follow-minor-mode] - (menu-bar-make-mm-toggle next-error-follow-minor-mode - "Auto Occurrence Display" - "Display another occurrence when moving the cursor")) -(define-key occur-mode-map [separator-1] menu-bar-separator) -(define-key occur-mode-map [kill-this-buffer] - `(menu-item ,(purecopy "Kill occur buffer") kill-this-buffer - :help ,(purecopy "Kill the current *Occur* buffer"))) -(define-key occur-mode-map [quit-window] - `(menu-item ,(purecopy "Quit occur window") quit-window - :help ,(purecopy "Quit the current *Occur* buffer. Bury it, and maybe delete the selected frame"))) -(define-key occur-mode-map [revert-buffer] - `(menu-item ,(purecopy "Revert occur buffer") revert-buffer - :help ,(purecopy "Replace the text in the *Occur* buffer with the results of rerunning occur"))) -(define-key occur-mode-map [clone-buffer] - `(menu-item ,(purecopy "Clone occur buffer") clone-buffer - :help ,(purecopy "Create and return a twin copy of the current *Occur* buffer"))) -(define-key occur-mode-map [occur-rename-buffer] - `(menu-item ,(purecopy "Rename occur buffer") occur-rename-buffer - :help ,(purecopy "Rename the current *Occur* buffer to *Occur: original-buffer-name*."))) -(define-key occur-mode-map [separator-2] menu-bar-separator) -(define-key occur-mode-map [occur-mode-goto-occurrence-other-window] - `(menu-item ,(purecopy "Go To Occurrence Other Window") occur-mode-goto-occurrence-other-window - :help ,(purecopy "Go to the occurrence the current line describes, in another window"))) -(define-key occur-mode-map [occur-mode-goto-occurrence] - `(menu-item ,(purecopy "Go To Occurrence") occur-mode-goto-occurrence - :help ,(purecopy "Go to the occurrence the current line describes"))) -(define-key occur-mode-map [occur-mode-display-occurrence] - `(menu-item ,(purecopy "Display Occurrence") occur-mode-display-occurrence - :help ,(purecopy "Display in another window the occurrence the current line describes"))) -(define-key occur-mode-map [occur-next] - `(menu-item ,(purecopy "Move to next match") occur-next - :help ,(purecopy "Move to the Nth (default 1) next match in an Occur mode buffer"))) -(define-key occur-mode-map [occur-prev] - `(menu-item ,(purecopy "Move to previous match") occur-prev - :help ,(purecopy "Move to the Nth (default 1) previous match in an Occur mode buffer"))) (defun occur-revert-function (ignore1 ignore2) "Handle `revert-buffer' for Occur mode buffers." (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))) diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 10ea1ac23c4..44908a87b8c 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -520,7 +520,84 @@ MODE should be an integer which is a file mode value." (goto-char (point-min)) (restore-buffer-modified-p modified))) +(defvar tar-mode-map + (let ((map (make-keymap))) + (suppress-keymap map) + (define-key map " " 'tar-next-line) + (define-key map "C" 'tar-copy) + (define-key map "d" 'tar-flag-deleted) + (define-key map "\^D" 'tar-flag-deleted) + (define-key map "e" 'tar-extract) + (define-key map "f" 'tar-extract) + (define-key map "\C-m" 'tar-extract) + (define-key map [mouse-2] 'tar-mouse-extract) + (define-key map "g" 'revert-buffer) + (define-key map "n" 'tar-next-line) + (define-key map "\^N" 'tar-next-line) + (define-key map [down] 'tar-next-line) + (define-key map "o" 'tar-extract-other-window) + (define-key map "p" 'tar-previous-line) + (define-key map "\^P" 'tar-previous-line) + (define-key map [up] 'tar-previous-line) + (define-key map "R" 'tar-rename-entry) + (define-key map "u" 'tar-unflag) + (define-key map "v" 'tar-view) + (define-key map "x" 'tar-expunge) + (define-key map "\177" 'tar-unflag-backwards) + (define-key map "E" 'tar-extract-other-window) + (define-key map "M" 'tar-chmod-entry) + (define-key map "G" 'tar-chgrp-entry) + (define-key map "O" 'tar-chown-entry) + ;; Let mouse-1 follow the link. + (define-key map [follow-link] 'mouse-face) + + ;; Make menu bar items. + + ;; Get rid of the Edit menu bar item to save space. + (define-key map [menu-bar edit] 'undefined) + + (define-key map [menu-bar immediate] + (cons "Immediate" (make-sparse-keymap "Immediate"))) + + (define-key map [menu-bar immediate view] + '("View This File" . tar-view)) + (define-key map [menu-bar immediate display] + '("Display in Other Window" . tar-display-other-window)) + (define-key map [menu-bar immediate find-file-other-window] + '("Find in Other Window" . tar-extract-other-window)) + (define-key map [menu-bar immediate find-file] + '("Find This File" . tar-extract)) + + (define-key map [menu-bar mark] + (cons "Mark" (make-sparse-keymap "Mark"))) + + (define-key map [menu-bar mark unmark-all] + '("Unmark All" . tar-clear-modification-flags)) + (define-key map [menu-bar mark deletion] + '("Flag" . tar-flag-deleted)) + (define-key map [menu-bar mark unmark] + '("Unflag" . tar-unflag)) + + (define-key map [menu-bar operate] + (cons "Operate" (make-sparse-keymap "Operate"))) + + (define-key map [menu-bar operate chown] + '("Change Owner..." . tar-chown-entry)) + (define-key map [menu-bar operate chgrp] + '("Change Group..." . tar-chgrp-entry)) + (define-key map [menu-bar operate chmod] + '("Change Mode..." . tar-chmod-entry)) + (define-key map [menu-bar operate rename] + '("Rename to..." . tar-rename-entry)) + (define-key map [menu-bar operate copy] + '("Copy to..." . tar-copy)) + (define-key map [menu-bar operate expunge] + '("Expunge Marked Files" . tar-expunge)) + + map) + "Local keymap for Tar mode listings.") + ;; tar mode is suitable only for specially formatted data. (put 'tar-mode 'mode-class 'special) (put 'tar-subfile-mode 'mode-class 'special) @@ -590,77 +667,6 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'. (fundamental-mode) (signal (car err) (cdr err))))) -(define-key tar-mode-map " " 'tar-next-line) -(define-key tar-mode-map "C" 'tar-copy) -(define-key tar-mode-map "d" 'tar-flag-deleted) -(define-key tar-mode-map "\^D" 'tar-flag-deleted) -(define-key tar-mode-map "e" 'tar-extract) -(define-key tar-mode-map "f" 'tar-extract) -(define-key tar-mode-map "\C-m" 'tar-extract) -(define-key tar-mode-map [mouse-2] 'tar-mouse-extract) -(define-key tar-mode-map "g" 'revert-buffer) -(define-key tar-mode-map "h" 'describe-mode) -(define-key tar-mode-map "n" 'tar-next-line) -(define-key tar-mode-map "\^N" 'tar-next-line) -(define-key tar-mode-map [down] 'tar-next-line) -(define-key tar-mode-map "o" 'tar-extract-other-window) -(define-key tar-mode-map "p" 'tar-previous-line) -(define-key tar-mode-map "\^P" 'tar-previous-line) -(define-key tar-mode-map [up] 'tar-previous-line) -(define-key tar-mode-map "R" 'tar-rename-entry) -(define-key tar-mode-map "u" 'tar-unflag) -(define-key tar-mode-map "v" 'tar-view) -(define-key tar-mode-map "x" 'tar-expunge) -(define-key tar-mode-map "\177" 'tar-unflag-backwards) -(define-key tar-mode-map "E" 'tar-extract-other-window) -(define-key tar-mode-map "M" 'tar-chmod-entry) -(define-key tar-mode-map "G" 'tar-chgrp-entry) -(define-key tar-mode-map "O" 'tar-chown-entry) -;; Let mouse-1 follow the link. -(define-key tar-mode-map [follow-link] 'mouse-face) - -;; Make menu bar items. - -;; Get rid of the Edit menu bar item to save space. -(define-key tar-mode-map [menu-bar edit] 'undefined) - -(define-key tar-mode-map [menu-bar immediate] - (cons "Immediate" (make-sparse-keymap "Immediate"))) - -(define-key tar-mode-map [menu-bar immediate view] - '("View This File" . tar-view)) -(define-key tar-mode-map [menu-bar immediate display] - '("Display in Other Window" . tar-display-other-window)) -(define-key tar-mode-map [menu-bar immediate find-file-other-window] - '("Find in Other Window" . tar-extract-other-window)) -(define-key tar-mode-map [menu-bar immediate find-file] - '("Find This File" . tar-extract)) - -(define-key tar-mode-map [menu-bar mark] - (cons "Mark" (make-sparse-keymap "Mark"))) - -(define-key tar-mode-map [menu-bar mark unmark-all] - '("Unmark All" . tar-clear-modification-flags)) -(define-key tar-mode-map [menu-bar mark deletion] - '("Flag" . tar-flag-deleted)) -(define-key tar-mode-map [menu-bar mark unmark] - '("Unflag" . tar-unflag)) - -(define-key tar-mode-map [menu-bar operate] - (cons "Operate" (make-sparse-keymap "Operate"))) - -(define-key tar-mode-map [menu-bar operate chown] - '("Change Owner..." . tar-chown-entry)) -(define-key tar-mode-map [menu-bar operate chgrp] - '("Change Group..." . tar-chgrp-entry)) -(define-key tar-mode-map [menu-bar operate chmod] - '("Change Mode..." . tar-chmod-entry)) -(define-key tar-mode-map [menu-bar operate rename] - '("Rename to..." . tar-rename-entry)) -(define-key tar-mode-map [menu-bar operate copy] - '("Copy to..." . tar-copy)) -(define-key tar-mode-map [menu-bar operate expunge] - '("Expunge Marked Files" . tar-expunge)) (define-minor-mode tar-subfile-mode "Minor mode for editing an element of a tar-file. diff --git a/lisp/term/lk201.el b/lisp/term/lk201.el index 23f4d0dbd2c..e1da0f6f1db 100644 --- a/lisp/term/lk201.el +++ b/lisp/term/lk201.el @@ -1,75 +1,77 @@ ;; -*- no-byte-compile: t -*- ;; Define function key sequences for DEC terminals. -(defvar lk201-function-map (make-sparse-keymap) - "Function key definitions for DEC terminals.") +(defvar lk201-function-map + (let ((map (make-sparse-keymap))) -;; Termcap or terminfo should set these. -;; (define-key lk201-function-map "\e[A" [up]) -;; (define-key lk201-function-map "\e[B" [down]) -;; (define-key lk201-function-map "\e[C" [right]) -;; (define-key lk201-function-map "\e[D" [left]) + ;; Termcap or terminfo should set these. + ;; (define-key map "\e[A" [up]) + ;; (define-key map "\e[B" [down]) + ;; (define-key map "\e[C" [right]) + ;; (define-key map "\e[D" [left]) -(define-key lk201-function-map "\e[1~" [find]) -(define-key lk201-function-map "\e[2~" [insert]) -(define-key lk201-function-map "\e[3~" [delete]) -(define-key lk201-function-map "\e[4~" [select]) -(define-key lk201-function-map "\e[5~" [prior]) -(define-key lk201-function-map "\e[6~" [next]) -(define-key lk201-function-map "\e[11~" [f1]) -(define-key lk201-function-map "\e[12~" [f2]) -(define-key lk201-function-map "\e[13~" [f3]) -(define-key lk201-function-map "\e[14~" [f4]) -(define-key lk201-function-map "\e[15~" [f5]) -(define-key lk201-function-map "\e[17~" [f6]) -(define-key lk201-function-map "\e[18~" [f7]) -(define-key lk201-function-map "\e[19~" [f8]) -(define-key lk201-function-map "\e[20~" [f9]) -(define-key lk201-function-map "\e[21~" [f10]) -;; Customarily F11 is used as the ESC key. -;; The file that includes this one, takes care of that. -(define-key lk201-function-map "\e[23~" [f11]) -(define-key lk201-function-map "\e[24~" [f12]) -(define-key lk201-function-map "\e[25~" [f13]) -(define-key lk201-function-map "\e[26~" [f14]) -(define-key lk201-function-map "\e[28~" [help]) -(define-key lk201-function-map "\e[29~" [menu]) -(define-key lk201-function-map "\e[31~" [f17]) -(define-key lk201-function-map "\e[32~" [f18]) -(define-key lk201-function-map "\e[33~" [f19]) -(define-key lk201-function-map "\e[34~" [f20]) + (define-key map "\e[1~" [find]) + (define-key map "\e[2~" [insert]) + (define-key map "\e[3~" [delete]) + (define-key map "\e[4~" [select]) + (define-key map "\e[5~" [prior]) + (define-key map "\e[6~" [next]) + (define-key map "\e[11~" [f1]) + (define-key map "\e[12~" [f2]) + (define-key map "\e[13~" [f3]) + (define-key map "\e[14~" [f4]) + (define-key map "\e[15~" [f5]) + (define-key map "\e[17~" [f6]) + (define-key map "\e[18~" [f7]) + (define-key map "\e[19~" [f8]) + (define-key map "\e[20~" [f9]) + (define-key map "\e[21~" [f10]) + ;; Customarily F11 is used as the ESC key. + ;; The file that includes this one, takes care of that. + (define-key map "\e[23~" [f11]) + (define-key map "\e[24~" [f12]) + (define-key map "\e[25~" [f13]) + (define-key map "\e[26~" [f14]) + (define-key map "\e[28~" [help]) + (define-key map "\e[29~" [menu]) + (define-key map "\e[31~" [f17]) + (define-key map "\e[32~" [f18]) + (define-key map "\e[33~" [f19]) + (define-key map "\e[34~" [f20]) -;; Termcap or terminfo should set these. -;; (define-key lk201-function-map "\eOA" [up]) -;; (define-key lk201-function-map "\eOB" [down]) -;; (define-key lk201-function-map "\eOC" [right]) -;; (define-key lk201-function-map "\eOD" [left]) + ;; Termcap or terminfo should set these. + ;; (define-key map "\eOA" [up]) + ;; (define-key map "\eOB" [down]) + ;; (define-key map "\eOC" [right]) + ;; (define-key map "\eOD" [left]) -;; Termcap or terminfo should set these, but doesn't properly. -;; Termcap sets these to k1-k4, which get mapped to f1-f4 in term.c -(define-key lk201-function-map "\eOP" [kp-f1]) -(define-key lk201-function-map "\eOQ" [kp-f2]) -(define-key lk201-function-map "\eOR" [kp-f3]) -(define-key lk201-function-map "\eOS" [kp-f4]) + ;; Termcap or terminfo should set these, but doesn't properly. + ;; Termcap sets these to k1-k4, which get mapped to f1-f4 in term.c + (define-key map "\eOP" [kp-f1]) + (define-key map "\eOQ" [kp-f2]) + (define-key map "\eOR" [kp-f3]) + (define-key map "\eOS" [kp-f4]) -(define-key lk201-function-map "\eOI" [kp-tab]) -(define-key lk201-function-map "\eOj" [kp-multiply]) -(define-key lk201-function-map "\eOk" [kp-add]) -(define-key lk201-function-map "\eOl" [kp-separator]) -(define-key lk201-function-map "\eOM" [kp-enter]) -(define-key lk201-function-map "\eOm" [kp-subtract]) -(define-key lk201-function-map "\eOn" [kp-decimal]) -(define-key lk201-function-map "\eOo" [kp-divide]) -(define-key lk201-function-map "\eOp" [kp-0]) -(define-key lk201-function-map "\eOq" [kp-1]) -(define-key lk201-function-map "\eOr" [kp-2]) -(define-key lk201-function-map "\eOs" [kp-3]) -(define-key lk201-function-map "\eOt" [kp-4]) -(define-key lk201-function-map "\eOu" [kp-5]) -(define-key lk201-function-map "\eOv" [kp-6]) -(define-key lk201-function-map "\eOw" [kp-7]) -(define-key lk201-function-map "\eOx" [kp-8]) -(define-key lk201-function-map "\eOy" [kp-9]) + (define-key map "\eOI" [kp-tab]) + (define-key map "\eOj" [kp-multiply]) + (define-key map "\eOk" [kp-add]) + (define-key map "\eOl" [kp-separator]) + (define-key map "\eOM" [kp-enter]) + (define-key map "\eOm" [kp-subtract]) + (define-key map "\eOn" [kp-decimal]) + (define-key map "\eOo" [kp-divide]) + (define-key map "\eOp" [kp-0]) + (define-key map "\eOq" [kp-1]) + (define-key map "\eOr" [kp-2]) + (define-key map "\eOs" [kp-3]) + (define-key map "\eOt" [kp-4]) + (define-key map "\eOu" [kp-5]) + (define-key map "\eOv" [kp-6]) + (define-key map "\eOw" [kp-7]) + (define-key map "\eOx" [kp-8]) + (define-key map "\eOy" [kp-9]) + map) + "Function key definitions for DEC terminals.") (defun terminal-init-lk201 () ;; Use inheritance to let the main keymap override these defaults. diff --git a/lisp/textmodes/bib-mode.el b/lisp/textmodes/bib-mode.el index 728f42779bf..17ddd1de954 100644 --- a/lisp/textmodes/bib-mode.el +++ b/lisp/textmodes/bib-mode.el @@ -47,11 +47,14 @@ :type 'file :group 'bib) -(defvar bib-mode-map (copy-keymap text-mode-map)) -(define-key bib-mode-map "\C-M" 'return-key-bib) -(define-key bib-mode-map "\C-c\C-u" 'unread-bib) -(define-key bib-mode-map "\C-c\C-@" 'mark-bib) -(define-key bib-mode-map "\e`" 'abbrev-mode) +(defvar bib-mode-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map text-mode-map) + (define-key map "\C-M" 'return-key-bib) + (define-key map "\C-c\C-u" 'unread-bib) + (define-key map "\C-c\C-@" 'mark-bib) + (define-key map "\e`" 'abbrev-mode) + map)) (defun addbib () "Set up editor to add to troff bibliography file specified diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index f6677bf458e..357b9d6c94e 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el @@ -163,6 +163,24 @@ The value is a list of \(VAR VALUE VAR VALUE...).") ;; variables and to correctly update `enriched-old-bindings'. (defvar enriched-rerun-flag nil) +;;; +;;; Keybindings +;;; + +(defvar enriched-mode-map + (let ((map (make-sparse-keymap))) + (define-key map [remap move-beginning-of-line] 'beginning-of-line-text) + (define-key map "\C-m" 'reindent-then-newline-and-indent) + (define-key map + [remap newline-and-indent] 'reindent-then-newline-and-indent) + (define-key map "\M-j" 'facemenu-justification-menu) + (define-key map "\M-S" 'set-justification-center) + (define-key map "\C-x\t" 'increase-left-margin) + (define-key map "\C-c[" 'set-left-margin) + (define-key map "\C-c]" 'set-right-margin) + map) + "Keymap for Enriched mode.") + ;;; ;;; Define the mode ;;; @@ -184,6 +202,8 @@ Commands: :group 'enriched :lighter " Enriched" (cond ((null enriched-mode) ;; Turn mode off + (remove-hook 'change-major-mode-hook + 'enriched-before-change-major-mode 'local) (setq buffer-file-format (delq 'text/enriched buffer-file-format)) ;; restore old variable values (while enriched-old-bindings @@ -199,6 +219,8 @@ Commands: nil) (t ; Turn mode on + (add-hook 'change-major-mode-hook + 'enriched-before-change-major-mode nil 'local) (add-to-list 'buffer-file-format 'text/enriched) ;; Save old variable values before we change them. ;; These will be restored if we exit Enriched mode. @@ -226,8 +248,6 @@ Commands: (while enriched-old-bindings (set (pop enriched-old-bindings) (pop enriched-old-bindings))))) -(add-hook 'change-major-mode-hook 'enriched-before-change-major-mode) - (defun enriched-after-change-major-mode () (when enriched-mode (let ((enriched-rerun-flag t)) @@ -235,30 +255,8 @@ Commands: (add-hook 'after-change-major-mode-hook 'enriched-after-change-major-mode) -;;; -;;; Keybindings -;;; - -(defvar enriched-mode-map nil - "Keymap for Enriched mode.") -(if (null enriched-mode-map) - (fset 'enriched-mode-map (setq enriched-mode-map (make-sparse-keymap)))) - -(if (not (assq 'enriched-mode minor-mode-map-alist)) - (setq minor-mode-map-alist - (cons (cons 'enriched-mode enriched-mode-map) - minor-mode-map-alist))) - -(define-key enriched-mode-map [remap move-beginning-of-line] 'beginning-of-line-text) -(define-key enriched-mode-map "\C-m" 'reindent-then-newline-and-indent) -(define-key enriched-mode-map - [remap newline-and-indent] 'reindent-then-newline-and-indent) -(define-key enriched-mode-map "\M-j" 'facemenu-justification-menu) -(define-key enriched-mode-map "\M-S" 'set-justification-center) -(define-key enriched-mode-map "\C-x\t" 'increase-left-margin) -(define-key enriched-mode-map "\C-c[" 'set-left-margin) -(define-key enriched-mode-map "\C-c]" 'set-right-margin) +(fset 'enriched-mode-map enriched-mode-map) ;;; ;;; Some functions dealing with text-properties, especially indentation -- 2.39.5