(rmail-summary-mode-map): Remove unneeded declaration.
[bpt/emacs.git] / lisp / menu-bar.el
index 710022b..877a5b5 100644 (file)
@@ -1,7 +1,7 @@
 ;;; menu-bar.el --- define a default menu bar
 
 ;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: RMS
 ;; Maintainer: FSF
@@ -64,7 +64,7 @@
 \f
 ;; The "File" menu items
 (define-key menu-bar-file-menu [exit-emacs]
-  '(menu-item "Exit Emacs" save-buffers-kill-emacs
+  '(menu-item "Quit" save-buffers-kill-terminal
              :help "Save unsaved buffers, then exit"))
 
 (define-key menu-bar-file-menu [separator-exit]
 
 (define-key menu-bar-edit-menu [mark-whole-buffer]
   '(menu-item "Select All" mark-whole-buffer
-             :help "Mark the whole buffer for a subsequent cut/copy."))
+             :help "Mark the whole buffer for a subsequent cut/copy"))
 (define-key menu-bar-edit-menu [clear]
   '(menu-item "Clear" delete-region
              :enable (and mark-active
 (defvar yank-menu (cons "Select Yank" nil))
 (fset 'yank-menu (cons 'keymap yank-menu))
 (define-key menu-bar-edit-menu [paste-from-menu]
-  '(menu-item "Paste from kill menu" yank-menu
+  '(menu-item "Paste from Kill Menu" yank-menu
              :enable (and (cdr yank-menu) (not buffer-read-only))
              :help "Choose a string from the kill ring and paste it"))
 (define-key menu-bar-edit-menu [paste]
@@ -632,8 +632,8 @@ by \"Save Options\" in Custom buffers.")
 (defun menu-set-font ()
   "Interactively select a font and make it the default."
   (interactive)
-  (let ((font (if (functionp 'x-font-dialog)
-                 (x-font-dialog)
+  (let ((font (if (fboundp 'x-select-font)
+                 (x-select-font)
                (mouse-select-font)))
        spec)
     (when font
@@ -950,7 +950,7 @@ mail status in mode line"))
 
 (define-key menu-bar-showhide-menu [showhide-tool-bar]
   (list 'menu-item "Tool-bar" 'toggle-tool-bar-mode-from-frame
-       :help "Toggle tool-bar on/off"
+       :help "Turn tool-bar on/off"
        :visible `(display-graphic-p)
        :button `(:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
 
@@ -1049,29 +1049,56 @@ mail status in mode line"))
 (define-key menu-bar-options-menu [auto-fill-mode]
   '(menu-item "Auto Fill in Text Modes"
               menu-bar-text-mode-auto-fill
-             :help "Automatically fill text while typing (Auto Fill Mode)"
+             :help "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-bar-options-menu [longlines-mode]
-  '(menu-item "Word Wrap for Long Lines in this Buffer"
-              longlines-mode
-             :help "Perform word wrapping for long lines (Long Lines mode)"
-              :button (:toggle . (and (boundp 'longlines-mode)
-                                     longlines-mode))))
-
-(define-key menu-bar-options-menu [truncate-lines]
-  '(menu-item "Truncate Long Lines in this Buffer"
-             toggle-truncate-lines
-             :help "Truncate long lines at the window edge "
-             :button (:toggle . (if (or (window-full-width-p)
-                                        (not truncate-partial-width-windows))
-                                    truncate-lines
-                                  truncate-partial-width-windows))
-             :enable (and (menu-bar-menu-frame-live-and-visible-p)
-                          (or (window-full-width-p)
-                              (not truncate-partial-width-windows)))))
+
+(defvar menu-bar-line-wrapping-menu (make-sparse-keymap "Line Wrapping"))
+
+(define-key menu-bar-line-wrapping-menu [word-wrap]
+  '(menu-item "Word Wrap (Visual Line mode)"
+             (lambda ()
+               (interactive)
+               (unless visual-line-mode
+                 (visual-line-mode 1))
+               (message "Visual-Line mode enabled"))
+             :help "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 "Truncate Long Lines"
+             (lambda ()
+               (interactive)
+               (if visual-line-mode (visual-line-mode 0))
+               (setq word-wrap nil)
+               (toggle-truncate-lines 1))
+             :help "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 "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 "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]
+  (list 'menu-item "Line Wrapping in this Buffer" menu-bar-line-wrapping-menu))
+
 
 (define-key menu-bar-options-menu [highlight-separator]
   '("--"))
@@ -1334,7 +1361,7 @@ mail status in mode line"))
 
 (define-key menu-bar-describe-menu [list-keybindings]
   '(menu-item "List Key Bindings" describe-bindings
-             :help "Display all current keybindings (keyboard shortcuts)"))
+             :help "Display all current key bindings (keyboard shortcuts)"))
 (define-key menu-bar-describe-menu [describe-current-display-table]
   '(menu-item "Describe Display Table" describe-current-display-table
              :help "Describe the current display table"))
@@ -1430,7 +1457,7 @@ key, a click, or a menu-item"))
   '(menu-item "Ordering Manuals" view-order-manuals
              :help "How to order manuals from the Free Software Foundation"))
 (define-key menu-bar-manuals-menu [lookup-subject-in-all-manuals]
-  '(menu-item "Lookup Subject in all manuals..." info-apropos
+  '(menu-item "Lookup Subject in all Manuals..." info-apropos
              :help "Find description of a subject in all installed manuals"))
 (define-key menu-bar-manuals-menu [other-manuals]
   '(menu-item "All Other Manuals (Info)" Info-directory
@@ -1458,14 +1485,14 @@ key, a click, or a menu-item"))
              :help "Show the Emacs license (GPL)"))
 (define-key menu-bar-help-menu [getting-new-versions]
   '(menu-item "Getting New Versions" describe-distribution
-             :help "How to get latest versions of Emacs"))
+             :help "How to get the latest version of Emacs"))
 (defun menu-bar-help-extra-packages ()
   "Display help about some additional packages available for Emacs."
   (interactive)
   (let (enable-local-variables)
     (view-file (expand-file-name "MORE.STUFF"
                                 data-directory))
-    (goto-address)))
+    (goto-address-mode 1)))
 (define-key menu-bar-help-menu [sep2]
   '("--"))
 (define-key menu-bar-help-menu [external-packages]
@@ -1562,7 +1589,7 @@ using `abort-recursive-edit'."
     (> count 1)))
 
 (defcustom yank-menu-length 20
-  "*Maximum length to display in the yank-menu."
+  "Maximum length to display in the yank-menu."
   :type 'integer
   :group 'menu)
 
@@ -1604,7 +1631,7 @@ The menu shows all the killed text sequences stored in `kill-ring'."
 ;;; Buffers Menu
 
 (defcustom buffers-menu-max-size 10
-  "*Maximum number of entries which may appear on the Buffers menu.
+  "Maximum number of entries which may appear on the Buffers menu.
 If this is 10, then only the ten most-recently-selected buffers are shown.
 If this is nil, then all buffers are shown.
 A large number or nil slows down menu responsiveness."
@@ -1613,7 +1640,7 @@ A large number or nil slows down menu responsiveness."
   :group 'menu)
 
 (defcustom buffers-menu-buffer-name-length 30
-  "*Maximum length of the buffer name on the Buffers menu.
+  "Maximum length of the buffer name on the Buffers menu.
 If this is a number, then buffer names are truncated to this length.
 If this is nil, then buffer names are shown in full.
 A large number or nil makes the menu too wide."
@@ -1897,20 +1924,24 @@ See `menu-bar-mode' for more information."
     (menu-bar-mode arg)))
 
 (declare-function x-menu-bar-open "term/x-win" (&optional frame))
+(declare-function w32-menu-bar-open "term/w32-win" (&optional frame))
 
 (defun menu-bar-open (&optional frame)
   "Start key navigation of the menu bar in FRAME.
 
 This function decides which method to use to access the menu
 depending on FRAME's terminal device.  On X displays, it calls
-`x-menu-bar-open'; otherwise it calls `tmm-menubar'.
+`x-menu-bar-open'; on Windows, `w32-menu-bar-open' otherwise it
+calls `tmm-menubar'.
 
 If FRAME is nil or not given, use the selected frame."
   (interactive)
-  (if (eq window-system 'x)
-      (x-menu-bar-open frame)
-    (with-selected-frame (or frame (selected-frame))
-      (tmm-menubar))))
+  (let ((type (framep (or frame (selected-frame)))))
+    (cond
+     ((eq type 'x) (x-menu-bar-open frame))
+     ((eq type 'w32) (w32-menu-bar-open frame))
+     (t (with-selected-frame (or frame (selected-frame))
+          (tmm-menubar))))))
 
 (global-set-key [f10] 'menu-bar-open)