-(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
+ "Blink 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
+ "Use CUA Keys (Cut/Paste with C-x/C-c/C-v)"
+ "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
+ "Ignore Case for 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
+ "Highlight Matching Parentheses"
+ "Highlight matching/mismatched parentheses at cursor (Show Paren mode)"))
+ (define-key menu [transient-mark-mode]
+ (menu-bar-make-mm-toggle
+ transient-mark-mode
+ "Highlight Active Region"
+ "Make text in active region stand out in color (Transient Mark mode)"
+ (:enable (not cua-mode))))
+ menu))