Emacs Menu Usability Problem
This page details some usability problems of Emacs's menu items.
The following are screenshots of emacs menu items, and with explanations on why i think some of them should be removed. There are about 30 menus or submenus i think are redundant, confusing, outdated, or inappropriate. A clean menu would help users learn or use more important commands and features.
The 4 non-interactive search commands are not useful. The interactive ones should replace them.
You pull the menu [String Forward…], type a word,
press Enter, then emacs will place cursor on the first
occurrence. To find next occurrence, pull the menu again, type again, Enter. This
operation method is extremely inefficient, and probably is never used
by 99.99% of emacs users. Emacs provides interactive search features
that has both a menu and command
name. (e.g. isearch-forward
【Ctrl+s】 [Forward String…])
Also, the name should be changed to [Search Forward…], [Search Backward…], etc, instead of [Forward String…], [Backward String…].
The 3 [Go To] menu items are not much useful.
- The [Goto Buffer Position…] invokes the command
goto-char
, which moves the cursor to the nth char in a buffer. If a programer wants to go to a particular position, typically it is done by line number and column number. Thegoto-char
is used for elisp programing. Perhaps less than 1% of emacs users code elisp. Elisp programers wouldn't need a menu forgoto-char
. They'd call it by name. - The [Goto Beginning of Buffer] is useless as a menu. Users can intuitively press the {PageUp, PageDown} keys, scroll the mouse, or Ctrl+Home and Ctrl+End to do the same thing. All these methods are familiar to users because they are all apps across Windows, Mac, Linux. For those using emacs's Meta+< and Meta+> shortcuts, they don't need the menu or the menu to remind them.
- The [Active Region Highlighting] is on by default in emacs 23. This behavior is standard in all modern editors. For experienced emacs users who want it off, they can be easily do so thru Customization menu or elisp code.
- The [Options ▸ Case-Insensitive Search] should be moved to [Edit ▸ Search].
- The [Blinking Cursor] is standard behavior in all editors. Probably less than 0.1% users would want to tweak it. If a tweaker wants it off, he can easily do so using the Customization menu.
- The [Enter Debugger on Error] etc commands are used for elisp programing only. They are not useful for vast majority of emacs users.
- The [Tool-bar] is a bar consisting of largish buttons for copy, cut, paste, open, etc. It is on by default. Again, experienced emacs users can turn it off without using menu.
- The [Scroll-bar] and [Fringe] menu items should be removed. Scroll-bar is a standard feature in all applications. If a power user wants it off, he can do so thru the customization menu. The Fringe adjustment is again for tweakers. It adds distraction.
- The [Time, Load and Mail], [Battery Status], are of little use. Their functionality are provided by the Operating System's tool bar. Again, for experienced users,they can call the command by name.
- The [Size Indication] shows the file size in the mode-line, should be removed too because for those who needs this feature, they don't need a menu.
The menu items for rmail and gnus do not work out of the box, because these features need operating system's support and setup that requires some sys admin expertise.
Today, vast majority of people use web based email services (e.g. Gmail), even among professional programers. Also, unlike the situation of the 1980s and 1990s, where most programer's “workstation” machines running unix are setup to run sendmail services. Today, even Linux users, most are probably not setup to run sendmail. Microsoft Windows, today used by ~95% of personal computer users world wide, does not come with “sendmail”. Mac OS X uses PostFix as its MTA and is not enabled by default.
It is questionable, that the gnus and rmail should have a menu
item. For those programers who might want to use these and have the expertise to set it up, they can most certainly find out about these features online or in the emacs documentation. For the emacs die-hards accustomized to using rmail or gnus, they never actually pull these menus to invoke the commands. They simply type
Meta+x rmail
or
Meta+x gnus
.
The game items seem a bit silly. In the 1980s or 1990s, some of these games are typical computer science homework, and are real games in those days. Today, these in emacs are more like a show off, and not really impressive. These games are divisive of emacs and elisp's real power. Also note, none of these game's implementations are nearly a good quality. For example, gomoku (aka “Five in a row”) is today practically a solved problem, but the emacs's AI in gomoku is at kids level. The menu Life plays Conway's Game of Life. You can easily find lots of implementation on the web in Java Applet or Flash that is some 1000 times faster or 10 times more features. For emacs to showoff a game, it should at least show a outstanding implementation, or some game that has merits to stands by itself. (A typing game implemented in elisp would be suitable, or a emacs interface to GNU Go, GNU Chess, or music player.)
In the emacs's help menu, there are about 30 items. With this many items, they are more confusing than helpful. Many of these are outdated, redundant, never used, or FSF propaganda. The following are some explanation.
The content of [Emacs FAQ], [Emacs News], [Emacs Known Problems], are about 5 or 10 years out of date. Today, people use the web for these issues, and the web is far more efficient and effective. The web would also serve emacs dev team better if they switch to web based info on these items. The web pages would be easier to maintain, and can contain up-to-date info.
Similarly, the [External Packages] is hopelessly outdated. For this, the emacswiki (emacswiki.org) provides far more useful resource. The [Find Emacs Packages] item has rather confusing name. After using emacs 8 hours a day for 10 years, i pulled it today for the first time, and realized it is a keyword based search on bundled elisp packages. Looking at the result, it does not seem very useful. For example, clicking on OOP shows a bunch of modes that really have little to do with Object Oriented Programing. Perhaps it should go into the [Search Documentation] sub-menu.
The [Emacs Psychotherapist] is the forefront of AI research in the 1960s. (It is a implementation of ELIZA) Having it in 1980s is way cool. Having it in 1990s in a text editor is a novelty. Today, as a demo of elisp power or as a fun program, it's rather stupid.
The [Getting New Versions], [Copying Condition], [(Non)Warranty] are all redundant. For example, when you pull [Getting New Versions], you get a 940 words article, 19 paragraphs, that discuss the meaning of “Free Software”, copying conditions, where to order FSF's Emacs books, systems emacs runs on, warranty situation, encouragement to computer manufactures on including emacs, request for help and donation… etc. One of the 19 paragraphs, is about where to download FSF software. The page content is written perhaps in 1986, and perhaps last major revision in 1990s. Do today's users need pull a menu named [Getting New Versions]?
A modern replacement should be “Check Update” that tells user if his emacs is up to date, or better, automatically upgrade emacs as a option. Such a feature is common in modern apps. The [Copying Condition] and [(Non)Warranty] are part of the licensing and user agreement. No app today has it as a menu item. All 3 items, are linked in the [About Emacs] menu item's doc, and that is sufficient and appropriate.
The [About GNU] is Richard Stallman's FSF propaganda. Its inclusion in emacs's Help menu is more about politics than as a helpful resource for the emacs software. The emacs manual has FSF propaganda littered throughout already. This menu item burdens the Help menu with another non-helpful item. Again, [About Emacs] has a link to it already.
The items in [More Manuals] sub-menu, can all be gone except the [All Other Manuals (Info)] and the [Lookup Subject in all manuals…] info-apropos
. The [All Other Manuals (Info)] should be moved to the top, and serve as the one entry point for all manuals, and the info-apropos
menu item can move to the [Search Documentation] sub menu.
Emacs 23.1.1, released on 2009-07-30, did not fix any of these menu problems. 〔see Emacs 23 (Released 2009-07)〕
This issue is discussed in emacs dev mailing list in 2009-08-08, Fiddling with the menus, at: http://lists.gnu.org/archive/html/emacs-devel/2009-08/threads.html
Emacs Modernization
- Emacs Modernization: Simple Changes Emacs Should Adopt
- Why Emacs Keys are Painful
- Emacs: Problems of the Scratch Buffer
- Emacs Modernization: Meta Key Notation
- Emacs Menu Usability Problem
- Emacs Mode Line Problem
- Emacs cua-mode Problems
- Emacs: Inconsistency of Search Features
- Problems of grep in Emacs
- Emacs: Usability Problems of Mode Documentation
- Problems of Emacs Manual
- Emacs Manual Sucks by Examples
- Emacs: kill-buffer Induces Buffer Accumulation
- Emacs Spell Checker Problems
- Emacs: Form Feed ^L Problem
- Emacs: Single Key to Delete Whole Line
- Emacs HTML Mode Sucks
- Emacs Does Not Support Viewing Images Files In Windows
- Emacs Should Adopt HTML as Texinfo Replacement
- Emacs Should Support HTML Mail
- Problems of Emacs's “man” Command
- Emacs Lisp Mode Syntax Coloring Problem
- Emacs AutoHotkey Mode Problems
- Elisp: Syntax Table Sucks
- Emacs: Make elisp-index-search use Current Symbol
- Emacs GNU Texinfo Problems; Invalid HTML
- A Record of Frustration in IT Industry; Disappearing FSF URLs, 2006
- Emacs Manual Node Persistency Issues
- Emacs: dired-do-query-replace-regex Replace ALL (fixed)
- Problems of Emacs Supporting Obsolete Systems
- Elisp: Function to Copy/Delete a Dir Recursively (fixed)
- Thoughts on Common Lisp Scheme Lisp Based Emacs
- Text Editors Popularity and Market Research
- Text Editor's Cursor Movement Behavior (emacs, vi, Notepad++)
- Emacs: Usability Problems of Letter-Case Changing Commands
- Emacs Select Word Command Problem
- Emacs: Search Current Word 🚀
- Emacs fill-paragraph Problem