This page describes Menu-Bar+: library menu-bar+.el, which enhances the standard Emacs menu bar.

See screenshots of the Help menu, below, as an example. (Some of the menu items and submenus shown in screenshots are from additional libraries.)

Separation of Local and Global Menus

The buffer-specific (local) menus are separated from the common (global) menus by a vertical bar (||). Local menus are to the left of the bar, global menus to the right. Clicking the bar itself displays an explanation: “← Current mode menus to left. || Common menus to right →”:


Frames Menu

A new menu, Frames, is added, with these menu items:

Hide Frames or Show Buffers, Iconify All Frames, Maximize Frame, Maximize Frame Horizontally, Maximize Frame Vertically, Toggle Max Frame, Toggle Max Frame Horizontally, Toggle Max Frame Vertically, Tile Frames Horizontally, Tile Frames Vertically, Set Frame Parameter from Frame, Set All Frame Parameters from Frame, Fit This Frame

Do Re Mi Menu

A new menu, Do Re Mi, is added, with these menu items (see Screenshot):

Window Size, Frame Size, Move Frame, Color Themes, Frame Background..., Undo Frame Color Change, All Frame Backgronds..., Face Foreground…, All Faces Foreground..., Face Background..., Undo Face Color Change, Frame Font Size (Zoom), Buffer Text Size (Zoom), Font, Frame Configurations, Save Frame Configuration, Buffers, Bookmarks, Marks In Buffer, Global Marks
See DoReMi.

Files Menu

The standard Files menu is enhanced in these ways:

Edit Menu

The standard Edit menu is enhanced in these ways:

Search Menu

A new menu, Search, is added (see Screenshot). It replaces the Search submenu under Edit.

Help Menu

See the screenshots below. (Some of the menu items and submenus shown are from additional libraries.)

The standard Help menu is enhanced in these ways:

Options Menu

The standard Options menu is enhanced with a new menu item, Show, Edit All Options (‘edit-options’).

Tools Menu

If library cmds-menu.el is in your ‘load-path’ then it is loaded by library menu-bar+.el. It adds a ‘Recent Commands’ submenu to menu ‘Tools’. The list of recent commands is updated automatically, similarly to how the ‘Buffers’ menu buffer list is updated.

Help-Menu Screenshots

Help Menu


Help > Whoops!? Menu


Help > Apropos Menu


Help > Describe Menu


Help > Describe > Describe Language Environment Menu


Help > Learn More Menu


Help > Learn More > Emacs Menu


Help > Learn More > Emacs Lisp Menu


Help > Search Documentation Menu


Help > More Manuals Menu



About the separation of local and global menus: Does this mean that the location, geometrically, of e.g. the Buffer menu, will change depending on what type of buffer/mode I am in? If so, that would make it hard to develop a habit for quickly reaching those commands. Just a thought. – MaDa
Well, that’s exactly why I made this extension, in fact ;-). It’s true that most of the global, permanent menus are always in the same place in vanilla Emacs – but one of them, the Help menu, is not. I decided to:
    • Keep all of the permanent menus together, and
    • Clearly separate them from the local, temporary menus by a separator.
An alternative would be to add the separator but keep the permanent menus on the left, and move the Help menu to the left also. I preferred the above design because I felt that it might help people notice the local menus more (English reads from left to right), so it might encourage their familiarity and use. “Extra” stuff appended to the end of a menu-bar is less noticeable, IMO; when it is up front, more attention is likely to be paid to it.
So, yes, the exact position of the separator, and hence the permanent menus, changes, depending on the local menus. On the other hand, the separator is easy to notice, and the permanent menus are always in the same position relative to it (and to each other). In effect, what was true of only the Help menu before is now true of all of the permanent menus – plus you have a separator to help you quickly distinguish global from local.
Good question. – DrewAdams
Well, I’ve read The Humane Interface… 😊 – MaDa

What is the procedure for activating menu-bar+ when menu-bar+ is installed via ELPA? I have installed menu-bar+ with the Emacs package manager, it shows up as “installed” after the command “M-x package-list-packages”, and my ~/.emacs init file contains the command

  (eval-after-load "menu-bar" '(require 'menu-bar+))

and it is positioned prior to other commands which alter the menu bar, e.g., “(require ‘eol-conversion)”. However, when starting up Emacs, I receive a “File error: Cannot open load file, menu-bar+” . Any thoughts?

Answering my own question … The solution is to put the following 2 instructions above the “eval-after-load” directive:
    (setq package-enable-at-startup nil)
    ;; (require) your ELPA packages first, then configure them as normal
Maybe this could be added to the “readme” file.

ToolBar ScrollBar CategoryFrames CategoryDisplay OneOnOneEmacs CategoryHelp