This page describes Menu-Bar+: library menu-bar+.el, which enhances the standard Emacs menu bar.
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 →”:
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.
The standard Files menu is enhanced in these ways:
- New menu items: Execute Command (
‘execute-extended-command’) and Repeat Earlier Command (
- File > Close (command
‘kill-this-buffer’) also deletes the window.
The standard Edit menu is enhanced in these ways:
- New menu items Paste Secondary, Select All, Delete Matching Lines..., and Delete Non-Matching Lines....
- New submenu, Fill, with items Fill Paragraph, Fill Paragraphs, Fill Uniform Paragraphs, and Fill Non-Uniform Paragraphs. The first of these does whatever
‘M-q’ does, if it is bound; otherwise, it does
- New submenu Edit Region, with items Exec Keyboard Macro, Expand Abbrevs, Column - Mode Indent, Rigid Indent, Center, Comment, Untabify, Highlight..., Highlight Regexp..., Unhighlight, Upcase, Downcase, Capitalize, and Unaccent.
- New submenu, Sort Region, with items Regexp Fields..., Pages, Paragraphs, Numeric Field, Field, Columns, Lines, and Reverse.
- Moved submenu Search to the top level (menu bar) – see next.
A new menu, Search, is added (see Screenshot). It replaces the Search submenu under Edit.
- New menu item Occurrences....
- New menu items for Word searches.
- Reorganized menu: Each target type (String, Regexp, Word) has Forward and Backward.
- New submenu, Replace, with items Query String, Regexp..., Map..., Tags..., Global String, and Regexp.
- New submenu, Tags, with items Find Tag..., Find Tag Regexp..., and Search Tags Files.
- New submenu, Bookmarks, with items Jump to Bookmark, Jump to Bookmark Other Window, Set Bookmark, Insert Contents, Insert Location, Rename Bookmark, Delete Bookmark, Edit Bookmarks List, Save Bookmarks, Save Bookmarks As..., and Load a Bookmark File....
The standard Help menu is enhanced in these ways:
- New menu items Help On Help (
‘help-for-help’), Show Help Buffer, and Save Help Buffer.
- New submenu, Whoops!?, with items Cancel Current Action (
‘keyboard-quit’), Back to Top Level (
‘top-level’), and What Did I Do?! (
- New submenu, Apropos, with items Commands..., User Options..., All Variables..., Symbols..., Tags..., and Symbol Descriptions....
- New menu items for submenu Describe: Menu Bar, Major Mode Syntax, and This.... Item This... gives help on any key/menu sequence or object clicked with the mouse:
- type a KeySequence (e.g.
- choose a menu item (e.g. `
[menu-bar files open-file]’)
- click on a scroll bar
- click on the mode line
- click in the MiniBuffer
- click on a name in a buffer:
- click anywhere else in a buffer: its modes are described
- New submenu, Learn More, with (sub)submenus `Emacs’ and `Emacs Lisp’, and items Last Accessed Info Manual, All Info Manuals, and Unix Man Page....
- `Emacs’ menu: items Tutorial, Manual - Info, Find Command in Manual, Find Key in Manual, Change History, and FAQ.
- `Emacs Lisp’ menu: items Manual - Info, Locate Library..., Locate Libraries by Keyword, and Change History.
The standard Options menu is enhanced with a new menu item, Show, Edit All Options (
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.
- 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
ToolBar ScrollBar CategoryFrames CategoryDisplay OneOnOneEmacs CategoryHelp