This section conveys the principles and concerns used by Anju to inform its design decisions.
Editorially, all design decisions for Anju are ultimately the opinion of Charles Y. Choi.
Anju takes the position that different types of menus have different concerns or objectives. This is most apparent in contrasting the design of a main menu section (e.g. File, Edit, Options, …) to that of a context menu.
For Anju:
A common implementation practice in Emacs is to reuse menu keymaps for both the main menu and context menus. This violates the above concerns, which Anju seeks to address.
The next sub-sections further detail the design concerns with respect to an area where mouse interaction occurs.
A context menu (as its name implies) should constrain itself to commands relevant to context. The parameters of this context are usually (although not exclusively) defined by a subset of:
Anju takes the opinion that context menus should not support general command discovery. The context menu offering should be concise. Users seeking command discovery should instead look at the main menu.
Support for direct action based on mouse cursor position is a common user interaction technique. Anju applies this to Emacs window management, where window creation, deletion, and swapping are supported from both the context menu and the mode line.
Anju eschews Emacs’ default middle mouse button bindings as they presume usage of a 90’s style 3-button mouse. This style of mouse design has long been superseded with a middle scroll-wheel+button control. This widespread hardware change has resulted in the majority of mouse-supporting applications to emphasize scrolling actions with the middle control and clicking actions to the left and right buttons. Anju follows suit, primarily binding the right mouse button click (down) event to raising a context menu. In addition, Anju reconfigures commands that were previously bound to the middle button to ones accessible via a context menu.
The only exception Anju makes in this matter is to keep the Emacs default binding of mouse-2 to mouse-yank-primary.