changeset 4372:ebb35ddea76a

Byte-compile menu lambdas; make the menu of available tutorials more readable. 2007-12-31 Aidan Kehoe <kehoea@parhasard.net> * menubar-items.el (default-menubar): Byte compile the specified lambdas. Correct some compile time warnings uncovered by this. * menubar-items.el (tutorials-menu-filter): If a language environment doesn't have an associated POSIX locale specified--which indicates we don't want it used except by those who know what they're doing--don't show its tutorial in the menu. * behavior.el (behavior-menu-filter): Byte compile the lambdas in the generated menu.
author Aidan Kehoe <kehoea@parhasard.net>
date Mon, 31 Dec 2007 21:34:45 +0100
parents 4143b78d0df0
children 713ca3d356b4
files lisp/ChangeLog lisp/behavior.el lisp/dumped-lisp.el lisp/menubar-items.el
diffstat 4 files changed, 1359 insertions(+), 1345 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Dec 23 15:29:17 2007 +0100
+++ b/lisp/ChangeLog	Mon Dec 31 21:34:45 2007 +0100
@@ -1,3 +1,15 @@
+2007-12-31  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* menubar-items.el (default-menubar): 
+	Byte compile the specified lambdas. Correct some compile time
+	warnings uncovered by this.
+	* menubar-items.el (tutorials-menu-filter):
+	If a language environment doesn't have an associated POSIX locale
+	specified--which indicates we don't want it used except by those
+	who know what they're doing--don't show its tutorial in the menu.
+	* behavior.el (behavior-menu-filter):
+	Byte compile the lambdas in the generated menu. 
+
 2007-12-22  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	Factor out lists of operators specially treated by `make-autoload'.
--- a/lisp/behavior.el	Sun Dec 23 15:29:17 2007 +0100
+++ b/lisp/behavior.el	Mon Dec 31 21:34:45 2007 +0100
@@ -478,23 +478,23 @@
 
 (defun behavior-menu-filter (menu)
   (append
-   '(("%_Package Utilities"
+   `(("%_Package Utilities"
        ("%_Set Download Site"
 	("%_Official Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-download-menu)))))
+	 :filter ,#'(lambda (&rest junk)
+                    (menu-split-long-menu
+                     (submenu-generate-accelerator-spec
+                      (package-ui-download-menu)))))
 	("%_Pre-Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-pre-release-download-menu)))))
+	 :filter ,#'(lambda (&rest junk)
+                      (menu-split-long-menu
+                       (submenu-generate-accelerator-spec
+                        (package-ui-pre-release-download-menu)))))
 	("%_Site Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-site-release-download-menu))))))
+	 :filter ,#'(lambda (&rest junk)
+                      (menu-split-long-menu
+                       (submenu-generate-accelerator-spec
+                        (package-ui-site-release-download-menu))))))
        "--:shadowEtchedIn"
       ["%_Update Package Index" package-get-update-base]
       ["%_List and Install" pui-list-packages]
--- a/lisp/dumped-lisp.el	Sun Dec 23 15:29:17 2007 +0100
+++ b/lisp/dumped-lisp.el	Mon Dec 31 21:34:45 2007 +0100
@@ -104,7 +104,7 @@
        "isearch-mode"
        "buffer"
        "buff-menu"
-       "paths.el"		; don't get confused if paths compiled.
+       "paths"
        "lisp"
        "page"
        "register"
--- a/lisp/menubar-items.el	Sun Dec 23 15:29:17 2007 +0100
+++ b/lisp/menubar-items.el	Mon Dec 31 21:34:45 2007 +0100
@@ -99,23 +99,20 @@
      (coding-system-list)))))
 
 (defconst default-menubar
-; (purecopy-menubar ;purespace is dead
-   ;; note backquote.
-   `(
-     ("%_File"
+  ;; This is backquoted; a lambda with a preceding , will be byte-compiled.
+   `(("%_File"
       ["%_Open..." find-file]
       ["Open in Other %_Window..." find-file-other-window]
       ["Open in New %_Frame..." find-file-other-frame]
       ("Open with Specified %_Encoding"
        :filter
-       (lambda (menu)
-	 (coding-system-menu-filter
-	  (lambda (entry)
-	    (let ((coding-system-for-read entry))
-	      (call-interactively 'find-file)))
-	  (lambda (entry) t)
-	  t))
-       )
+       ,#'(lambda (menu)
+            (coding-system-menu-filter
+             (lambda (entry)
+               (let ((coding-system-for-read entry))
+                 (call-interactively 'find-file)))
+             (lambda (entry) t)
+             t)))
       ["%_Hex Edit File..." hexl-find-file
        :active (fboundp 'hexl-find-file)]
       ["%_Insert File..." insert-file]
@@ -135,7 +132,7 @@
       ["Save So%_me Buffers" save-some-buffers]
       "-----"
       ,@(if (valid-specifier-tag-p 'msprinter)
-	  '(["Page Set%_up..." generic-page-setup]))
+	    '(["Page Set%_up..." generic-page-setup]))
       ["%_Print" generic-print-buffer
        :active (or (valid-specifier-tag-p 'msprinter)
 		   (and (not (eq system-type 'windows-nt))
@@ -152,384 +149,386 @@
        :active (or buffer-file-name revert-buffer-function)
        :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
       ("Rever%_t/Recover"
-      ("Revert Buffer with Specified %_Encoding"
-       :filter
-       (lambda (menu)
-	 (coding-system-menu-filter
-	  (lambda (entry)
-	    (let ((coding-system-for-read entry))
-	      (revert-buffer)))
-	  (lambda (entry) (or buffer-file-name revert-buffer-function))
-	  t))
+       ("Revert Buffer with Specified %_Encoding"
+	:filter
+	,#'(lambda (menu)
+	     (coding-system-menu-filter
+	      (lambda (entry)
+		(let ((coding-system-for-read entry))
+		  (revert-buffer)))
+	      (lambda (entry) (or buffer-file-name revert-buffer-function))
+	      t)))
+       ["Re%_cover Buffer from Autosave" (recover-file buffer-file-name)
+	:active buffer-file-name
+	:suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
+       ["Recover %_Session..." recover-session]
        )
-      ["Re%_cover Buffer from Autosave" (recover-file buffer-file-name)
-       :active buffer-file-name
-       :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
-      ["Recover %_Session..." recover-session]
-      )
       "-----"
       ["E%_xit XEmacs" save-buffers-kill-emacs]
       )
 
      ("%_Edit"
-      ["%_Undo" undo
-       :active (and (not (eq buffer-undo-list t))
-		    (or buffer-undo-list pending-undo-list))
-       :suffix (if (eq last-command 'undo) "More" "")]
-      ["%_Redo" redo
-       :included (fboundp 'redo)
-       :active (not (or (eq buffer-undo-list t)
-			(eq last-buffer-undo-list nil)
-			(not (or (eq last-buffer-undo-list buffer-undo-list)
-				 (and (null (car-safe buffer-undo-list))
-				      (eq last-buffer-undo-list
-					  (cdr-safe buffer-undo-list)))))
-			(or (eq buffer-undo-list pending-undo-list)
-			    (eq (cdr buffer-undo-list) pending-undo-list))))
-       :suffix (if (eq last-command 'redo) "More" "")]
-      "----"
-      ["Cu%_t" kill-primary-selection
-       :active (selection-owner-p)]
-      ["%_Copy" copy-primary-selection
-       :active (selection-owner-p)]
-      ["%_Paste" yank-clipboard-selection
-       :active (selection-exists-p 'CLIPBOARD)]
-      ["%_Delete" delete-primary-selection
-       :active (selection-owner-p)]
-      "----"
-      ["Select %_All" mark-whole-buffer]
-      ["Select Pa%_ge" mark-page]
-      ["Select Paragrap%_h" mark-paragraph]
-      ["Re%_select Region" activate-region :active (mark t)]
-      "----"
-      ["%_Find..." make-search-dialog]
-      ["R%_eplace..." query-replace]
-      ["Replace (Rege%_xp)..." query-replace-regexp]
-      ["List %_Matching Lines..." list-matching-lines]
-      )
+     ["%_Undo" undo
+      :active (and (not (eq buffer-undo-list t))
+		   (or buffer-undo-list pending-undo-list))
+      :suffix (if (eq last-command 'undo) "More" "")]
+     ["%_Redo" redo
+      :included (fboundp 'redo)
+      :active (not (or (eq buffer-undo-list t)
+		       (eq last-buffer-undo-list nil)
+		       (not (or (eq last-buffer-undo-list buffer-undo-list)
+				(and (null (car-safe buffer-undo-list))
+				     (eq last-buffer-undo-list
+					 (cdr-safe buffer-undo-list)))))
+		       (or (eq buffer-undo-list pending-undo-list)
+			   (eq (cdr buffer-undo-list) pending-undo-list))))
+      :suffix (if (eq last-command 'redo) "More" "")]
+     "----"
+     ["Cu%_t" kill-primary-selection
+      :active (selection-owner-p)]
+     ["%_Copy" copy-primary-selection
+      :active (selection-owner-p)]
+     ["%_Paste" yank-clipboard-selection
+      :active (selection-exists-p 'CLIPBOARD)]
+     ["%_Delete" delete-primary-selection
+      :active (selection-owner-p)]
+     "----"
+     ["Select %_All" mark-whole-buffer]
+     ["Select Pa%_ge" mark-page]
+     ["Select Paragrap%_h" mark-paragraph]
+     ["Re%_select Region" activate-region :active (mark t)]
+     "----"
+     ["%_Find..." make-search-dialog]
+     ["R%_eplace..." query-replace]
+     ["Replace (Rege%_xp)..." query-replace-regexp]
+     ["List %_Matching Lines..." list-matching-lines]
+     )
 
      ("%_View"
-      ["%_Split Window" split-window-vertically]
-      ["S%_plit Window (Side by Side)" split-window-horizontally]
-      ["%_Un-Split (Keep This)" delete-other-windows
-       :active (not (one-window-p t))]
-      ["Un-Split (Keep %_Others)" delete-window
-       :active (not (one-window-p t))]
-      ["Balance %_Windows" balance-windows
-       :active (not (one-window-p t))]
-      ["Shrink Window to %_Fit" shrink-window-if-larger-than-buffer]
-      "----"
-      ("N%_arrow"
-       ["%_Narrow to Region" narrow-to-region :active (region-exists-p)]
-       ["Narrow to %_Page" narrow-to-page]
-       ["Narrow to %_Defun" narrow-to-defun]
-      "----"
-       ["%_Widen" widen :active (or (/= (point-min) 1)
-				    (/= (point-max) (1+ (buffer-size))))]
-       )
+     ["%_Split Window" split-window-vertically]
+     ["S%_plit Window (Side by Side)" split-window-horizontally]
+     ["%_Un-Split (Keep This)" delete-other-windows
+      :active (not (one-window-p t))]
+     ["Un-Split (Keep %_Others)" delete-window
+      :active (not (one-window-p t))]
+     ["Balance %_Windows" balance-windows
+      :active (not (one-window-p t))]
+     ["Shrink Window to %_Fit" shrink-window-if-larger-than-buffer]
+     "----"
+     ("N%_arrow"
+      ["%_Narrow to Region" narrow-to-region :active (region-exists-p)]
+      ["Narrow to %_Page" narrow-to-page]
+      ["Narrow to %_Defun" narrow-to-defun]
       "----"
-      ["%_Goto Line..." goto-line]
-      ["Beginning of %_Defun" beginning-of-defun]
-      ["%_End of Defun" end-of-defun]
-      ["%_Count Lines in Buffer" count-lines-buffer
-       :included (not (region-active-p))]
-      ["%_Count Lines in Region" count-lines-region
-       :included (region-active-p)]
-      "----"
-      ["%_Jump to Previous Mark" (set-mark-command t)
-       :active (mark t)]
-      ["Se%_t Bookmark" bookmark-set
-       :active (fboundp 'bookmark-set)]
-      ("%_Bookmarks"
-       :filter
-       (lambda (menu)
-	 (let ((alist (and-boundp 'bookmark-alist
-			bookmark-alist)))
-	   (if (not alist)
-	       menu
-	     (let ((items
+      ["%_Widen" widen :active (or (/= (point-min) 1)
+				   (/= (point-max) (1+ (buffer-size))))]
+      )
+     "----"
+     ["%_Goto Line..." goto-line]
+     ["Beginning of %_Defun" beginning-of-defun]
+     ["%_End of Defun" end-of-defun]
+     ["%_Count Lines in Buffer" count-lines-buffer
+      :included (not (region-active-p))]
+     ["%_Count Lines in Region" count-lines-region
+      :included (region-active-p)]
+     "----"
+     ["%_Jump to Previous Mark" (set-mark-command t)
+      :active (mark t)]
+     ["Se%_t Bookmark" bookmark-set
+      :active (fboundp 'bookmark-set)]
+     ("%_Bookmarks"
+      :filter
+      ,#'(lambda (menu)
+	   (let ((alist (and-boundp 'bookmark-alist
+			  bookmark-alist)))
+	     (if (not alist)
+		 menu
+	       (let ((items
+		      (submenu-generate-accelerator-spec
+		       (mapcar #'(lambda (bmk)
+				   `[,bmk (bookmark-jump ',bmk)])
+			       (bookmark-all-names)))))
+		 (append menu '("---") items)))))
+      "---"
+      ["Insert %_Contents" bookmark-menu-insert
+       :active (fboundp 'bookmark-menu-insert)]
+      ["Insert L%_ocation" bookmark-menu-locate
+       :active (fboundp 'bookmark-menu-locate)]
+      "---"
+      ["%_Rename Bookmark" bookmark-menu-rename
+       :active (fboundp 'bookmark-menu-rename)]
+      ("%_Delete Bookmark"
+       :filter ,#'(lambda (menu)
 		    (submenu-generate-accelerator-spec
 		     (mapcar #'(lambda (bmk)
-				 `[,bmk (bookmark-jump ',bmk)])
+				 `[,bmk (bookmark-delete ',bmk)])
 			     (bookmark-all-names)))))
-	       (append menu '("---") items)))))
-       "---"
-       ["Insert %_Contents" bookmark-menu-insert
-	:active (fboundp 'bookmark-menu-insert)]
-       ["Insert L%_ocation" bookmark-menu-locate
-	:active (fboundp 'bookmark-menu-locate)]
-       "---"
-       ["%_Rename Bookmark" bookmark-menu-rename
-	:active (fboundp 'bookmark-menu-rename)]
-       ("%_Delete Bookmark"
-	 :filter (lambda (menu)
-		   (submenu-generate-accelerator-spec
-		    (mapcar #'(lambda (bmk)
-				`[,bmk (bookmark-delete ',bmk)])
-			    (bookmark-all-names)))))
-       ["%_Edit Bookmark List" bookmark-bmenu-list
-	:active (and-boundp 'bookmark-alist bookmark-alist)]
-       "---"
-       ["%_Save Bookmarks"        bookmark-save
-	:active (and-boundp 'bookmark-alist bookmark-alist)]
-       ["Save Bookmarks %_As..."  bookmark-write
-	:active (and-boundp 'bookmark-alist bookmark-alist)]
-       ["%_Load a Bookmark File" bookmark-load
-	:active (fboundp 'bookmark-load)]
-       )
+      ["%_Edit Bookmark List" bookmark-bmenu-list
+       :active (and-boundp 'bookmark-alist bookmark-alist)]
+      "---"
+      ["%_Save Bookmarks"        bookmark-save
+       :active (and-boundp 'bookmark-alist bookmark-alist)]
+      ["Save Bookmarks %_As..."  bookmark-write
+       :active (and-boundp 'bookmark-alist bookmark-alist)]
+      ["%_Load a Bookmark File" bookmark-load
+       :active (fboundp 'bookmark-load)]
       )
+     )
 
      ("C%_mds"
-      ["Repeat Last Comple%_x Command..." repeat-complex-command]
-      ["E%_valuate Lisp Expression..." eval-expression]
-      ["Execute %_Named Command..." execute-extended-command]
-      "----"
-      ["Start %_Defining Macro" start-kbd-macro
-       :included (not defining-kbd-macro)]
-      ["Stop %_Defining Macro" end-kbd-macro
-       :included defining-kbd-macro]
-      ["%_Execute Last Macro" call-last-kbd-macro
+     ["Repeat Last Comple%_x Command..." repeat-complex-command]
+     ["E%_valuate Lisp Expression..." eval-expression]
+     ["Execute %_Named Command..." execute-extended-command]
+     "----"
+     ["Start %_Defining Macro" start-kbd-macro
+      :included (not defining-kbd-macro)]
+     ["Stop %_Defining Macro" end-kbd-macro
+      :included defining-kbd-macro]
+     ["%_Execute Last Macro" call-last-kbd-macro
+      :active last-kbd-macro]
+     ("Other %_Macro"
+      ["Edit %_Last Macro" edit-last-kbd-macro
+       :active last-kbd-macro]
+      ["%_Edit Macro..." edit-kbd-macro]
+      ["%_Append to Last Macro" (start-kbd-macro t)
+       :active (and (not defining-kbd-macro) last-kbd-macro)]
+      "---"
+      ["%_Name Last Macro..." name-last-kbd-macro
        :active last-kbd-macro]
-      ("Other %_Macro"
-       ["Edit %_Last Macro" edit-last-kbd-macro
-	:active last-kbd-macro]
-       ["%_Edit Macro..." edit-kbd-macro]
-       ["%_Append to Last Macro" (start-kbd-macro t)
-	:active (and (not defining-kbd-macro) last-kbd-macro)]
-       "---"
-       ["%_Name Last Macro..." name-last-kbd-macro
-	:active last-kbd-macro]
-       ["Assign Last Macro to %_Key..." assign-last-kbd-macro-to-key
-	:active (and last-kbd-macro
-		     (fboundp 'assign-last-kbd-macro-to-key))]
-       "---"
-       ["E%_xecute Last Macro on Region Lines"
-	:active (and last-kbd-macro (region-exists-p))]
-       "---"
-       ["%_Query User During Macro" kbd-macro-query
-	:active defining-kbd-macro]
-       ["Enter %_Recursive Edit During Macro" (kbd-macro-query t)
-	:active defining-kbd-macro]
-       "---"
-       ["%_Insert Named Macro into Buffer..." insert-kbd-macro]
-       ["Read Macro from Re%_gion" read-kbd-macro
-	:active (region-exists-p)]
-       )
+      ["Assign Last Macro to %_Key..." assign-last-kbd-macro-to-key
+       :active (and last-kbd-macro
+		    (fboundp 'assign-last-kbd-macro-to-key))]
+      "---"
+      ["E%_xecute Last Macro on Region Lines"
+       :active (and last-kbd-macro (region-exists-p))]
+      "---"
+      ["%_Query User During Macro" kbd-macro-query
+       :active defining-kbd-macro]
+      ["Enter %_Recursive Edit During Macro" (kbd-macro-query t)
+       :active defining-kbd-macro]
+      "---"
+      ["%_Insert Named Macro into Buffer..." insert-kbd-macro]
+      ["Read Macro from Re%_gion" read-kbd-macro
+       :active (region-exists-p)]
+      )
+     "----"
+     ["D%_ynamic Abbrev Expand" dabbrev-expand]
+     ["Define %_Global Abbrev for " add-global-abbrev
+      :suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
+					  40 nil nil t)]
+     ("Other %_Abbrev"
+      ["Dynamic Abbrev %_Complete" dabbrev-completion]
+      ["Dynamic Abbrev Complete in %_All Buffers" (dabbrev-completion 16)]
       "----"
-       ["D%_ynamic Abbrev Expand" dabbrev-expand]
-       ["Define %_Global Abbrev for " add-global-abbrev
-	:suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
+      "----"
+      ["%_Define Global Abbrev for " add-global-abbrev
+       :suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
 					  40 nil nil t)]
-      ("Other %_Abbrev"
-       ["Dynamic Abbrev %_Complete" dabbrev-completion]
-       ["Dynamic Abbrev Complete in %_All Buffers" (dabbrev-completion 16)]
-       "----"
-       "----"
-       ["%_Define Global Abbrev for " add-global-abbrev
-	:suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
+      ["Define %_Mode-Specific Abbrev for " add-mode-abbrev
+       :suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
 					  40 nil nil t)]
-       ["Define %_Mode-Specific Abbrev for " add-mode-abbrev
-	:suffix	(truncate-string-to-width (abbrev-string-to-be-defined nil)
-					  40 nil nil t)]
-       ["Define Global Ex%_pansion for " inverse-add-global-abbrev
-	:suffix	(truncate-string-to-width
+      ["Define Global Ex%_pansion for " inverse-add-global-abbrev
+       :suffix	(truncate-string-to-width
 		 (inverse-abbrev-string-to-be-defined 1)
 		 40 nil nil t)]
-       ["Define Mode-Specific Expa%_nsion for " inverse-add-mode-abbrev
-	:suffix	(truncate-string-to-width
+      ["Define Mode-Specific Expa%_nsion for " inverse-add-mode-abbrev
+       :suffix	(truncate-string-to-width
 		 (inverse-abbrev-string-to-be-defined 1)
 		 40 nil nil t)]
-       "---"
-       ["E%_xpand Abbrev" expand-abbrev]
-       ["Expand Abbrevs in Re%_gion" expand-region-abbrevs
-	:active (region-exists-p)]
-       ["%_Unexpand Last Abbrev" unexpand-abbrev
-	:active (and (stringp last-abbrev-text)
-		     (> last-abbrev-location 0))]
-       "---"
-       ["%_Kill All Abbrevs" kill-all-abbrevs]
-       ["%_Insert All Abbrevs into Buffer" insert-abbrevs]
-       ["%_List Abbrevs" list-abbrevs]
-       "---"
-       ["%_Edit Abbrevs" edit-abbrevs]
-       ["%_Redefine Abbrevs from Buffer" edit-abbrevs-redefine
-	:active (eq major-mode 'edit-abbrevs-mode)]
-       "---"
-       ["%_Save Abbrevs As..." write-abbrev-file]
-       ["L%_oad Abbrevs..." read-abbrev-file]
-       )
-	"---"
-      ["%_Cut Rectangle" kill-rectangle]
-      ["%_Prefix Rectangle..." string-rectangle]
-      ("Other %_Rectangles/Register"
-       ["%_Yank Rectangle" yank-rectangle]
-       ["Rectangle %_to Register" copy-rectangle-to-register]
-       ["Rectangle %_from Register" insert-register]
-       ["%_Delete Rectangle" clear-rectangle]
-       ["%_Open Rectangle" open-rectangle]
-       ["Rectangle %_Mousing"
-	(customize-set-variable	'mouse-track-rectangle-p
+      "---"
+      ["E%_xpand Abbrev" expand-abbrev]
+      ["Expand Abbrevs in Re%_gion" expand-region-abbrevs
+       :active (region-exists-p)]
+      ["%_Unexpand Last Abbrev" unexpand-abbrev
+       :active (and (stringp last-abbrev-text)
+		    (> last-abbrev-location 0))]
+      "---"
+      ["%_Kill All Abbrevs" kill-all-abbrevs]
+      ["%_Insert All Abbrevs into Buffer" insert-abbrevs]
+      ["%_List Abbrevs" list-abbrevs]
+      "---"
+      ["%_Edit Abbrevs" edit-abbrevs]
+      ["%_Redefine Abbrevs from Buffer" edit-abbrevs-redefine
+       :active (eq major-mode 'edit-abbrevs-mode)]
+      "---"
+      ["%_Save Abbrevs As..." write-abbrev-file]
+      ["L%_oad Abbrevs..." read-abbrev-file]
+      )
+     "---"
+     ["%_Cut Rectangle" kill-rectangle]
+     ["%_Prefix Rectangle..." string-rectangle]
+     ("Other %_Rectangles/Register"
+      ["%_Yank Rectangle" yank-rectangle]
+      ["Rectangle %_to Register" copy-rectangle-to-register]
+      ["Rectangle %_from Register" insert-register]
+      ["%_Delete Rectangle" clear-rectangle]
+      ["%_Open Rectangle" open-rectangle]
+      ["Rectangle %_Mousing"
+       (customize-set-variable	'mouse-track-rectangle-p
 				(not mouse-track-rectangle-p))
-	:style toggle :selected mouse-track-rectangle-p]
-       "---"
-       ["%_Copy to Register..." copy-to-register :active (region-exists-p)]
-       ["%_Append to Register..." append-register :active (region-exists-p)]
-       ["%_Insert Register..." insert-register]
-       "---"
-       ["%_Save Point to Register" point-to-register]
-       ["%_Jump to Register"  register-to-point]
-       )
-	"---"
-       ["%_Sort Lines in Region" sort-lines :active (region-exists-p)]
-       ["%_Uppercase Region or Word" upcase-region-or-word]
-       ["%_Lowercase Region or Word" downcase-region-or-word]
-       ["%_Indent Region or Balanced Expression"
-	indent-region-or-balanced-expression]
-       ["%_Fill Paragraph or Region" fill-paragraph-or-region]
-       ("Other %_Text Commands"
-	["Sort %_Paragraphs in Region" sort-paragraphs :active (region-exists-p)]
-	["Sort Pa%_ges in Region" sort-pages :active (region-exists-p)]
-	["Sort C%_olumns in Region" sort-columns :active (region-exists-p)]
-	["Sort %_Regexp..." sort-regexp-fields :active (region-exists-p)]
-	"---"
-	["%_Capitalize Region" capitalize-region :active (region-exists-p)]
-	["Title-C%_ase Region" capitalize-region-as-title
-	 :active (region-exists-p)]
-	"----"
-	["C%_enter Region or Paragraph"
-	 (if (region-active-p) (center-region) (center-line))]
-	["Center %_Line" center-line]
-	"---"
-	["%_Indent Region Rigidly" indent-rigidly :active (region-exists-p)]
-	["In%_dent To Column..." indent-to-column]
-	"---"
-	["%_Untabify (Tabs to Spaces)" untabify :active (and (region-exists-p)
-							  (fboundp 'untabify))]
-	["%_Tabify (Spaces to Tabs)" tabify :active (and (region-exists-p)
-							(fboundp 'tabify))]
-	["Tab to Tab %_Stop" tab-to-tab-stop]
-	["Edit Ta%_b Stops" edit-tab-stops]
-	)
-       "---"
-       ("%_Tags"
-	["%_Find Tag..." find-tag]
-	["Find %_Other Window..." find-tag-other-window]
-	["%_Next Tag..." (find-tag nil)]
-	["N%_ext Other Window..." (find-tag-other-window nil)]
-	["Next %_File" next-file]
-	"-----"
-	["Tags %_Search..." tags-search]
-	["Tags %_Replace..." tags-query-replace]
-	["%_Continue Search/Replace" tags-loop-continue]
-	"-----"
-	["%_Pop stack" pop-tag-mark]
-	["%_Apropos..." tags-apropos]
-	"-----"
-	["%_Set Tags Table File..." visit-tags-table]
-	)
-       )
+       :style toggle :selected mouse-track-rectangle-p]
+      "---"
+      ["%_Copy to Register..." copy-to-register :active (region-exists-p)]
+      ["%_Append to Register..." append-register :active (region-exists-p)]
+      ["%_Insert Register..." insert-register]
+      "---"
+      ["%_Save Point to Register" point-to-register]
+      ["%_Jump to Register"  register-to-point]
+      )
+     "---"
+     ["%_Sort Lines in Region" sort-lines :active (region-exists-p)]
+     ["%_Uppercase Region or Word" upcase-region-or-word]
+     ["%_Lowercase Region or Word" downcase-region-or-word]
+     ["%_Indent Region or Balanced Expression"
+      indent-region-or-balanced-expression]
+     ["%_Fill Paragraph or Region" fill-paragraph-or-region]
+     ("Other %_Text Commands"
+      ["Sort %_Paragraphs in Region" sort-paragraphs :active (region-exists-p)]
+      ["Sort Pa%_ges in Region" sort-pages :active (region-exists-p)]
+      ["Sort C%_olumns in Region" sort-columns :active (region-exists-p)]
+      ["Sort %_Regexp..." sort-regexp-fields :active (region-exists-p)]
+      "---"
+      ["%_Capitalize Region" capitalize-region :active (region-exists-p)]
+      ["Title-C%_ase Region" capitalize-region-as-title
+       :active (region-exists-p)]
+      "----"
+      ["C%_enter Region or Paragraph"
+       (if (region-active-p) (center-region) (center-line))]
+      ["Center %_Line" center-line]
+      "---"
+      ["%_Indent Region Rigidly" indent-rigidly :active (region-exists-p)]
+      ["In%_dent To Column..." indent-to-column]
+      "---"
+      ["%_Untabify (Tabs to Spaces)" untabify :active (and (region-exists-p)
+							   (fboundp 'untabify))]
+      ["%_Tabify (Spaces to Tabs)" tabify :active (and (region-exists-p)
+						       (fboundp 'tabify))]
+      ["Tab to Tab %_Stop" tab-to-tab-stop]
+      ["Edit Ta%_b Stops" edit-tab-stops]
+      )
+     "---"
+     ("%_Tags"
+      ["%_Find Tag..." find-tag]
+      ["Find %_Other Window..." find-tag-other-window]
+      ["%_Next Tag..." (find-tag nil)]
+      ["N%_ext Other Window..." (find-tag-other-window nil)]
+      ["Next %_File" next-file]
+      "-----"
+      ["Tags %_Search..." tags-search]
+      ["Tags %_Replace..." tags-query-replace]
+      ["%_Continue Search/Replace" tags-loop-continue]
+      "-----"
+      ["%_Pop stack" pop-tag-mark]
+      ["%_Apropos..." tags-apropos]
+      "-----"
+      ["%_Set Tags Table File..." visit-tags-table]
+      )
+     )
 
      ;; #### Delete this entire menu as soon as the new package source is
      ;; committed.
      ("%_Tools"
-      ("%_Packages"
-       ("%_Set Download Site"
-	("%_Official Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-download-menu)))))
-	("%_Pre-Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-pre-release-download-menu)))))
-	("%_Site Releases"
-	 :filter (lambda (&rest junk)
-		   (menu-split-long-menu
-		    (submenu-generate-accelerator-spec
-		     (package-ui-site-release-download-menu))))))
-       "--:shadowEtchedIn"
-       ["%_Update Package Index" package-get-update-base]
-       ["%_List and Install" pui-list-packages]
-       ["U%_pdate Installed Packages" package-get-update-all]
-       ["%_Help" (Info-goto-node "(xemacs)Packages")])
-      ("%_Internet"
-       ["Read Mail %_1 (VM)..." vm
-	:active (fboundp 'vm)]
-       ["Read Mail %_2 (MH)..." (mh-rmail t)
-	:active (fboundp 'mh-rmail)]
-       ["Send %_Mail..." compose-mail
-	:active (fboundp 'compose-mail)]
-       ["Usenet %_News" gnus
-	:active (fboundp 'gnus)]
-       ["Browse the %_Web" w3
-	:active (fboundp 'w3)])
+     ("%_Packages"
+      ("%_Set Download Site"
+       ("%_Official Releases"
+	:filter ,#'(lambda (&rest junk)
+		     (menu-split-long-menu
+		      (submenu-generate-accelerator-spec
+		       (package-ui-download-menu)))))
+       ("%_Pre-Releases"
+	:filter ,#'(lambda (&rest junk)
+		     (menu-split-long-menu
+		      (submenu-generate-accelerator-spec
+		       (package-ui-pre-release-download-menu)))))
+       ("%_Site Releases"
+	:filter ,#'(lambda (&rest junk)
+		     (menu-split-long-menu
+		      (submenu-generate-accelerator-spec
+		       (package-ui-site-release-download-menu))))))
+      "--:shadowEtchedIn"
+      ["%_Update Package Index" package-get-update-base]
+      ["%_List and Install" pui-list-packages]
+      ["U%_pdate Installed Packages" package-get-update-all]
+      ["%_Help" (Info-goto-node "(xemacs)Packages")])
+     ("%_Internet"
+      ["Read Mail %_1 (VM)..." vm
+       :active (fboundp 'vm)]
+      ["Read Mail %_2 (MH)..." (mh-rmail t)
+       :active (fboundp 'mh-rmail)]
+      ["Send %_Mail..." compose-mail
+       :active (fboundp 'compose-mail)]
+      ["Usenet %_News" gnus
+       :active (fboundp 'gnus)]
+      ["Browse the %_Web" w3
+       :active (fboundp 'w3)])
+     "---"
+     ("%_Grep"
+      :filter
+      ,#'(lambda (menu)
+	   (if-boundp 'grep-history
+	       (if grep-history
+		   (let ((items
+			  (submenu-generate-accelerator-spec
+			   (mapcar #'(lambda (label-value)
+				       (vector (first label-value)
+					       (list 'grep
+						     (second label-value))))
+				   (Menubar-items-truncate-history
+				    grep-history 10 50)))))
+		     (append menu '("---") items))
+		 menu)
+	     menu))
+      ["%_Grep..." grep :active (fboundp 'grep)]
+      ["%_Kill Grep" kill-compilation
+       :active (and (fboundp 'kill-compilation)
+		    (fboundp 'compilation-find-buffer)
+		    (let ((buffer (condition-case nil
+				      (compilation-find-buffer)
+				    (error nil))))
+		      (and buffer (get-buffer-process buffer))))]
       "---"
-      ("%_Grep"
-       :filter
-       (lambda (menu)
-	 (if (or (not (boundp 'grep-history)) (null grep-history))
-	     menu
-	   (let ((items
-		  (submenu-generate-accelerator-spec
-                   (mapcar #'(lambda (label-value)
-			       (vector (first label-value)
-				       (list 'grep (second label-value))))
-			   (Menubar-items-truncate-history
-                            grep-history 10 50)))))
-	     (append menu '("---") items))))
-       ["%_Grep..." grep :active (fboundp 'grep)]
-       ["%_Kill Grep" kill-compilation
-	:active (and (fboundp 'kill-compilation)
-		     (fboundp 'compilation-find-buffer)
-		     (let ((buffer (condition-case nil
-				       (compilation-find-buffer)
-				     (error nil))))
-		       (and buffer (get-buffer-process buffer))))]
-       "---"
-       ["Grep %_All Files in Current Directory..."
-	grep-all-files-in-current-directory
-	:active (fboundp 'grep-all-files-in-current-directory)]
-       ["Grep All Files in Current Directory %_Recursively..."
-	grep-all-files-in-current-directory-and-below
-	:active (fboundp 'grep-all-files-in-current-directory-and-below)]
-       "---"
-       ["Grep %_C and C Header Files in Current Directory..."
-	(progn
-	  (require 'compile)
-	  (let ((grep-command
-		 (cons (concat grep-command " *.[chCH]"
+      ["Grep %_All Files in Current Directory..."
+       grep-all-files-in-current-directory
+       :active (fboundp 'grep-all-files-in-current-directory)]
+      ["Grep All Files in Current Directory %_Recursively..."
+       grep-all-files-in-current-directory-and-below
+       :active (fboundp 'grep-all-files-in-current-directory-and-below)]
+      "---"
+      ["Grep %_C and C Header Files in Current Directory..."
+       (progn
+	 (require 'compile)
+	 (let ((grep-command
+		(cons (concat grep-command " *.[chCH]"
 					; i wanted to also use *.cc and *.hh.
 					; see long comment below under Perl.
-			       )
-		       (length grep-command))))
-	    (call-interactively 'grep)))
-	:active (fboundp 'grep)]
-       ["Grep C Hea%_der Files in Current Directory..."
-	(progn
-	  (require 'compile)
-	  (let ((grep-command
-		 (cons (concat grep-command " *.[hH]"
+			      )
+		      (length grep-command))))
+	   (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+      ["Grep C Hea%_der Files in Current Directory..."
+       (progn
+	 (require 'compile)
+	 (let ((grep-command
+		(cons (concat grep-command " *.[hH]"
 					; i wanted to also use *.hh.
 					; see long comment below under Perl.
-			       )
-		       (length grep-command))))
-	    (call-interactively 'grep)))
-	:active (fboundp 'grep)]
-       ["Grep %_E-Lisp Files in Current Directory..."
-	(progn
-	  (require 'compile)
-	  (let ((grep-command
-		 (cons (concat grep-command " *.el")
-		       (length grep-command))))
-	    (call-interactively 'grep)))
-	:active (fboundp 'grep)]
-       ["Grep %_Perl Files in Current Directory..."
-	(progn
-	  (require 'compile)
-	  (let ((grep-command
-		 (cons (concat grep-command " *.pl"
+			      )
+		      (length grep-command))))
+	   (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+      ["Grep %_E-Lisp Files in Current Directory..."
+       (progn
+	 (require 'compile)
+	 (let ((grep-command
+		(cons (concat grep-command " *.el")
+		      (length grep-command))))
+	   (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+      ["Grep %_Perl Files in Current Directory..."
+       (progn
+	 (require 'compile)
+	 (let ((grep-command
+		(cons (concat grep-command " *.pl"
 					; i wanted to use this:
 					; " *.pl *.pm *.am"
 					; but grep complains if it can't
@@ -539,601 +538,596 @@
 					; each separate glob in the directory
 					; to see if there are any files in
 					; that glob, and if not, omit it.
-			       )
-		       (length grep-command))))
-	    (call-interactively 'grep)))
-	:active (fboundp 'grep)]
-       ["Grep %_HTML Files in Current Directory..."
-	(progn
-	  (require 'compile)
-	  (let ((grep-command
-		 (cons (concat grep-command " *.*htm*")
-		       (length grep-command))))
-	    (call-interactively 'grep)))
-	:active (fboundp 'grep)]
-       "---"
-       ["%_Next Match" next-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["Pre%_vious Match" previous-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["%_First Match" first-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["G%_oto Match" compile-goto-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       "---"
-       ["%_Set Grep Command..."
-	(progn
-	  (require 'compile)
-	  (customize-set-variable
-	   'grep-command
-	   (read-shell-command "Default Grep Command: " grep-command)))
-	:active (fboundp 'grep)
-	]
-       )
-      ("%_Compile"
-       :filter
-       (lambda (menu)
-	 (if (or (not (boundp 'compile-history)) (null compile-history))
-	     menu
-	   (let ((items
-		  (submenu-generate-accelerator-spec
-		   (mapcar #'(lambda (label-value)
-			       (vector (first label-value)
-				       (list 'compile (second label-value))))
-			   (Menubar-items-truncate-history
-                            compile-history 10 50)))))
-	     (append menu '("---") items))))
-       ["%_Compile..." compile :active (fboundp 'compile)]
-       ["%_Repeat Compilation" recompile :active (fboundp 'recompile)]
-       ["%_Kill Compilation" kill-compilation
-	:active (and (fboundp 'kill-compilation)
-		     (fboundp 'compilation-find-buffer)
-		     (let ((buffer (condition-case nil
-				       (compilation-find-buffer)
-				     (error nil))))
-		       (and buffer (get-buffer-process buffer))))]
-       "---"
-       ["%_Next Error" next-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["Pre%_vious Error" previous-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["%_First Error" first-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       ["G%_oto Error" compile-goto-error
-	:active (and (fboundp 'compilation-errors-exist-p)
-		     (compilation-errors-exist-p))]
-       )
-      ("%_Debug"
-       ["%_GDB..." gdb
-	:active (fboundp 'gdb)]
-       ["%_DBX..." dbx
-	:active (fboundp 'dbx)])
-      ("%_Shell"
-       ["%_Shell" shell
-	:active (fboundp 'shell)]
-       ["S%_hell Command..." shell-command
-	:active (fboundp 'shell-command)]
-       ["Shell Command on %_Region..." shell-command-on-region
+			      )
+		      (length grep-command))))
+	   (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+      ["Grep %_HTML Files in Current Directory..."
+       (progn
+	 (require 'compile)
+	 (let ((grep-command
+		(cons (concat grep-command " *.*htm*")
+		      (length grep-command))))
+	   (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+      "---"
+      ["%_Next Match" next-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["Pre%_vious Match" previous-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["%_First Match" first-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["G%_oto Match" compile-goto-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      "---"
+      ["%_Set Grep Command..."
+       (progn
+	 (require 'compile)
+	 (customize-set-variable
+	  'grep-command
+	  (read-shell-command "Default Grep Command: " grep-command)))
+       :active (fboundp 'grep)
+       ]
+      )
+     ("%_Compile"
+      :filter
+      ,#'(lambda (menu)
+	   (if-boundp 'compile-history
+	       (if compile-history
+		   (let ((items
+			  (submenu-generate-accelerator-spec
+			   (mapcar #'(lambda (label-value)
+				       (vector (first label-value)
+					       (list 'compile
+						     (second label-value))))
+				   (Menubar-items-truncate-history
+				    compile-history 10 50)))))
+		     (append menu '("---") items))
+		 menu)
+	     menu))
+      ["%_Compile..." compile :active (fboundp 'compile)]
+      ["%_Repeat Compilation" recompile :active (fboundp 'recompile)]
+      ["%_Kill Compilation" kill-compilation
+       :active (and (fboundp 'kill-compilation)
+		    (fboundp 'compilation-find-buffer)
+		    (let ((buffer (condition-case nil
+				      (compilation-find-buffer)
+				    (error nil))))
+		      (and buffer (get-buffer-process buffer))))]
+      "---"
+      ["%_Next Error" next-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["Pre%_vious Error" previous-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["%_First Error" first-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      ["G%_oto Error" compile-goto-error
+       :active (and (fboundp 'compilation-errors-exist-p)
+		    (compilation-errors-exist-p))]
+      )
+     ("%_Debug"
+      ["%_GDB..." gdb
+       :active (fboundp 'gdb)]
+      ["%_DBX..." dbx
+       :active (fboundp 'dbx)])
+     ("%_Shell"
+      ["%_Shell" shell
+       :active (fboundp 'shell)]
+      ["S%_hell Command..." shell-command
+       :active (fboundp 'shell-command)]
+      ["Shell Command on %_Region..." shell-command-on-region
        :active (and (fboundp 'shell-command-on-region) (region-exists-p))])
 
-      ("%_Tags"
-       ["%_Find Tag..." find-tag]
-       ["Find %_Other Window..." find-tag-other-window]
-       ["%_Next Tag..." (find-tag nil)]
-       ["N%_ext Other Window..." (find-tag-other-window nil)]
-       ["Next %_File" next-file]
-       "-----"
-       ["Tags %_Search..." tags-search]
-       ["Tags %_Replace..." tags-query-replace]
-       ["%_Continue Search/Replace" tags-loop-continue]
-       "-----"
-       ["%_Pop stack" pop-tag-mark]
-       ["%_Apropos..." tags-apropos]
-       "-----"
-       ["%_Set Tags Table File..." visit-tags-table]
-       )
+     ("%_Tags"
+      ["%_Find Tag..." find-tag]
+      ["Find %_Other Window..." find-tag-other-window]
+      ["%_Next Tag..." (find-tag nil)]
+      ["N%_ext Other Window..." (find-tag-other-window nil)]
+      ["Next %_File" next-file]
+      "-----"
+      ["Tags %_Search..." tags-search]
+      ["Tags %_Replace..." tags-query-replace]
+      ["%_Continue Search/Replace" tags-loop-continue]
+      "-----"
+      ["%_Pop stack" pop-tag-mark]
+      ["%_Apropos..." tags-apropos]
+      "-----"
+      ["%_Set Tags Table File..." visit-tags-table]
+      )
 
-      "----"
+     "----"
 
-      ("Ca%_lendar"
-       ["%_3-Month Calendar" calendar
-	:active (fboundp 'calendar)]
-       ["%_Diary" diary
-	:active (fboundp 'diary)]
-       ["%_Holidays" holidays
-	:active (fboundp 'holidays)]
-       ;; we're all pagans at heart ...
-       ["%_Phases of the Moon" phases-of-moon
-	:active (fboundp 'phases-of-moon)]
-       ["%_Sunrise/Sunset" sunrise-sunset
-	:active (fboundp 'sunrise-sunset)])
+     ("Ca%_lendar"
+      ["%_3-Month Calendar" calendar
+       :active (fboundp 'calendar)]
+      ["%_Diary" diary
+       :active (fboundp 'diary)]
+      ["%_Holidays" holidays
+       :active (fboundp 'holidays)]
+      ;; we're all pagans at heart ...
+      ["%_Phases of the Moon" phases-of-moon
+       :active (fboundp 'phases-of-moon)]
+      ["%_Sunrise/Sunset" sunrise-sunset
+       :active (fboundp 'sunrise-sunset)])
 
-      ("Ga%_mes"
-       ["%_Mine Game" xmine
-	:active (fboundp 'xmine)]
-       ["%_Tetris" tetris
-	:active (fboundp 'tetris)]
-       ["%_Sokoban" sokoban
-	:active (fboundp 'sokoban)]
-       ["Quote from %_Zippy" yow
-	:active (fboundp 'yow)]
-       ["%_Psychoanalyst" doctor
-	:active (fboundp 'doctor)]
-       ["Ps%_ychoanalyze Zippy!" psychoanalyze-pinhead
-	:active (fboundp 'psychoanalyze-pinhead)]
-       ["%_Random Flames" flame
-	:active (fboundp 'flame)]
-       ["%_Dunnet (Adventure)" dunnet
-	:active (fboundp 'dunnet)]
-       ["Towers of %_Hanoi" hanoi
-	:active (fboundp 'hanoi)]
-       ["Game of %_Life" life
-	:active (fboundp 'life)]
-       ["M%_ultiplication Puzzle" mpuz
-	:active (fboundp 'mpuz)])
+     ("Ga%_mes"
+      ["%_Mine Game" xmine
+       :active (fboundp 'xmine)]
+      ["%_Tetris" tetris
+       :active (fboundp 'tetris)]
+      ["%_Sokoban" sokoban
+       :active (fboundp 'sokoban)]
+      ["Quote from %_Zippy" yow
+       :active (fboundp 'yow)]
+      ["%_Psychoanalyst" doctor
+       :active (fboundp 'doctor)]
+      ["Ps%_ychoanalyze Zippy!" psychoanalyze-pinhead
+       :active (fboundp 'psychoanalyze-pinhead)]
+      ["%_Random Flames" flame
+       :active (fboundp 'flame)]
+      ["%_Dunnet (Adventure)" dunnet
+       :active (fboundp 'dunnet)]
+      ["Towers of %_Hanoi" hanoi
+       :active (fboundp 'hanoi)]
+      ["Game of %_Life" life
+       :active (fboundp 'life)]
+      ["M%_ultiplication Puzzle" mpuz
+       :active (fboundp 'mpuz)])
 
-      "----"
-      )
+     "----"
+     )
 
 ;      ("%_Tools"
 ;       :filter behavior-menu-filter)
 
      ("%_Options"
-      ("%_Advanced (Customize)"
-       ("%_Emacs" :filter (lambda (&rest junk)
-			    (cdr (custom-menu-create 'emacs))))
-       ["%_Group..." customize-group]
-       ["%_Variable..." customize-variable]
-       ["%_Face..." customize-face]
-       ["%_Saved..." customize-saved]
-       ["Se%_t..." customize-customized]
-       ["%_Apropos..." customize-apropos]
-       ["%_Browse..." customize-browse])
+     ("%_Advanced (Customize)"
+      ("%_Emacs" :filter ,#'(lambda (&rest junk)
+			      (cdr (custom-menu-create 'emacs))))
+      ["%_Group..." customize-group]
+      ["%_Variable..." customize-variable]
+      ["%_Face..." customize-face]
+      ["%_Saved..." customize-saved]
+      ["Se%_t..." customize-customized]
+      ["%_Apropos..." customize-apropos]
+      ["%_Browse..." customize-browse])
+     "---"
+     ("%_Editing"
+      ["This Buffer %_Read Only" (toggle-read-only)
+       :style toggle :selected buffer-read-only]
+      ["%_Yank/Kill Interact With Clipboard"
+       (if (eq interprogram-cut-function 'own-clipboard)
+	   (progn
+	     (customize-set-variable 'interprogram-cut-function nil)
+	     (customize-set-variable 'interprogram-paste-function nil))
+	 (customize-set-variable 'interprogram-cut-function 'own-clipboard)
+	 (customize-set-variable 'interprogram-paste-function 'get-clipboard))
+       :style toggle
+       :selected (eq interprogram-cut-function 'own-clipboard)]
+      ["%_Overstrike"
+       (progn
+	 (setq overwrite-mode (if overwrite-mode nil 'overwrite-mode-textual))
+	 (customize-set-variable 'overwrite-mode overwrite-mode))
+       :style toggle :selected overwrite-mode]
+      ["%_Abbrev Mode"
+       (customize-set-variable 'abbrev-mode
+			       (not (default-value 'abbrev-mode)))
+       :style toggle
+       :selected (default-value 'abbrev-mode)]
+      ["Active Re%_gions"
+       (customize-set-variable 'zmacs-regions (not zmacs-regions))
+       :style toggle :selected zmacs-regions]
+      "---"
+      ["%_Case Sensitive Search"
+       (customize-set-variable 'case-fold-search
+			       (setq case-fold-search (not case-fold-search)))
+       :style toggle :selected (not case-fold-search)]
+      ["Case %_Matching Replace"
+       (customize-set-variable 'case-replace (not case-replace))
+       :style toggle :selected case-replace]
+      "---"
+      ("%_Newline at End of File..."
+       ["%_Don't Require"
+	(customize-set-variable 'require-final-newline nil)
+	:style radio :selected (not require-final-newline)]
+       ["%_Require"
+	(customize-set-variable 'require-final-newline t)
+	:style radio :selected (eq require-final-newline t)]
+       ["%_Ask"
+	(customize-set-variable 'require-final-newline 'ask)
+	:style radio :selected (and require-final-newline
+				    (not (eq require-final-newline t)))])
+      ["Add Newline When Moving Past %_End"
+       (customize-set-variable 'next-line-add-newlines
+			       (not next-line-add-newlines))
+       :style toggle :selected next-line-add-newlines])
+     ("%_Keyboard and Mouse"
+      ["%_Delete Key Deletes Selection"
+       (customize-set-variable 'pending-delete-mode (not pending-delete-mode))
+       :style toggle
+       :selected (and (boundp 'pending-delete-mode) pending-delete-mode)
+       :active (boundp 'pending-delete-mode)]
+      ["`kill-%_word' Stores in Clipboard"
+       (customize-set-variable 'kill-word-into-kill-ring
+			       (not kill-word-into-kill-ring))
+       :style toggle
+       :selected kill-word-into-kill-ring]
+      ["`kill-%_line' Kills Whole Line at Beg"
+       (customize-set-variable 'kill-whole-line (not kill-whole-line))
+       :style toggle
+       :selected kill-whole-line]
+      ["Size for %_Block-Movement Commands..."
+       (customize-set-variable 'block-movement-size
+			       (read-number "Block Movement Size: "
+					    t block-movement-size))]
+      ["%_VI Emulation"
+       (progn
+	 (toggle-viper-mode)
+	 (customize-set-variable 'viper-mode viper-mode))
+       :style toggle :selected (and (boundp 'viper-mode) viper-mode)
+       :active (fboundp 'toggle-viper-mode)]
+      "----"
+      ["S%_hifted Motion Keys Select Region"
+       (customize-set-variable 'shifted-motion-keys-select-region
+			       (not shifted-motion-keys-select-region))
+       :style toggle
+       :selected shifted-motion-keys-select-region]
+      ["%_After Shifted Motion, Unshifted Motion Keys Deselect"
+       (customize-set-variable 'unshifted-motion-keys-deselect-region
+			       (not unshifted-motion-keys-deselect-region))
+       :style toggle
+       :selected unshifted-motion-keys-deselect-region]
+      "----"
+      ["%_Set Key..." global-set-key]
+      ["%_Unset Key..." global-unset-key]
+      "---"
+      ["%_Mouse Paste at Text Cursor (not Clicked Location)"
+       (customize-set-variable 'mouse-yank-at-point (not mouse-yank-at-point))
+       :style toggle :selected mouse-yank-at-point]
       "---"
-      ("%_Editing"
-       ["This Buffer %_Read Only" (toggle-read-only)
-	:style toggle :selected buffer-read-only]
-       ["%_Yank/Kill Interact With Clipboard"
-	(if (eq interprogram-cut-function 'own-clipboard)
-	    (progn
-	      (customize-set-variable 'interprogram-cut-function nil)
-	      (customize-set-variable 'interprogram-paste-function nil))
-	  (customize-set-variable 'interprogram-cut-function 'own-clipboard)
-	  (customize-set-variable 'interprogram-paste-function 'get-clipboard))
-	:style toggle
-	:selected (eq interprogram-cut-function 'own-clipboard)]
-       ["%_Overstrike"
-	(progn
-	  (setq overwrite-mode (if overwrite-mode nil 'overwrite-mode-textual))
-	  (customize-set-variable 'overwrite-mode overwrite-mode))
-	:style toggle :selected overwrite-mode]
-       ["%_Abbrev Mode"
-	(customize-set-variable 'abbrev-mode
-				(not (default-value 'abbrev-mode)))
-	:style toggle
-	:selected (default-value 'abbrev-mode)]
-       ["Active Re%_gions"
-	(customize-set-variable 'zmacs-regions (not zmacs-regions))
-	:style toggle :selected zmacs-regions]
-       "---"
-       ["%_Case Sensitive Search"
-	(customize-set-variable 'case-fold-search
-				(setq case-fold-search (not case-fold-search)))
-	:style toggle :selected (not case-fold-search)]
-       ["Case %_Matching Replace"
-	(customize-set-variable 'case-replace (not case-replace))
-	:style toggle :selected case-replace]
-       "---"
-       ("%_Newline at End of File..."
-	["%_Don't Require"
-	 (customize-set-variable 'require-final-newline nil)
-	 :style radio :selected (not require-final-newline)]
-	["%_Require"
-	 (customize-set-variable 'require-final-newline t)
-	 :style radio :selected (eq require-final-newline t)]
-	["%_Ask"
-	 (customize-set-variable 'require-final-newline 'ask)
-	 :style radio :selected (and require-final-newline
-				     (not (eq require-final-newline t)))])
-       ["Add Newline When Moving Past %_End"
-	(customize-set-variable 'next-line-add-newlines
-				(not next-line-add-newlines))
-	:style toggle :selected next-line-add-newlines])
-      ("%_Keyboard and Mouse"
-       ["%_Delete Key Deletes Selection"
-	(customize-set-variable 'pending-delete-mode (not pending-delete-mode))
-	:style toggle
-	:selected (and (boundp 'pending-delete-mode) pending-delete-mode)
-	:active (boundp 'pending-delete-mode)]
-       ["`kill-%_word' Stores in Clipboard"
-	(customize-set-variable 'kill-word-into-kill-ring
-				(not kill-word-into-kill-ring))
-	:style toggle
-	:selected kill-word-into-kill-ring]
-       ["`kill-%_line' Kills Whole Line at Beg"
-	 (customize-set-variable 'kill-whole-line (not kill-whole-line))
-	 :style toggle
-	 :selected kill-whole-line]
-       ["Size for %_Block-Movement Commands..."
-	(customize-set-variable 'block-movement-size
-				(read-number "Block Movement Size: "
-					      t block-movement-size))]
-       ["%_VI Emulation"
-	(progn
-	  (toggle-viper-mode)
-	  (customize-set-variable 'viper-mode viper-mode))
-	:style toggle :selected (and (boundp 'viper-mode) viper-mode)
-	:active (fboundp 'toggle-viper-mode)]
-       "----"
-       ["S%_hifted Motion Keys Select Region"
-	 (customize-set-variable 'shifted-motion-keys-select-region
-				 (not shifted-motion-keys-select-region))
-	 :style toggle
-	 :selected shifted-motion-keys-select-region]
-       ["%_After Shifted Motion, Unshifted Motion Keys Deselect"
-	 (customize-set-variable 'unshifted-motion-keys-deselect-region
-				 (not unshifted-motion-keys-deselect-region))
-	 :style toggle
-	 :selected unshifted-motion-keys-deselect-region]
-       "----"
-       ["%_Set Key..." global-set-key]
-       ["%_Unset Key..." global-unset-key]
-       "---"
-       ["%_Mouse Paste at Text Cursor (not Clicked Location)"
-	(customize-set-variable 'mouse-yank-at-point (not mouse-yank-at-point))
-	:style toggle :selected mouse-yank-at-point]
-       "---"
-       ["%_Teach Extended Commands"
-	(customize-set-variable 'teach-extended-commands-p
-				(not teach-extended-commands-p))
-	:style toggle :selected teach-extended-commands-p]
+      ["%_Teach Extended Commands"
+       (customize-set-variable 'teach-extended-commands-p
+			       (not teach-extended-commands-p))
+       :style toggle :selected teach-extended-commands-p]
+      )
+     ("%_Printing"
+      ["Set Printer %_Name for Generic Print Support..."
+       (customize-set-variable
+	'printer-name
+	(read-string "Set printer name: " printer-name))]
+      "---"
+      ["Command-Line %_Switches for `lpr'/`lp'..."
+       ;; better to directly open a customization buffer, since the value
+       ;; must be a list of strings, which is somewhat complex to prompt for.
+       (customize-variable 'lpr-switches)
+       (boundp 'lpr-switches)]
+      ("%_Pretty-Print Paper Size"
+       ["%_Letter"
+	(customize-set-variable 'ps-paper-type 'letter)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'letter))
+	:active (boundp 'ps-paper-type)]
+       ["Lette%_r-Small"
+	(customize-set-variable 'ps-paper-type 'letter-small)
+	:style radio
+	:selected (and (boundp 'ps-paper-type)
+		       (eq ps-paper-type 'letter-small))
+	:active (boundp 'ps-paper-type)]
+       ["Le%_gal"
+	(customize-set-variable 'ps-paper-type 'legal)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'legal))
+	:active (boundp 'ps-paper-type)]
+       ["%_Statement"
+	(customize-set-variable 'ps-paper-type 'statement)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'statement))
+	:active (boundp 'ps-paper-type)]
+       ["%_Executive"
+	(customize-set-variable 'ps-paper-type 'executive)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'executive))
+	:active (boundp 'ps-paper-type)]
+       ["%_Tabloid"
+	(customize-set-variable 'ps-paper-type 'tabloid)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'tabloid))
+	:active (boundp 'ps-paper-type)]
+       ["Le%_dger"
+	(customize-set-variable 'ps-paper-type 'ledger)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'ledger))
+	:active (boundp 'ps-paper-type)]
+       ["A%_3"
+	(customize-set-variable 'ps-paper-type 'a3)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a3))
+	:active (boundp 'ps-paper-type)]
+       ["%_A4"
+	(customize-set-variable 'ps-paper-type 'a4)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4))
+	:active (boundp 'ps-paper-type)]
+       ["A4s%_mall"
+	(customize-set-variable 'ps-paper-type 'a4small)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4small))
+	:active (boundp 'ps-paper-type)]
+       ["B%_4"
+	(customize-set-variable 'ps-paper-type 'b4)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b4))
+	:active (boundp 'ps-paper-type)]
+       ["%_B5"
+	(customize-set-variable 'ps-paper-type 'b5)
+	:style radio
+	:selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b5))
+	:active (boundp 'ps-paper-type)]
+       )
+      ["%_Color Printing"
+       (cond (ps-print-color-p
+	      (customize-set-variable 'ps-print-color-p nil)
+	      ;; I'm wondering whether all this muck is useful.
+	      (and (boundp 'original-face-background)
+		   original-face-background
+		   (set-face-background 'default original-face-background)))
+	     (t
+	      (customize-set-variable 'ps-print-color-p t)
+	      (setq original-face-background
+		    (face-background-instance 'default))
+	      (set-face-background 'default "white")))
+       :style toggle
+       :selected (and (boundp 'ps-print-color-p) ps-print-color-p)
+       :active (boundp 'ps-print-color-p)])
+     ("%_Internet"
+      ("%_Compose Mail With"
+       ["VM mail package"
+	(customize-set-variable 'mail-user-agent 'vm-user-agent)
+	:style radio
+	:selected (eq mail-user-agent 'vm-user-agent)
+	:active (get 'vm-user-agent 'composefunc)]
+       ["Bare-bones Emacs Mailer"
+	(customize-set-variable 'mail-user-agent 'sendmail-user-agent)
+	:style radio
+	:selected (eq mail-user-agent 'sendmail-user-agent)]
+       ["MH"
+	(customize-set-variable 'mail-user-agent 'mh-e-user-agent)
+	:style radio
+	:selected (eq mail-user-agent 'mh-e-user-agent)
+	:active (get 'mh-e-user-agent 'composefunc)]
+       ["GNUS"
+	(customize-set-variable 'mail-user-agent 'message-user-agent)
+	:style radio
+	:selected (eq mail-user-agent 'message-user-agent)
+	:active (get 'message-user-agent 'composefunc)]
        )
-      ("%_Printing"
-       ["Set Printer %_Name for Generic Print Support..."
-	(customize-set-variable
-	 'printer-name
-	 (read-string "Set printer name: " printer-name))]
-       "---"
-       ["Command-Line %_Switches for `lpr'/`lp'..."
-	;; better to directly open a customization buffer, since the value
-	;; must be a list of strings, which is somewhat complex to prompt for.
-	(customize-variable 'lpr-switches)
-	(boundp 'lpr-switches)]
-       ("%_Pretty-Print Paper Size"
-	["%_Letter"
-	 (customize-set-variable 'ps-paper-type 'letter)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'letter))
-	 :active (boundp 'ps-paper-type)]
-	["Lette%_r-Small"
-	 (customize-set-variable 'ps-paper-type 'letter-small)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type)
-			(eq ps-paper-type 'letter-small))
-	 :active (boundp 'ps-paper-type)]
-	["Le%_gal"
-	 (customize-set-variable 'ps-paper-type 'legal)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'legal))
-	 :active (boundp 'ps-paper-type)]
-	["%_Statement"
-	 (customize-set-variable 'ps-paper-type 'statement)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'statement))
-	 :active (boundp 'ps-paper-type)]
-	["%_Executive"
-	 (customize-set-variable 'ps-paper-type 'executive)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'executive))
-	 :active (boundp 'ps-paper-type)]
-	["%_Tabloid"
-	 (customize-set-variable 'ps-paper-type 'tabloid)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'tabloid))
-	 :active (boundp 'ps-paper-type)]
-	["Le%_dger"
-	 (customize-set-variable 'ps-paper-type 'ledger)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'ledger))
-	 :active (boundp 'ps-paper-type)]
-	["A%_3"
-	 (customize-set-variable 'ps-paper-type 'a3)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a3))
-	 :active (boundp 'ps-paper-type)]
-	["%_A4"
-	 (customize-set-variable 'ps-paper-type 'a4)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4))
-	 :active (boundp 'ps-paper-type)]
-	["A4s%_mall"
-	 (customize-set-variable 'ps-paper-type 'a4small)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4small))
-	 :active (boundp 'ps-paper-type)]
-	["B%_4"
-	 (customize-set-variable 'ps-paper-type 'b4)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b4))
-	 :active (boundp 'ps-paper-type)]
-	["%_B5"
-	 (customize-set-variable 'ps-paper-type 'b5)
-	 :style radio
-	 :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b5))
-	 :active (boundp 'ps-paper-type)]
-	)
-       ["%_Color Printing"
-	(cond (ps-print-color-p
-	       (customize-set-variable 'ps-print-color-p nil)
-	       ;; I'm wondering whether all this muck is useful.
-	       (and (boundp 'original-face-background)
-		    original-face-background
-		    (set-face-background 'default original-face-background)))
-	      (t
-	       (customize-set-variable 'ps-print-color-p t)
-	       (setq original-face-background
-		     (face-background-instance 'default))
-	       (set-face-background 'default "white")))
-	:style toggle
-	:selected (and (boundp 'ps-print-color-p) ps-print-color-p)
-	:active (boundp 'ps-print-color-p)])
-      ("%_Internet"
-       ("%_Compose Mail With"
-	["VM mail package"
-	 (customize-set-variable 'mail-user-agent 'vm-user-agent)
-	 :style radio
-	 :selected (eq mail-user-agent 'vm-user-agent)
-	 :active (get 'vm-user-agent 'composefunc)]
-	["Bare-bones Emacs Mailer"
-	 (customize-set-variable 'mail-user-agent 'sendmail-user-agent)
-	 :style radio
-	 :selected (eq mail-user-agent 'sendmail-user-agent)]
-	["MH"
-	 (customize-set-variable 'mail-user-agent 'mh-e-user-agent)
-	 :style radio
-	 :selected (eq mail-user-agent 'mh-e-user-agent)
-	 :active (get 'mh-e-user-agent 'composefunc)]
-	["GNUS"
-	 (customize-set-variable 'mail-user-agent 'message-user-agent)
-	 :style radio
-	 :selected (eq mail-user-agent 'message-user-agent)
-	 :active (get 'message-user-agent 'composefunc)]
-	)
-       ["Set My %_Email Address..."
-	(customize-set-variable
-	 'user-mail-address
-	 (read-string "Set email address: " user-mail-address))]
-       ["Set %_Machine Email Name..."
-	(customize-set-variable
-	 'mail-host-address
-	 (read-string "Set machine email name: " mail-host-address))]
-       ["Set %_SMTP Server..."
-	(progn
-	  (require 'smtpmail)
-	  (customize-set-variable
-	   'smtpmail-smtp-server
-	   (read-string "Set SMTP server: " smtpmail-smtp-server)))
-	:active (and (boundp 'send-mail-function)
-		     (eq send-mail-function 'smtpmail-send-it))]
-       ["SMTP %_Debug Info"
-	(progn
-	  (require 'smtpmail)
-	  (customize-set-variable 'smtpmail-debug-info
-				  (not smtpmail-debug-info)))
-	:style toggle
-	:selected (and (boundp 'smtpmail-debug-info) smtpmail-debug-info)
-	:active (and (boundp 'send-mail-function)
-		     (eq send-mail-function 'smtpmail-send-it))])
-      ("%_Troubleshooting"
-       ["%_Debug on Error [not saved]"
-	(setq debug-on-error (not debug-on-error))
-	:style toggle :selected debug-on-error]
-       ["Debug on %_Quit [not saved]"
-	(setq debug-on-quit (not debug-on-quit))
-	:style toggle :selected debug-on-quit]
-       ["Debug on S%_ignal [not saved]"
-	(setq debug-on-signal (not debug-on-signal))
-	:style toggle :selected debug-on-signal]
-       ["%_Stack Trace on Error [not saved]"
-	(setq stack-trace-on-error (not stack-trace-on-error))
-	:style toggle :selected stack-trace-on-error]
-       ["Stack Trace on Si%_gnal [not saved]"
-	(setq stack-trace-on-signal (not stack-trace-on-signal))
-	:style toggle :selected stack-trace-on-signal]
+      ["Set My %_Email Address..."
+       (customize-set-variable
+	'user-mail-address
+	(read-string "Set email address: " user-mail-address))]
+      ["Set %_Machine Email Name..."
+       (customize-set-variable
+	'mail-host-address
+	(read-string "Set machine email name: " mail-host-address))]
+      ["Set %_SMTP Server..."
+       (progn
+	 (require 'smtpmail)
+	 (customize-set-variable
+	  'smtpmail-smtp-server
+	  (read-string "Set SMTP server: " smtpmail-smtp-server)))
+       :active (and (boundp 'send-mail-function)
+		    (eq send-mail-function 'smtpmail-send-it))]
+      ["SMTP %_Debug Info"
+       (progn
+	 (require 'smtpmail)
+	 (customize-set-variable 'smtpmail-debug-info
+				 (not smtpmail-debug-info)))
+       :style toggle
+       :selected (and (boundp 'smtpmail-debug-info) smtpmail-debug-info)
+       :active (and (boundp 'send-mail-function)
+		    (eq send-mail-function 'smtpmail-send-it))])
+     ("%_Troubleshooting"
+      ["%_Debug on Error [not saved]"
+       (setq debug-on-error (not debug-on-error))
+       :style toggle :selected debug-on-error]
+      ["Debug on %_Quit [not saved]"
+       (setq debug-on-quit (not debug-on-quit))
+       :style toggle :selected debug-on-quit]
+      ["Debug on S%_ignal [not saved]"
+       (setq debug-on-signal (not debug-on-signal))
+       :style toggle :selected debug-on-signal]
+      ["%_Stack Trace on Error [not saved]"
+       (setq stack-trace-on-error (not stack-trace-on-error))
+       :style toggle :selected stack-trace-on-error]
+      ["Stack Trace on Si%_gnal [not saved]"
+       (setq stack-trace-on-signal (not stack-trace-on-signal))
+       :style toggle :selected stack-trace-on-signal]
+      )
+     ("Encodin%_g"
+      ["Automatic %_EOL Detection"
+       (customize-set-variable 'eol-detection-enabled-p
+			       (not eol-detection-enabled-p))
+       :style toggle
+       :selected eol-detection-enabled-p
+       :included (not (memq system-type '(windows-nt cygwin32)))]
+      ("Set Coding System of %_Buffer File"
+       :filter
+       ,#'(lambda (menu)
+	    (coding-system-menu-filter
+	     (lambda (entry)
+	       (set-buffer-file-coding-system entry))
+	     (lambda (entry) t))))
+      ;; not implemented yet
+      ("Set Coding System of %_Terminal"
+       :filter
+       ,#'(lambda (menu)
+	    (coding-system-menu-filter
+	     (lambda (entry)
+	       (set-terminal-coding-system entry))
+	     (lambda (entry) nil)))
        )
-      ("Encodin%_g"
-       ["Automatic %_EOL Detection"
-	(customize-set-variable 'eol-detection-enabled-p
-				(not eol-detection-enabled-p))
-	:style toggle
-	:selected eol-detection-enabled-p
-	:included (not (memq system-type '(windows-nt cygwin32)))]
-       ("Set Coding System of %_Buffer File"
-	:filter
-	(lambda (menu)
-	  (coding-system-menu-filter
-	   (lambda (entry)
-	     (set-buffer-file-coding-system entry))
-	   (lambda (entry) t)
-	   ))
-	)
-       ;; not implemented yet
-       ("Set Coding System of %_Terminal"
-	:filter
-	(lambda (menu)
-	  (coding-system-menu-filter
-	   (lambda (entry)
-	     (set-terminal-coding-system entry))
-	   (lambda (entry) nil)
-	   ))
-	)
-       ;; not implemented yet
-       ("Set Coding System of %_Keyboard"
-	:filter
-	(lambda (menu)
-	  (coding-system-menu-filter
-	   (lambda (entry)
-	     (set-keyboard-coding-system entry))
-	   (lambda (entry) nil)
-	   ))
-	)
-       ("Set Coding System of %_Process"
-	:filter
-	(lambda (menu)
-	  (coding-system-menu-filter
-	   (lambda (entry)
-	     (set-buffer-process-coding-system entry))
-	   (lambda (entry) (get-buffer-process (current-buffer)))
-	   ))
-	)
+      ;; not implemented yet
+      ("Set Coding System of %_Keyboard"
+       :filter
+       ,#'(lambda (menu)
+	    (coding-system-menu-filter
+	     (lambda (entry)
+	       (set-keyboard-coding-system entry))
+	     (lambda (entry) nil))))
+      ("Set Coding System of %_Process"
+       :filter
+       ,#'(lambda (menu)
+	    (coding-system-menu-filter
+	     (lambda (entry)
+	       (set-buffer-process-coding-system entry entry))
+	     (lambda (entry) (get-buffer-process (current-buffer)))))))
+     ,@(when (featurep 'mule)
+	 `(("Internationa%_l"
+	    ("Set %_Language Environment"
+	     :filter
+	     ,#'(lambda (menu)
+		  (menu-split-long-menu-and-sort
+		   (mapcar #'(lambda (entry)
+			       `[ ,(car entry)
+				  (set-language-environment ',(car entry))
+				  :style radio
+				  :selected
+				  ,(equal (car entry)
+					  current-language-environment)])
+			   language-info-alist)
+		   )))
+	    ["%_Toggle Input Method" toggle-input-method]
+	    ["Select %_Input Method" set-input-method]
+	    )))
+     "-----"
+     ("%_Display"
+      ,@(if (featurep 'scrollbar)
+	    '(["%_Scrollbars"
+	       (customize-set-variable 'scrollbars-visible-p
+				       (not scrollbars-visible-p))
+	       :style toggle
+	       :selected scrollbars-visible-p]))
+      ["%_Wrap Long Lines"
+       (progn ;; becomes buffer-local
+	 (setq truncate-lines (not truncate-lines))
+	 (customize-set-variable 'truncate-lines truncate-lines))
+       :style toggle
+       :selected (not truncate-lines)]
+      "----"
+      ["%_3D Modeline"
+       (customize-set-variable 'modeline-3d-p
+			       (not modeline-3d-p))
+       :style toggle
+       :selected modeline-3d-p]
+      ("Modeline %_Horizontal Scrolling"
+       ["%_None"
+	(customize-set-variable 'modeline-scrolling-method nil)
+	:style radio
+	:selected (not modeline-scrolling-method)]
+       ["As %_Text"
+	(customize-set-variable 'modeline-scrolling-method t)
+	:style radio
+	:selected (eq modeline-scrolling-method t)]
+       ["As %_Scrollbar"
+	(customize-set-variable 'modeline-scrolling-method 'scrollbar)
+	:style radio
+	:selected (eq modeline-scrolling-method 'scrollbar)]
        )
-      ,@(when (featurep 'mule)
-	  '(("Internationa%_l"
-	     ("Set %_Language Environment"
-	      :filter
-	      (lambda (menu)
-		(menu-split-long-menu-and-sort
-		 (mapcar #'(lambda (entry)
-			     `[ ,(car entry)
-				(set-language-environment ',(car entry))
-				:style radio
-				:selected
-				,(equal (car entry)
-					current-language-environment)])
-			 language-info-alist)
-		 )))
-	     ["%_Toggle Input Method" toggle-input-method]
-	     ["Select %_Input Method" set-input-method]
-	     )))
+      ,@(if (featurep 'toolbar)
+	    '("---"
+	      ["%_Toolbars Visible"
+	       (customize-set-variable 'toolbar-visible-p
+				       (not toolbar-visible-p))
+	       :style toggle
+	       :selected toolbar-visible-p]
+	      ["Toolbars Ca%_ptioned"
+	       (customize-set-variable 'toolbar-captioned-p
+				       (not toolbar-captioned-p))
+	       :style toggle
+	       :active toolbar-visible-p
+	       :selected toolbar-captioned-p]
+	      ("Default Toolba%_r Location"
+	       ["%_Top"
+		(customize-set-variable 'default-toolbar-position 'top)
+		:style radio
+		:active toolbar-visible-p
+		:selected (eq default-toolbar-position 'top)]
+	       ["%_Bottom"
+		(customize-set-variable 'default-toolbar-position 'bottom)
+		:style radio
+		:active toolbar-visible-p
+		:selected (eq default-toolbar-position 'bottom)]
+	       ["%_Left"
+		(customize-set-variable 'default-toolbar-position 'left)
+		:style radio
+		:active toolbar-visible-p
+		:selected (eq default-toolbar-position 'left)]
+	       ["%_Right"
+		(customize-set-variable 'default-toolbar-position 'right)
+		:style radio
+		:active toolbar-visible-p
+		:selected (eq default-toolbar-position 'right)]
+	       )
+	      ))
+      ,@(if (featurep 'gutter)
+	    '("---"
+	      ["B%_uffers Tab Visible"
+	       (customize-set-variable 'gutter-buffers-tab-visible-p
+				       (not gutter-buffers-tab-visible-p))
+	       :style toggle
+	       :selected gutter-buffers-tab-visible-p]
+	      ("Default %_Gutter Location"
+	       ["%_Top"
+		(customize-set-variable 'default-gutter-position 'top)
+		:style radio
+		:selected (eq default-gutter-position 'top)]
+	       ["%_Bottom"
+		(customize-set-variable 'default-gutter-position 'bottom)
+		:style radio
+		:selected (eq default-gutter-position 'bottom)]
+	       ["%_Left"
+		(customize-set-variable 'default-gutter-position 'left)
+		:style radio
+		:selected (eq default-gutter-position 'left)]
+	       ["%_Right"
+		(customize-set-variable 'default-gutter-position 'right)
+		:style radio
+		:selected (eq default-gutter-position 'right)]
+	       )
+	      ))
       "-----"
-      ("%_Display"
-       ,@(if (featurep 'scrollbar)
-	     '(["%_Scrollbars"
-		(customize-set-variable 'scrollbars-visible-p
-					(not scrollbars-visible-p))
-		:style toggle
-		:selected scrollbars-visible-p]))
-       ["%_Wrap Long Lines"
-	(progn;; becomes buffer-local
-	  (setq truncate-lines (not truncate-lines))
-	  (customize-set-variable 'truncate-lines truncate-lines))
-	:style toggle
-	:selected (not truncate-lines)]
-       "----"
-       ["%_3D Modeline"
-	(customize-set-variable 'modeline-3d-p
-				(not modeline-3d-p))
-	:style toggle
-	:selected modeline-3d-p]
-       ("Modeline %_Horizontal Scrolling"
-	["%_None"
-	 (customize-set-variable 'modeline-scrolling-method nil)
-	 :style radio
-	 :selected (not modeline-scrolling-method)]
-	["As %_Text"
-	 (customize-set-variable 'modeline-scrolling-method t)
-	 :style radio
-	 :selected (eq modeline-scrolling-method t)]
-	["As %_Scrollbar"
-	 (customize-set-variable 'modeline-scrolling-method 'scrollbar)
-	 :style radio
-	 :selected (eq modeline-scrolling-method 'scrollbar)]
-	)
-       ,@(if (featurep 'toolbar)
-	     '("---"
-	       ["%_Toolbars Visible"
-		(customize-set-variable 'toolbar-visible-p
-					(not toolbar-visible-p))
-		:style toggle
-		:selected toolbar-visible-p]
-	       ["Toolbars Ca%_ptioned"
-		(customize-set-variable 'toolbar-captioned-p
-					(not toolbar-captioned-p))
-		:style toggle
-		:active toolbar-visible-p
-		:selected toolbar-captioned-p]
-	       ("Default Toolba%_r Location"
-		["%_Top"
-		 (customize-set-variable 'default-toolbar-position 'top)
-		 :style radio
-		 :active toolbar-visible-p
-		 :selected (eq default-toolbar-position 'top)]
-		["%_Bottom"
-		 (customize-set-variable 'default-toolbar-position 'bottom)
-		 :style radio
-		 :active toolbar-visible-p
-		 :selected (eq default-toolbar-position 'bottom)]
-		["%_Left"
-		 (customize-set-variable 'default-toolbar-position 'left)
-		 :style radio
-		 :active toolbar-visible-p
-		 :selected (eq default-toolbar-position 'left)]
-		["%_Right"
-		 (customize-set-variable 'default-toolbar-position 'right)
-		 :style radio
-		 :active toolbar-visible-p
-		 :selected (eq default-toolbar-position 'right)]
-		)
-	       ))
-       ,@(if (featurep 'gutter)
-	     '("---"
-	       ["B%_uffers Tab Visible"
-		(customize-set-variable 'gutter-buffers-tab-visible-p
-					(not gutter-buffers-tab-visible-p))
-		:style toggle
-		:selected gutter-buffers-tab-visible-p]
-	       ("Default %_Gutter Location"
-		["%_Top"
-		 (customize-set-variable 'default-gutter-position 'top)
-		 :style radio
-		 :selected (eq default-gutter-position 'top)]
-		["%_Bottom"
-		 (customize-set-variable 'default-gutter-position 'bottom)
-		 :style radio
-		 :selected (eq default-gutter-position 'bottom)]
-		["%_Left"
-		 (customize-set-variable 'default-gutter-position 'left)
-		 :style radio
-		 :selected (eq default-gutter-position 'left)]
-		["%_Right"
-		 (customize-set-variable 'default-gutter-position 'right)
-		 :style radio
-		 :selected (eq default-gutter-position 'right)]
-		)
-	       ))
-       "-----"
-       ["%_Blinking Cursor"
-	(customize-set-variable 'blink-cursor-mode (not blink-cursor-mode))
-	:style toggle
-	:selected (and (boundp 'blink-cursor-mode) blink-cursor-mode)
-	:active (boundp 'blink-cursor-mode)]
-       ["Bl%_ock Cursor"
-	(progn
-	  (customize-set-variable 'bar-cursor nil)
-	  (force-cursor-redisplay))
-	:style radio
-	:selected (null bar-cursor)]
-       ["Bar Cursor (%_1 Pixel)"
-	(progn
-	  (customize-set-variable 'bar-cursor t)
-	  (force-cursor-redisplay))
-	:style radio
-	:selected (eq bar-cursor t)]
-       ["Bar Cursor (%_2 Pixels)"
-	(progn
-	  (customize-set-variable 'bar-cursor 2)
-	  (force-cursor-redisplay))
-	:style radio
-	:selected (and bar-cursor (not (eq bar-cursor t)))]
-       "----"
-       ("Pa%_ren Highlighting"
+      ["%_Blinking Cursor"
+       (customize-set-variable 'blink-cursor-mode (not blink-cursor-mode))
+       :style toggle
+       :selected (and (boundp 'blink-cursor-mode) blink-cursor-mode)
+       :active (boundp 'blink-cursor-mode)]
+      ["Bl%_ock Cursor"
+       (progn
+	 (customize-set-variable 'bar-cursor nil)
+	 (force-cursor-redisplay))
+       :style radio
+       :selected (null bar-cursor)]
+      ["Bar Cursor (%_1 Pixel)"
+       (progn
+	 (customize-set-variable 'bar-cursor t)
+	 (force-cursor-redisplay))
+       :style radio
+       :selected (eq bar-cursor t)]
+      ["Bar Cursor (%_2 Pixels)"
+       (progn
+	 (customize-set-variable 'bar-cursor 2)
+	 (force-cursor-redisplay))
+       :style radio
+       :selected (and bar-cursor (not (eq bar-cursor t)))]
+      "----"
+      ("Pa%_ren Highlighting"
        ["%_None"
 	(customize-set-variable 'paren-mode nil)
 	:style radio
@@ -1160,418 +1154,421 @@
        ;;	  :selected (and (boundp 'paren-mode) (eq paren-mode 'nested))
        ;;	  :active (boundp 'paren-mode)]
        )
-       "------"
-       ["%_Line Numbers"
-	(progn
-	  (customize-set-variable 'line-number-mode (not line-number-mode))
-	  (redraw-modeline))
-	:style toggle :selected line-number-mode]
-       ["%_Column Numbers"
-	(progn
-	  (customize-set-variable 'column-number-mode
-				  (not column-number-mode))
-	  (redraw-modeline))
-	:style toggle :selected column-number-mode]
+      "------"
+      ["%_Line Numbers"
+       (progn
+	 (customize-set-variable 'line-number-mode (not line-number-mode))
+	 (redraw-modeline))
+       :style toggle :selected line-number-mode]
+      ["%_Column Numbers"
+       (progn
+	 (customize-set-variable 'column-number-mode
+				 (not column-number-mode))
+	 (redraw-modeline))
+       :style toggle :selected column-number-mode]
 
-       ("\"Other %_Window\" Location"
-	["%_Always in Same Frame"
-	 (customize-set-variable
-	  'get-frame-for-buffer-default-instance-limit nil)
-	 :style radio
-	 :selected (null get-frame-for-buffer-default-instance-limit)]
-	["Other Frame (%_2 Frames Max)"
-	 (customize-set-variable 'get-frame-for-buffer-default-instance-limit
-				 2)
-	 :style radio
-	 :selected (eq 2 get-frame-for-buffer-default-instance-limit)]
-	["Other Frame (%_3 Frames Max)"
-	 (customize-set-variable 'get-frame-for-buffer-default-instance-limit
-				 3)
-	 :style radio
-	 :selected (eq 3 get-frame-for-buffer-default-instance-limit)]
-	["Other Frame (%_4 Frames Max)"
-	 (customize-set-variable 'get-frame-for-buffer-default-instance-limit
-				 4)
-	 :style radio
-	 :selected (eq 4 get-frame-for-buffer-default-instance-limit)]
-	["Other Frame (%_5 Frames Max)"
-	 (customize-set-variable 'get-frame-for-buffer-default-instance-limit
-				 5)
-	 :style radio
-	 :selected (eq 5 get-frame-for-buffer-default-instance-limit)]
-	["Always Create %_New Frame"
-	 (customize-set-variable 'get-frame-for-buffer-default-instance-limit
-				 0)
-	 :style radio
-	 :selected (eq 0 get-frame-for-buffer-default-instance-limit)]
-	"-----"
-	["%_Temp Buffers Always in Same Frame"
-	 (customize-set-variable 'temp-buffer-show-function
-				 'show-temp-buffer-in-current-frame)
-	 :style radio
-	 :selected (eq temp-buffer-show-function
-		       'show-temp-buffer-in-current-frame)]
-	["Temp Buffers %_Like Other Buffers"
-	 (customize-set-variable 'temp-buffer-show-function nil)
-	 :style radio
-	 :selected (null temp-buffer-show-function)]
-	"-----"
-	["%_Make Current Frame Gnuserv Target"
-	 (customize-set-variable 'gnuserv-frame (if (eq gnuserv-frame t) nil
-						  t))
-	 :style toggle
-	 :selected (and (boundp 'gnuserv-frame) (eq gnuserv-frame t))
-	 :active (boundp 'gnuserv-frame)]
-	)
-       )
-      ("%_Menubars"
-       ["%_Frame-Local Font Menu"
-	(customize-set-variable 'font-menu-this-frame-only-p
-				(not font-menu-this-frame-only-p))
-	:style toggle
-	:selected (and (boundp 'font-menu-this-frame-only-p)
-		       font-menu-this-frame-only-p)]
-       ["%_Alt/Meta Selects Menu Items"
-	(if (eq menu-accelerator-enabled 'menu-force)
-	    (customize-set-variable 'menu-accelerator-enabled nil)
-	  (customize-set-variable 'menu-accelerator-enabled 'menu-force))
-	:style toggle
-	:selected (eq menu-accelerator-enabled 'menu-force)]
-       "----"
-       ["Buffers Menu %_Length..."
+      ("\"Other %_Window\" Location"
+       ["%_Always in Same Frame"
 	(customize-set-variable
-	 'buffers-menu-max-size
-	 ;; would it be better to open a customization buffer ?
-	 (let ((val
-		(read-number
-		 "Enter number of buffers to display (or 0 for unlimited): ")))
-	   (if (eq val 0) nil val)))]
-       ["%_Multi-Operation Buffers Sub-Menus"
-	(customize-set-variable 'complex-buffers-menu-p
-				(not complex-buffers-menu-p))
-	:style toggle
-	:selected complex-buffers-menu-p]
-       ["S%_ubmenus for Buffer Groups"
-	(customize-set-variable 'buffers-menu-submenus-for-groups-p
-				(not buffers-menu-submenus-for-groups-p))
-	:style toggle
-	:selected buffers-menu-submenus-for-groups-p]
-       ["%_Verbose Buffer Menu Entries"
-	(if (eq buffers-menu-format-buffer-line-function
-		'slow-format-buffers-menu-line)
-	    (customize-set-variable 'buffers-menu-format-buffer-line-function
-				    'format-buffers-menu-line)
-	  (customize-set-variable 'buffers-menu-format-buffer-line-function
-				  'slow-format-buffers-menu-line))
-	:style toggle
-	:selected (eq buffers-menu-format-buffer-line-function
-		      'slow-format-buffers-menu-line)]
-       ("Buffers Menu %_Sorting"
-	["%_Most Recently Used"
-	 (progn
-	   (customize-set-variable 'buffers-menu-sort-function nil)
-	   (customize-set-variable 'buffers-menu-grouping-function nil))
-	 :style radio
-	 :selected (null buffers-menu-sort-function)]
-	["%_Alphabetically"
-	 (progn
-	   (customize-set-variable 'buffers-menu-sort-function
-				   'sort-buffers-menu-alphabetically)
-	   (customize-set-variable 'buffers-menu-grouping-function nil))
-	 :style radio
-	 :selected (eq 'sort-buffers-menu-alphabetically
-		       buffers-menu-sort-function)]
-	["%_By Major Mode, Then Alphabetically"
-	 (progn
-	   (customize-set-variable
-	    'buffers-menu-sort-function
-	    'sort-buffers-menu-by-mode-then-alphabetically)
-	   (customize-set-variable
-	    'buffers-menu-grouping-function
-	    'group-buffers-menu-by-mode-then-alphabetically))
-	 :style radio
-	 :selected (eq 'sort-buffers-menu-by-mode-then-alphabetically
-		       buffers-menu-sort-function)])
-       "---"
-       ["%_Ignore Scaled Fonts"
-	(customize-set-variable 'font-menu-ignore-scaled-fonts
-				(not font-menu-ignore-scaled-fonts))
-	:style toggle
-	:selected (and (boundp 'font-menu-ignore-scaled-fonts)
-		       font-menu-ignore-scaled-fonts)]
-       )
-      ("S%_yntax Highlighting"
-       ["%_In This Buffer"
-	(progn;; becomes buffer local
-	  (font-lock-mode)
-	  (customize-set-variable 'font-lock-mode font-lock-mode))
+	 'get-frame-for-buffer-default-instance-limit nil)
+	:style radio
+	:selected (null get-frame-for-buffer-default-instance-limit)]
+       ["Other Frame (%_2 Frames Max)"
+	(customize-set-variable 'get-frame-for-buffer-default-instance-limit
+				2)
+	:style radio
+	:selected (eq 2 get-frame-for-buffer-default-instance-limit)]
+       ["Other Frame (%_3 Frames Max)"
+	(customize-set-variable 'get-frame-for-buffer-default-instance-limit
+				3)
+	:style radio
+	:selected (eq 3 get-frame-for-buffer-default-instance-limit)]
+       ["Other Frame (%_4 Frames Max)"
+	(customize-set-variable 'get-frame-for-buffer-default-instance-limit
+				4)
+	:style radio
+	:selected (eq 4 get-frame-for-buffer-default-instance-limit)]
+       ["Other Frame (%_5 Frames Max)"
+	(customize-set-variable 'get-frame-for-buffer-default-instance-limit
+				5)
+	:style radio
+	:selected (eq 5 get-frame-for-buffer-default-instance-limit)]
+       ["Always Create %_New Frame"
+	(customize-set-variable 'get-frame-for-buffer-default-instance-limit
+				0)
+	:style radio
+	:selected (eq 0 get-frame-for-buffer-default-instance-limit)]
+       "-----"
+       ["%_Temp Buffers Always in Same Frame"
+	(customize-set-variable 'temp-buffer-show-function
+				'show-temp-buffer-in-current-frame)
+	:style radio
+	:selected (eq temp-buffer-show-function
+		      'show-temp-buffer-in-current-frame)]
+       ["Temp Buffers %_Like Other Buffers"
+	(customize-set-variable 'temp-buffer-show-function nil)
+	:style radio
+	:selected (null temp-buffer-show-function)]
+       "-----"
+       ["%_Make Current Frame Gnuserv Target"
+	(customize-set-variable 'gnuserv-frame (if (eq gnuserv-frame t) nil
+						 t))
 	:style toggle
-	:selected (and (boundp 'font-lock-mode) font-lock-mode)
-	:active (boundp 'font-lock-mode)]
-       ["%_Automatic"
-	(customize-set-variable 'font-lock-auto-fontify
-				(not font-lock-auto-fontify))
-	:style toggle
-	:selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
-	:active (fboundp 'font-lock-mode)]
-       "-----"
-       ["Force %_Rehighlight in this Buffer"
-	(customize-set-variable 'font-lock-auto-fontify
-				(not font-lock-auto-fontify))
-	:style toggle
-	:selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
-	:active (fboundp 'font-lock-mode)]
-       "-----"
-       ["%_Fonts"
+	:selected (and (boundp 'gnuserv-frame) (eq gnuserv-frame t))
+	:active (boundp 'gnuserv-frame)]
+       )
+      )
+     ("%_Menubars"
+      ["%_Frame-Local Font Menu"
+       (customize-set-variable 'font-menu-this-frame-only-p
+			       (not font-menu-this-frame-only-p))
+       :style toggle
+       :selected (and (boundp 'font-menu-this-frame-only-p)
+		      font-menu-this-frame-only-p)]
+      ["%_Alt/Meta Selects Menu Items"
+       (if (eq menu-accelerator-enabled 'menu-force)
+	   (customize-set-variable 'menu-accelerator-enabled nil)
+	 (customize-set-variable 'menu-accelerator-enabled 'menu-force))
+       :style toggle
+       :selected (eq menu-accelerator-enabled 'menu-force)]
+      "----"
+      ["Buffers Menu %_Length..."
+       (customize-set-variable
+	'buffers-menu-max-size
+	;; would it be better to open a customization buffer ?
+	(let ((val
+	       (read-number
+		"Enter number of buffers to display (or 0 for unlimited): ")))
+	  (if (eq val 0) nil val)))]
+      ["%_Multi-Operation Buffers Sub-Menus"
+       (customize-set-variable 'complex-buffers-menu-p
+			       (not complex-buffers-menu-p))
+       :style toggle
+       :selected complex-buffers-menu-p]
+      ["S%_ubmenus for Buffer Groups"
+       (customize-set-variable 'buffers-menu-submenus-for-groups-p
+			       (not buffers-menu-submenus-for-groups-p))
+       :style toggle
+       :selected buffers-menu-submenus-for-groups-p]
+      ["%_Verbose Buffer Menu Entries"
+       (if (eq buffers-menu-format-buffer-line-function
+	       'slow-format-buffers-menu-line)
+	   (customize-set-variable 'buffers-menu-format-buffer-line-function
+				   'format-buffers-menu-line)
+	 (customize-set-variable 'buffers-menu-format-buffer-line-function
+				 'slow-format-buffers-menu-line))
+       :style toggle
+       :selected (eq buffers-menu-format-buffer-line-function
+		     'slow-format-buffers-menu-line)]
+      ("Buffers Menu %_Sorting"
+       ["%_Most Recently Used"
 	(progn
-	  (require 'font-lock)
-	  (font-lock-use-default-fonts)
-	  (customize-set-variable 'font-lock-use-fonts t)
-	  (customize-set-variable 'font-lock-use-colors nil)
-	  (font-lock-mode 1))
-	:style radio
-	:selected (and (boundp 'font-lock-use-fonts) font-lock-use-fonts)
-	:active (fboundp 'font-lock-mode)]
-       ["%_Colors"
-	(progn
-	  (require 'font-lock)
-	  (font-lock-use-default-colors)
-	  (customize-set-variable 'font-lock-use-colors t)
-	  (customize-set-variable 'font-lock-use-fonts nil)
-	  (font-lock-mode 1))
+	  (customize-set-variable 'buffers-menu-sort-function nil)
+	  (customize-set-variable 'buffers-menu-grouping-function nil))
 	:style radio
-	:selected (and (boundp 'font-lock-use-colors) font-lock-use-colors)
-	:active (boundp 'font-lock-mode)]
-       "-----"
-       ["%_1 Least"
+	:selected (null buffers-menu-sort-function)]
+       ["%_Alphabetically"
 	(progn
-	  (require 'font-lock)
-	  (if (or (and (not (integerp font-lock-maximum-decoration))
-		       (not (eq t font-lock-maximum-decoration)))
-		  (and (integerp font-lock-maximum-decoration)
-		       (<= font-lock-maximum-decoration 0)))
-	      nil
-	    (customize-set-variable 'font-lock-maximum-decoration nil)
-	    (font-lock-recompute-variables)))
+	  (customize-set-variable 'buffers-menu-sort-function
+				  'sort-buffers-menu-alphabetically)
+	  (customize-set-variable 'buffers-menu-grouping-function nil))
 	:style radio
-	:active (fboundp 'font-lock-mode)
-	:selected (and (boundp 'font-lock-maximum-decoration)
-		       (or (and (not (integerp font-lock-maximum-decoration))
-				(not (eq t font-lock-maximum-decoration)))
-			   (and (integerp font-lock-maximum-decoration)
-				(<= font-lock-maximum-decoration 0))))]
-       ["%_2 More"
-	(progn
-	  (require 'font-lock)
-	  (if (and (integerp font-lock-maximum-decoration)
-		   (= 1 font-lock-maximum-decoration))
-	      nil
-	    (customize-set-variable 'font-lock-maximum-decoration 1)
-	    (font-lock-recompute-variables)))
-	:style radio
-	:active (fboundp 'font-lock-mode)
-	:selected (and (boundp 'font-lock-maximum-decoration)
-		       (integerp font-lock-maximum-decoration)
-		       (= 1 font-lock-maximum-decoration))]
-       ["%_3 Even More"
+	:selected (eq 'sort-buffers-menu-alphabetically
+		      buffers-menu-sort-function)]
+       ["%_By Major Mode, Then Alphabetically"
 	(progn
-	  (require 'font-lock)
-	  (if (and (integerp font-lock-maximum-decoration)
-		   (= 2 font-lock-maximum-decoration))
-	      nil
-	    (customize-set-variable 'font-lock-maximum-decoration 2)
-	    (font-lock-recompute-variables)))
-	:style radio
-	:active (fboundp 'font-lock-mode)
-	:selected (and (boundp 'font-lock-maximum-decoration)
-		       (integerp font-lock-maximum-decoration)
-		       (= 2 font-lock-maximum-decoration))]
-       ["%_4 Most"
-	(progn
-	  (require 'font-lock)
-	  (if (or (eq font-lock-maximum-decoration t)
-		  (and (integerp font-lock-maximum-decoration)
-		       (>= font-lock-maximum-decoration 3)))
-	      nil
-	    (customize-set-variable 'font-lock-maximum-decoration t)
-	    (font-lock-recompute-variables)))
+	  (customize-set-variable
+	   'buffers-menu-sort-function
+	   'sort-buffers-menu-by-mode-then-alphabetically)
+	  (customize-set-variable
+	   'buffers-menu-grouping-function
+	   'group-buffers-menu-by-mode-then-alphabetically))
 	:style radio
-	:active (fboundp 'font-lock-mode)
-	:selected (and (boundp 'font-lock-maximum-decoration)
-		       (or (eq font-lock-maximum-decoration t)
-			   (and (integerp font-lock-maximum-decoration)
-				(>= font-lock-maximum-decoration 3))))]
-       "-----"
-       ["Lazy %_Lock"
-	(progn;; becomes buffer local
-	  (lazy-lock-mode)
-	  (customize-set-variable 'lazy-lock-mode lazy-lock-mode)
-	  ;; this shouldn't be necessary so there has to
-	  ;; be a redisplay bug lurking somewhere (or
-	  ;; possibly another event handler bug)
-	  (redraw-modeline))
-	:active (and (boundp 'font-lock-mode) (boundp 'lazy-lock-mode)
-		     font-lock-mode)
-	:style toggle
-	:selected (and (boundp 'lazy-lock-mode) lazy-lock-mode)]
-       ["Lazy %_Shot"
-	(progn;; becomes buffer local
-	  (lazy-shot-mode)
-	  (customize-set-variable 'lazy-shot-mode lazy-shot-mode)
-	  ;; this shouldn't be necessary so there has to
-	  ;; be a redisplay bug lurking somewhere (or
-	  ;; possibly another event handler bug)
-	  (redraw-modeline))
-	:active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode)
-		     font-lock-mode)
-	:style toggle
-	:selected (and (boundp 'lazy-shot-mode) lazy-shot-mode)]
-       ["Cac%_hing"
-	(progn;; becomes buffer local
-	  (fast-lock-mode)
-	  (customize-set-variable 'fast-lock-mode fast-lock-mode)
-	  ;; this shouldn't be necessary so there has to
-	  ;; be a redisplay bug lurking somewhere (or
-	  ;; possibly another event handler bug)
-	  (redraw-modeline))
-	:active (and (boundp 'font-lock-mode) (boundp 'fast-lock-mode)
-		     font-lock-mode)
-	:style toggle
-	:selected (and (boundp 'fast-lock-mode) fast-lock-mode)]
-       )
-      ("%_Font" :filter font-menu-family-constructor)
-      ("Font Si%_ze" :filter font-menu-size-constructor)
-      ;;      ("Font Weig%_ht" :filter font-menu-weight-constructor)
-      ["Edit Fa%_ces..." (customize-face nil)]
+	:selected (eq 'sort-buffers-menu-by-mode-then-alphabetically
+		      buffers-menu-sort-function)])
+      "---"
+      ["%_Ignore Scaled Fonts"
+       (customize-set-variable 'font-menu-ignore-scaled-fonts
+			       (not font-menu-ignore-scaled-fonts))
+       :style toggle
+       :selected (and (boundp 'font-menu-ignore-scaled-fonts)
+		      font-menu-ignore-scaled-fonts)]
+      )
+     ("S%_yntax Highlighting"
+      ["%_In This Buffer"
+       (progn ;; becomes buffer local
+	 (font-lock-mode)
+	 (customize-set-variable 'font-lock-mode font-lock-mode))
+       :style toggle
+       :selected (and (boundp 'font-lock-mode) font-lock-mode)
+       :active (boundp 'font-lock-mode)]
+      ["%_Automatic"
+       (customize-set-variable 'font-lock-auto-fontify
+			       (not font-lock-auto-fontify))
+       :style toggle
+       :selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
+       :active (fboundp 'font-lock-mode)]
+      "-----"
+      ["Force %_Rehighlight in this Buffer"
+       (customize-set-variable 'font-lock-auto-fontify
+			       (not font-lock-auto-fontify))
+       :style toggle
+       :selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
+       :active (fboundp 'font-lock-mode)]
+      "-----"
+      ["%_Fonts"
+       (progn
+	 (require 'font-lock)
+	 (font-lock-use-default-fonts)
+	 (customize-set-variable 'font-lock-use-fonts t)
+	 (customize-set-variable 'font-lock-use-colors nil)
+	 (font-lock-mode 1))
+       :style radio
+       :selected (and (boundp 'font-lock-use-fonts) font-lock-use-fonts)
+       :active (fboundp 'font-lock-mode)]
+      ["%_Colors"
+       (progn
+	 (require 'font-lock)
+	 (font-lock-use-default-colors)
+	 (customize-set-variable 'font-lock-use-colors t)
+	 (customize-set-variable 'font-lock-use-fonts nil)
+	 (font-lock-mode 1))
+       :style radio
+       :selected (and (boundp 'font-lock-use-colors) font-lock-use-colors)
+       :active (boundp 'font-lock-mode)]
       "-----"
-      ["Edit I%_nit File"
-       ;; #### there should be something that holds the name that the init
-       ;; file should be created as, when it's not present.
-       (let ((el-file (or user-init-file "~/.xemacs/init.el")))
-	 (if (string-match "\\.elc$" el-file)
-	     (setq el-file
-		   (substring user-init-file 0 (1- (length el-file)))))
-	 (find-file el-file)
-	 (or (eq major-mode 'emacs-lisp-mode)
-	     (emacs-lisp-mode)))]
-      ["%_Save Options to Custom File" customize-save-customized]
+      ["%_1 Least"
+       (progn
+	 (require 'font-lock)
+	 (if (or (and (not (integerp font-lock-maximum-decoration))
+		      (not (eq t font-lock-maximum-decoration)))
+		 (and (integerp font-lock-maximum-decoration)
+		      (<= font-lock-maximum-decoration 0)))
+	     nil
+	   (customize-set-variable 'font-lock-maximum-decoration nil)
+	   (font-lock-recompute-variables)))
+       :style radio
+       :active (fboundp 'font-lock-mode)
+       :selected (and (boundp 'font-lock-maximum-decoration)
+		      (or (and (not (integerp font-lock-maximum-decoration))
+			       (not (eq t font-lock-maximum-decoration)))
+			  (and (integerp font-lock-maximum-decoration)
+			       (<= font-lock-maximum-decoration 0))))]
+      ["%_2 More"
+       (progn
+	 (require 'font-lock)
+	 (if (and (integerp font-lock-maximum-decoration)
+		  (= 1 font-lock-maximum-decoration))
+	     nil
+	   (customize-set-variable 'font-lock-maximum-decoration 1)
+	   (font-lock-recompute-variables)))
+       :style radio
+       :active (fboundp 'font-lock-mode)
+       :selected (and (boundp 'font-lock-maximum-decoration)
+		      (integerp font-lock-maximum-decoration)
+		      (= 1 font-lock-maximum-decoration))]
+      ["%_3 Even More"
+       (progn
+	 (require 'font-lock)
+	 (if (and (integerp font-lock-maximum-decoration)
+		  (= 2 font-lock-maximum-decoration))
+	     nil
+	   (customize-set-variable 'font-lock-maximum-decoration 2)
+	   (font-lock-recompute-variables)))
+       :style radio
+       :active (fboundp 'font-lock-mode)
+       :selected (and (boundp 'font-lock-maximum-decoration)
+		      (integerp font-lock-maximum-decoration)
+		      (= 2 font-lock-maximum-decoration))]
+      ["%_4 Most"
+       (progn
+	 (require 'font-lock)
+	 (if (or (eq font-lock-maximum-decoration t)
+		 (and (integerp font-lock-maximum-decoration)
+		      (>= font-lock-maximum-decoration 3)))
+	     nil
+	   (customize-set-variable 'font-lock-maximum-decoration t)
+	   (font-lock-recompute-variables)))
+       :style radio
+       :active (fboundp 'font-lock-mode)
+       :selected (and (boundp 'font-lock-maximum-decoration)
+		      (or (eq font-lock-maximum-decoration t)
+			  (and (integerp font-lock-maximum-decoration)
+			       (>= font-lock-maximum-decoration 3))))]
+      "-----"
+      ["Lazy %_Lock"
+       (progn ;; becomes buffer local
+	 (lazy-lock-mode)
+	 (customize-set-variable 'lazy-lock-mode lazy-lock-mode)
+	 ;; this shouldn't be necessary so there has to
+	 ;; be a redisplay bug lurking somewhere (or
+	 ;; possibly another event handler bug)
+	 (redraw-modeline))
+       :active (and (boundp 'font-lock-mode) (boundp 'lazy-lock-mode)
+		    font-lock-mode)
+       :style toggle
+       :selected (and (boundp 'lazy-lock-mode) lazy-lock-mode)]
+      ["Lazy %_Shot"
+       (progn ;; becomes buffer local
+	 (lazy-shot-mode)
+	 (customize-set-variable 'lazy-shot-mode lazy-shot-mode)
+	 ;; this shouldn't be necessary so there has to
+	 ;; be a redisplay bug lurking somewhere (or
+	 ;; possibly another event handler bug)
+	 (redraw-modeline))
+       :active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode)
+		    font-lock-mode)
+       :style toggle
+       :selected (and (boundp 'lazy-shot-mode) lazy-shot-mode)]
+      ["Cac%_hing"
+       (progn ;; becomes buffer local
+	 (fast-lock-mode)
+	 (customize-set-variable 'fast-lock-mode fast-lock-mode)
+	 ;; this shouldn't be necessary so there has to
+	 ;; be a redisplay bug lurking somewhere (or
+	 ;; possibly another event handler bug)
+	 (redraw-modeline))
+       :active (and (boundp 'font-lock-mode) (boundp 'fast-lock-mode)
+		    font-lock-mode)
+       :style toggle
+       :selected (and (boundp 'fast-lock-mode) fast-lock-mode)]
       )
+     ("%_Font" :filter font-menu-family-constructor)
+     ("Font Si%_ze" :filter font-menu-size-constructor)
+     ;;      ("Font Weig%_ht" :filter font-menu-weight-constructor)
+     ["Edit Fa%_ces..." (customize-face nil)]
+     "-----"
+     ["Edit I%_nit File"
+      ;; #### there should be something that holds the name that the init
+      ;; file should be created as, when it's not present.
+      (let ((el-file (or user-init-file "~/.xemacs/init.el")))
+	(if (string-match "\\.elc$" el-file)
+	    (setq el-file
+		  (substring user-init-file 0 (1- (length el-file)))))
+	(find-file el-file)
+	(or (eq major-mode 'emacs-lisp-mode)
+	    (emacs-lisp-mode)))]
+     ["%_Save Options to Custom File" customize-save-customized]
+     )
 
      ("%_Buffers"
-      :filter buffers-menu-filter
-      ["Go To %_Previous Buffer" switch-to-other-buffer]
-      ["Go To %_Buffer..." switch-to-buffer]
-      "----"
-      ["%_List All Buffers" list-all-buffers]
-      ["%_Delete Buffer" kill-this-buffer
-       :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
-      "----"
-      )
+     :filter buffers-menu-filter
+     ["Go To %_Previous Buffer" switch-to-other-buffer]
+     ["Go To %_Buffer..." switch-to-buffer]
+     "----"
+     ["%_List All Buffers" list-all-buffers]
+     ["%_Delete Buffer" kill-this-buffer
+      :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
+     "----"
+     )
 
-     nil	; the partition: menus after this are flushright
+     nil	      ; the partition: menus after this are flushright
 
      ("%_Help"
-      ["%_About XEmacs..." about-xemacs]
-      ["%_Home Page (www.xemacs.org)" xemacs-www-page
-       :active (fboundp 'browse-url)]
-      ["What's %_New in XEmacs" view-emacs-news]
-      ["B%_eta Info" describe-beta
-	:included (string-match "beta" emacs-version)]
+     ["%_About XEmacs..." about-xemacs]
+     ["%_Home Page (www.xemacs.org)" xemacs-www-page
+      :active (fboundp 'browse-url)]
+     ["What's %_New in XEmacs" view-emacs-news]
+     ["B%_eta Info" describe-beta
+      :included (string-match "beta" emacs-version)]
+     "-----"
+     ("%_Info (Online Docs)"
+      ["%_Info Contents" (Info-goto-node "(dir)")]
+      "-----"
+      ["XEmacs %_User's Manual" (Info-goto-node "(XEmacs)")]
+      ["XEmacs %_Lisp Reference Manual" (Info-goto-node "(Lispref)")]
+      ["All About %_Packages" (Info-goto-node "(xemacs)Packages")]
+      ["%_Getting Started with XEmacs" (Info-goto-node "(New-Users-Guide)")]
+      ["%_XEmacs Internals Manual" (Info-goto-node "(Internals)")]
+      ["%_How to Use Info" (Info-goto-node "(Info)")]
+      "-----"
+      ["Lookup %_Key Sequence in User's Manual..."
+       Info-goto-emacs-key-command-node]
+      ["Lookup %_Command in User's Manual..." Info-goto-emacs-command-node]
+      ["Lookup %_Function in Lisp Reference..." Info-elisp-ref]
       "-----"
-      ("%_Info (Online Docs)"
-       ["%_Info Contents" (Info-goto-node "(dir)")]
-       "-----"
-       ["XEmacs %_User's Manual" (Info-goto-node "(XEmacs)")]
-       ["XEmacs %_Lisp Reference Manual" (Info-goto-node "(Lispref)")]
-       ["All About %_Packages" (Info-goto-node "(xemacs)Packages")]
-       ["%_Getting Started with XEmacs" (Info-goto-node "(New-Users-Guide)")]
-       ["%_XEmacs Internals Manual" (Info-goto-node "(Internals)")]
-       ["%_How to Use Info" (Info-goto-node "(Info)")]
-       "-----"
-       ["Lookup %_Key Sequence in User's Manual..."
-	Info-goto-emacs-key-command-node]
-       ["Lookup %_Command in User's Manual..." Info-goto-emacs-command-node]
-       ["Lookup %_Function in Lisp Reference..." Info-elisp-ref]
-       "-----"
-       ["Find %_Topic in User's Manual/Lispref..."
-	Info-search-index-in-xemacs-and-lispref]
-       ["%_Search Text in User's Manual..." Info-search-text-in-xemacs]
-       ["S%_earch Text in Lisp Reference..."
-	Info-search-text-in-lispref]
-       )
-      ("XEmacs %_FAQ"
-       ["%_FAQ (local)" xemacs-local-faq]
-       ["FAQ via %_WWW" xemacs-www-faq
-	:active (fboundp 'browse-url)])
-      ("%_Tutorials"
-       :filter tutorials-menu-filter)
-      ("%_Samples"
-       ["View Sample %_init.el" view-sample-init-el
-	:active (locate-data-file "sample.init.el")]
-       ["View Sample .%_gtkrc"
-	(Help-find-file (locate-data-file "sample.gtkrc"))
-	:included (featurep 'gtk)
-	:active (locate-data-file "sample.gtkrc")]
-       ["View Sample .%_Xresources"
-	(Help-find-file (locate-data-file "sample.Xresources"))
-	:included (featurep 'x)
-	:active (locate-data-file "sample.Xresources")]
-       ["View Sample %_enriched.doc"
-	(Help-find-file (locate-data-file "enriched.doc"))
-	:active (locate-data-file "enriched.doc")])
-      ("%_Commands, Variables, Keys"
-       ["Describe %_Mode" describe-mode]
-       ["%_Apropos..." hyper-apropos]
-       ["%_Command-Only Apropos..." command-hyper-apropos]
-       ["Apropos %_Docs..." apropos-documentation]
-       "-----"
-       ["Describe %_Key..." describe-key]
-       ["Show %_Bindings" describe-bindings]
-       ["Show M%_ouse Bindings" describe-pointer]
-       "-----"
-       ["Describe %_Function..." describe-function]
-       ["Describe %_Variable..." describe-variable]
-       ["%_Locate Command in Keymap..." where-is])
-      ,@(when (featurep 'mule)
-	  '(("Internationa%_l"
-	     ("Describe %_Language Support"
-	      :filter
-	      (lambda (menu)
-		(menu-split-long-menu-and-sort
-		 (mapcar #'(lambda (entry)
-			     `[ ,(car entry)
-				(describe-language-environment
-				 ',(car entry))
-				:style radio
-				:selected
-				,(equal (car entry)
-					current-language-environment)])
-			 language-info-alist)
-		 )))
-	     ["Describe %_Input Method" describe-input-method]
-	     ["Describe Current %_Coding Systems"
-	      describe-current-coding-system]
-	     ["Show Character %_Table" view-charset-by-menu]
-	     ;; not implemented yet
-	     ["Show %_Diagnosis for MULE" mule-diag :active nil]
-	     ["Show \"%_hello\" in Many Languages" view-hello-file]
-	     )))
-      ("%_Other"
-       ["%_Current Installation Info" describe-installation
-	:active (boundp 'Installation-string)]
-       ["%_Known Problems" view-xemacs-problems ]
-       ["%_Obtaining the Latest Version" describe-distribution]
-       ["%_No Warranty" describe-no-warranty]
-       ["XEmacs %_License" describe-copying]
-       ["Find %_Packages" finder-by-keyword]
-       ["View %_Splash Screen" xemacs-splash-buffer]
-       ["%_Unix Manual..." manual-entry])
+      ["Find %_Topic in User's Manual/Lispref..."
+       Info-search-index-in-xemacs-and-lispref]
+      ["%_Search Text in User's Manual..." Info-search-text-in-xemacs]
+      ["S%_earch Text in Lisp Reference..."
+       Info-search-text-in-lispref]
+      )
+     ("XEmacs %_FAQ"
+      ["%_FAQ (local)" xemacs-local-faq]
+      ["FAQ via %_WWW" xemacs-www-faq
+       :active (fboundp 'browse-url)])
+     ("%_Tutorials"
+      :filter tutorials-menu-filter)
+     ("%_Samples"
+      ["View Sample %_init.el" view-sample-init-el
+       :active (locate-data-file "sample.init.el")]
+      ["View Sample .%_gtkrc"
+       (Help-find-file (locate-data-file "sample.gtkrc"))
+       :included (featurep 'gtk)
+       :active (locate-data-file "sample.gtkrc")]
+      ["View Sample .%_Xresources"
+       (Help-find-file (locate-data-file "sample.Xresources"))
+       :included (featurep 'x)
+       :active (locate-data-file "sample.Xresources")]
+      ["View Sample %_enriched.doc"
+       (Help-find-file (locate-data-file "enriched.doc"))
+       :active (locate-data-file "enriched.doc")])
+     ("%_Commands, Variables, Keys"
+      ["Describe %_Mode" describe-mode]
+      ["%_Apropos..." hyper-apropos]
+      ["%_Command-Only Apropos..." command-hyper-apropos]
+      ["Apropos %_Docs..." apropos-documentation]
+      "-----"
+      ["Describe %_Key..." describe-key]
+      ["Show %_Bindings" describe-bindings]
+      ["Show M%_ouse Bindings" describe-pointer]
       "-----"
-      ["Recent %_Messages" (view-lossage t)]
-      ["Recent %_Keystrokes" view-lossage]
-      ["Recent %_Warnings" view-warnings]
-      ["Send %_Bug Report..." report-xemacs-bug
-       :active (fboundp 'report-xemacs-bug)])))
+      ["Describe %_Function..." describe-function]
+      ["Describe %_Variable..." describe-variable]
+      ["%_Locate Command in Keymap..." where-is])
+     ,@(when (featurep 'mule)
+	 `(("Internationa%_l"
+	    ("Describe %_Language Support"
+	     :filter
+	     ,#'(lambda (menu)
+		  (menu-split-long-menu-and-sort
+		   (mapcar #'(lambda (entry)
+			       `[ ,(car entry)
+				  (describe-language-environment
+				   ',(car entry))
+				  :style radio
+				  :selected
+				  ,(equal (car entry)
+					  current-language-environment)])
+			   language-info-alist)
+		   )))
+	    ["Describe %_Input Method" describe-input-method]
+	    ["Describe Current %_Coding Systems"
+	     describe-current-coding-system]
+	    ["Show Character %_Table" view-charset-by-menu]
+	    ;; not implemented yet
+	    ["Show %_Diagnosis for MULE" mule-diag :active nil]
+	    ["Show \"%_hello\" in Many Languages" view-hello-file]
+	    )))
+     ("%_Other"
+      ["%_Current Installation Info" describe-installation
+       :active (boundp 'Installation-string)]
+      ["%_Known Problems" view-xemacs-problems ]
+      ["%_Obtaining the Latest Version" describe-distribution]
+      ["%_No Warranty" describe-no-warranty]
+      ["XEmacs %_License" describe-copying]
+      ["Find %_Packages" finder-by-keyword]
+      ["View %_Splash Screen" xemacs-splash-buffer]
+      ["%_Unix Manual..." manual-entry])
+     "-----"
+     ["Recent %_Messages" (view-lossage t)]
+     ["Recent %_Keystrokes" view-lossage]
+     ["Recent %_Warnings" view-warnings]
+     ["Send %_Bug Report..." report-xemacs-bug
+      :active (fboundp 'report-xemacs-bug)]))
+   "The default XEmacs menubar.
+See the documentation for `current-menubar' for details of the syntax
+used here.")
 
 
 (defun init-menubar-at-startup ()
@@ -1929,6 +1926,11 @@
 			   ;; included it first
 			   (not (string= (car lang)
 					 current-language-environment))
+                           ;; Hackish approach; if a language environment
+                           ;; doesn't have associated locale information,
+                           ;; it's not the preferred implementation for that
+                           ;; language. Don't use it.
+                           (assq 'locale lang)
 			   `([,(car lang)
 			      (help-with-tutorial nil ,(car lang))]))))
 		language-info-alist)