Subject: bug#6037: 24.0.50; menu-bar-mode function doesn't toggle

From: Stefan Monnier <[email-masked]>
Date: Tue, 27 Apr 2010 09:42:39 -0400

> Well the ideal is that hitting f12 should enable or disable the various
> gui features that I typically don't care about such as the menu-bar and
> so on.  Admittedly, the above code is a hack in an inbetween state.
> Currently I have it revised like so:

> (global-set-key [f12] '(lambda ()
>                          (interactive)
>                          (menu-bar-mode   'toggle)
>                          (scroll-bar-mode 'toggle)
>                          (doom-toggle-use-dialog-box)
>                          ))

That makes sense.  But then I'd recommend the code below instead:

> (global-set-key [f12] (lambda ()
>                         (interactive)
>                         (call-interactively 'menu-bar-mode)
>                         (call-interactively 'scroll-bar-mode)
>                         (doom-toggle-use-dialog-box)))

which will have the following impact:
- it will tell customize about those changes (so "M-x customize-variable
  RET menu-bar-mode" will not complain about a variable set from
  outside, and it will let you save the current state.
- You should be able to do C-u -1 f12 to forcibly turn off
  and C-u 1 f12 to forcibly turn on those GUI elements.
- You'll get a minibuffer messages about the menu-bar-mode being
  enabled/disabled.
- It will work across "all" Emacs versions (the above code will already
  work with emacs-2[234] and I'm not sure which other versions have
  menu-bar-mode and scroll-bar-mode, so maybe it's not that big
  a difference).

        Stefan