The Motif and Athena widget versions of xvile automatically support user configurable menus.
If the environment variable XVILE_MENU is set, it contains the name of the rc file. Otherwise, the name ".vilemenu" is used. The name of the menu file is given in the variable "$menu-file". If it is not found, and is different from "vilemenu.rc", xvile looks for that file in the list of directories given in "$startup-path". The "vilemenu.rc" file is treated specially because it is the file installed from vile's distribution.
The file contains a series of lines whose first character denotes the type of entry, subsequent fields delimited by colon:
|C –||cascade (actually pulldown). One field only is recognized, the menu heading.|
button (menu entry). The first field is the menu label. The
second is the command which will be executed. If the
command is a number, it is expanded into the vile command
Besides the normal vile commands, the menu implements the following
new_xvile – spawn a new copy of xvile.
list buffers. Each time you select this menu entry, vile
constructs a current list of the buffers, allowing you to
switch to any buffer by selecting it from the menu. It has
to be at the end of a menu, and only one is allowed.
For the Motif version, the accelerators are constructed to correspond with the vile commands for switching buffers, e.g., _0, _1 ...
Lines beginning with '"' or ';' are ignored. character. Lines beginning with '#', or text after a tab also are ignored, but we may drop this feature at some point, to make it more consistent with vile's macro files.
The special keyword "cmd" tells the menu function to invoke the following keyword as a :-line command, so that commands which must solicit input will work properly.
A sample .vilemenu file:
B:Apply Highlighting:cmd HighlightFilter
B:Clear Highlighting (above):clear-attributes-til beginning-of-file
B:Clear Highlighting (below):clear-attributes-til end-of-file
B:Search Forward...:cmd search-forward
B:Search Backward...:cmd search-reverse
B:Reload File:cmd e!
B:Rename Buffer:cmd rename-buffer
B:Rename File:cmd filename
B:Manual for...:cmd ShowManpage
B:Files:capture-command "ls -l"
B:Show Current Only:delete-other-windows
B:5x8:setv $font 5x8
B:7x14:setv $font 7x14
B:8x13:setv $font 8x13
B:8x16:setv $font 8x16
B:9x15:setv $font 9x15
B:10x20:setv $font 10x20
B:12x24:setv $font 12x24
B:10pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-10-*-*-*-*-0-iso8859-1"
B:12pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-12-*-*-*-*-0-iso8859-1"
B:14pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-14-*-*-*-*-0-iso8859-1"
B:16pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-16-*-*-*-*-0-iso8859-1"
B:18pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-18-*-*-*-*-0-iso8859-1"
B:20pt:setv $font "-*-lucidatypewriter-*-r-normal-sans-20-*-*-*-*-0-iso8859-1"
B:On Function...:cmd describe-function
B:On Key...:describe-key >s
This was originally adapted from a description by Philippe Chassany in 1997.