summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog60
-rw-r--r--lisp/bookmark.el70
-rw-r--r--lisp/emacs-lisp/re-builder.el12
-rw-r--r--lisp/emulation/vip.el253
-rw-r--r--lisp/erc/ChangeLog5
-rw-r--r--lisp/erc/erc-list.el17
-rw-r--r--lisp/help-mode.el21
-rw-r--r--lisp/hi-lock.el72
-rw-r--r--lisp/ibuffer.el292
-rw-r--r--lisp/kmacro.el47
-rw-r--r--lisp/mail/rmail.el2
-rw-r--r--lisp/mail/rmailsum.el392
-rw-r--r--lisp/menu-bar.el2493
-rw-r--r--lisp/net/net-utils.el16
-rw-r--r--lisp/net/newst-plainview.el215
-rw-r--r--lisp/net/rcirc.el89
-rw-r--r--lisp/org/ChangeLog5
-rw-r--r--lisp/org/org-remember.el8
-rw-r--r--lisp/org/org-src.el6
-rw-r--r--lisp/play/gametree.el26
-rw-r--r--lisp/play/handwrite.el105
-rw-r--r--lisp/play/pong.el24
-rw-r--r--lisp/play/snake.el23
-rw-r--r--lisp/play/solitaire.el78
-rw-r--r--lisp/progmodes/gdb-mi.el65
-rw-r--r--lisp/progmodes/idlw-help.el31
-rw-r--r--lisp/progmodes/idlwave.el34
-rw-r--r--lisp/replace.el102
-rw-r--r--lisp/tar-mode.el148
-rw-r--r--lisp/term/lk201.el130
-rw-r--r--lisp/textmodes/bib-mode.el13
-rw-r--r--lisp/textmodes/enriched.el48
32 files changed, 2511 insertions, 2391 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 27c320494ef..e331cbab991 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,44 @@
+2011-02-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ 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 <deniz.a.m.dogan@gmail.com>
* net/rcirc.el: Add PRIVMSG and CTCP functions.
@@ -70,8 +111,7 @@
2011-02-07 Michael Albinus <michael.albinus@gmx.de>
- * 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 <deniz.a.m.dogan@gmail.com>
@@ -79,21 +119,21 @@
2011-02-06 Jay Belanger <jay.p.belanger@gmail.com>
- * 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 <monnier@iro.umontreal.ca>
+
+ * erc-list.el (erc-list-menu-mode-map): Move initialization
+ into declaration.
+
2011-02-07 Julien Danjou <julien@danjou.info>
* 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 <abraham@dina.kvl.dk> 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 "<mouse-2>") '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 "<mouse-2>") '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 <monnier@iro.umontreal.ca>
+
+ * org-remember.el (org-remember-mode-map):
+ * org-src.el (org-src-mode-map): Move initialization into declaration.
+
2011-01-13 Stefan Monnier <monnier@iro.umontreal.ca>
* 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
@@ -164,6 +164,24 @@ The value is a list of \(VAR VALUE VAR VALUE...).")
(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