+(define-key menu-bar-options-menu [mouse-set-font]
+ '(menu-item "Set Font/Fontset..." mouse-set-font
+ :visible (display-multi-font-p)
+ :help "Select a font from list of known fonts/fontsets"))
+
+;; The "Show/Hide" submenu of menu "Options"
+
+(defvar menu-bar-showhide-menu (make-sparse-keymap "Show/Hide"))
+
+(define-key menu-bar-showhide-menu [column-number-mode]
+ (menu-bar-make-mm-toggle column-number-mode
+ "Column Numbers"
+ "Show the current column number in the mode line"))
+
+(define-key menu-bar-showhide-menu [line-number-mode]
+ (menu-bar-make-mm-toggle line-number-mode
+ "Line Numbers"
+ "Show the current line number in the mode line"))
+
+(define-key menu-bar-showhide-menu [size-indication-mode]
+ (menu-bar-make-mm-toggle size-indication-mode
+ "Size Indication"
+ "Show the size of the buffer in the mode line"))
+
+(define-key menu-bar-showhide-menu [linecolumn-separator]
+ '("--"))
+
+(define-key menu-bar-showhide-menu [showhide-date-time]
+ (menu-bar-make-mm-toggle display-time-mode
+ "Date, Time and Mail"
+ "Display date, time, mail status in mode line"))
+
+(define-key menu-bar-showhide-menu [datetime-separator]
+ '("--"))
+
+(define-key menu-bar-showhide-menu [showhide-speedbar]
+ '(menu-item "Speedbar" speedbar-frame-mode
+ :help "Display a Speedbar quick-navigation frame"
+ :button (:toggle
+ . (and (boundp 'speedbar-frame)
+ (frame-live-p (symbol-value 'speedbar-frame))
+ (frame-visible-p
+ (symbol-value 'speedbar-frame))))))
+
+
+(defvar menu-bar-showhide-fringe-ind-menu (make-sparse-keymap "Indicators"))
+
+;; The real definition is in fringe.el.
+;; This is to prevent errors in the :radio conditions below.
+(setq fringe-indicators nil)
+
+(defun menu-bar-showhide-fringe-ind-empty ()
+ "Display empty line indicators in the left or right fringe."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators 'empty))
+
+(define-key menu-bar-showhide-fringe-ind-menu [empty]
+ '(menu-item "Empty lines only" menu-bar-showhide-fringe-ind-empty
+ :help "Show empty line indicators in fringe"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators 'empty))))
+
+(defun menu-bar-showhide-fringe-ind-mixed ()
+ "Display top and bottom indicators in opposite fringes, arrow in right."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators 'mixed))
+
+(define-key menu-bar-showhide-fringe-ind-menu [mixed]
+ '(menu-item "Opposite, arrows right" menu-bar-showhide-fringe-ind-mixed
+ :help "Show top/bottom indicators in opposite fringes, arrows in right"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators 'mixed))))
+
+(defun menu-bar-showhide-fringe-ind-box ()
+ "Display top and bottom indicators in opposite fringes."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators 'box))
+
+(define-key menu-bar-showhide-fringe-ind-menu [box]
+ '(menu-item "Opposite, no arrows" menu-bar-showhide-fringe-ind-box
+ :help "Show top/bottom indicators in opposite fringes, no arrows"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators 'box))))
+
+(defun menu-bar-showhide-fringe-ind-right ()
+ "Display fringe indicators in the right fringe."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators 'right))
+
+(define-key menu-bar-showhide-fringe-ind-menu [right]
+ '(menu-item "In right fringe" menu-bar-showhide-fringe-ind-right
+ :help "Show indicators in right fringe"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators 'right))))
+
+(defun menu-bar-showhide-fringe-ind-left ()
+ "Display fringe indicators in the left fringe."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators 'left))
+
+(define-key menu-bar-showhide-fringe-ind-menu [left]
+ '(menu-item "In left fringe" menu-bar-showhide-fringe-ind-left
+ :help "Show indicators in left fringe"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators 'left))))
+
+(defun menu-bar-showhide-fringe-ind-none ()
+ "Do not display any fringe indicators."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-indicators nil))
+
+(define-key menu-bar-showhide-fringe-ind-menu [none]
+ '(menu-item "No indicators" menu-bar-showhide-fringe-ind-none
+ :help "Hide all fringe indicators"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-indicators nil))))
+
+
+
+(defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe"))
+
+(defun menu-bar-showhide-fringe-menu-customize ()
+ "Show customization buffer for `fringe-mode'."
+ (interactive)
+ (customize-variable 'fringe-mode))
+
+(define-key menu-bar-showhide-fringe-menu [customize]
+ '(menu-item "Customize" menu-bar-showhide-fringe-menu-customize
+ :help "Detailed customization of fringe"
+ :visible (display-graphic-p)))
+
+(defun menu-bar-showhide-fringe-menu-customize-reset ()
+ "Reset the fringe mode: display fringes on both sides of a window."
+ (interactive)
+ (customize-set-variable 'fringe-mode nil))
+
+(define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
+ (list 'menu-item "Indicators" menu-bar-showhide-fringe-ind-menu
+ :visible `(display-graphic-p)
+ :help "Select fringe mode"))
+
+;; The real definition is in fringe.el.
+;; This is to prevent errors in the :radio conditions below.
+(setq fringe-mode nil)
+
+(define-key menu-bar-showhide-fringe-menu [default]
+ '(menu-item "Default" menu-bar-showhide-fringe-menu-customize-reset
+ :help "Default width fringe on both left and right side"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-mode nil))))
+
+(defun menu-bar-showhide-fringe-menu-customize-left ()
+ "Display fringes only on the left of each window."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-mode '(nil . 0)))
+
+(define-key menu-bar-showhide-fringe-menu [left]
+ '(menu-item "On the Left" menu-bar-showhide-fringe-menu-customize-left
+ :help "Fringe only on the left side"
+ :visible (display-graphic-p)
+ :button (:radio . (equal fringe-mode '(nil . 0)))))
+
+(defun menu-bar-showhide-fringe-menu-customize-right ()
+ "Display fringes only on the right of each window."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-mode '(0 . nil)))
+
+(define-key menu-bar-showhide-fringe-menu [right]
+ '(menu-item "On the Right" menu-bar-showhide-fringe-menu-customize-right
+ :help "Fringe only on the right side"
+ :visible (display-graphic-p)
+ :button (:radio . (equal fringe-mode '(0 . nil)))))
+
+(defun menu-bar-showhide-fringe-menu-customize-disable ()
+ "Do not display window fringes."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-mode 0))
+
+(define-key menu-bar-showhide-fringe-menu [none]
+ '(menu-item "None" menu-bar-showhide-fringe-menu-customize-disable
+ :help "Turn off fringe"
+ :visible (display-graphic-p)
+ :button (:radio . (eq fringe-mode 0))))
+
+(define-key menu-bar-showhide-menu [showhide-fringe]
+ (list 'menu-item "Fringe" menu-bar-showhide-fringe-menu
+ :visible `(display-graphic-p)
+ :help "Select fringe mode"))
+
+(defvar menu-bar-showhide-scroll-bar-menu (make-sparse-keymap "Scroll-bar"))
+
+(define-key menu-bar-showhide-scroll-bar-menu [right]
+ '(menu-item "On the Right"
+ menu-bar-right-scroll-bar
+ :help "Scroll-bar on the right side"
+ :visible (display-graphic-p)
+ :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
+ (frame-parameters))) 'right))))
+(defun menu-bar-right-scroll-bar ()
+ "Display scroll bars on the right of each window."
+ (interactive)
+ (customize-set-variable 'scroll-bar-mode 'right))
+
+(define-key menu-bar-showhide-scroll-bar-menu [left]
+ '(menu-item "On the Left"
+ menu-bar-left-scroll-bar
+ :help "Scroll-bar on the left side"
+ :visible (display-graphic-p)
+ :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
+ (frame-parameters))) 'left))))
+
+(defun menu-bar-left-scroll-bar ()
+ "Display scroll bars on the left of each window."
+ (interactive)
+ (customize-set-variable 'scroll-bar-mode 'left))
+
+(define-key menu-bar-showhide-scroll-bar-menu [none]
+ '(menu-item "None"
+ menu-bar-no-scroll-bar
+ :help "Turn off scroll-bar"
+ :visible (display-graphic-p)
+ :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
+ (frame-parameters))) nil))))
+
+(defun menu-bar-no-scroll-bar ()
+ "Turn off scroll bars."
+ (interactive)
+ (customize-set-variable 'scroll-bar-mode nil))
+
+(define-key menu-bar-showhide-menu [showhide-scroll-bar]
+ (list 'menu-item "Scroll-bar" menu-bar-showhide-scroll-bar-menu
+ :visible `(display-graphic-p)
+ :help "Select scroll-bar mode"))
+
+(define-key menu-bar-showhide-menu [showhide-tooltip-mode]
+ (list 'menu-item "Tooltips" 'tooltip-mode
+ :help "Toggle tooltips on/off"
+ :visible `(and (display-graphic-p) (fboundp 'x-show-tip))
+ :button `(:toggle . tooltip-mode)))
+
+(define-key menu-bar-showhide-menu [menu-bar-mode]
+ '(menu-item "Menu-bar" menu-bar-mode
+ :help "Toggle menu-bar on/off"
+ :button (:toggle . menu-bar-mode)))
+
+(define-key menu-bar-showhide-menu [showhide-tool-bar]
+ (list 'menu-item "Tool-bar" 'tool-bar-mode
+ :help "Turn tool-bar on/off"
+ :visible `(display-graphic-p)
+ :button `(:toggle . tool-bar-mode)))
+
+(define-key menu-bar-options-menu [showhide]
+ (list 'menu-item "Show/Hide" menu-bar-showhide-menu
+ :help "Toggle on/off various display features"))
+
+(define-key menu-bar-options-menu [showhide-separator]
+ '("--"))
+