# This file contains all of the editor's buffer and window modes
#
# It should be processed by the "mktbls" program, which produces the
#  headers #included by main.c
#
# All that is necessary to add a new mode to the editor is to add
#  an entry to this file, write the supporting code, and rebuild.
#
# If you want to know which modes are already taken, look
#  at nemode.h, after you build it.
#
# The modes are table entries in the BUFFER and WINDOW structures.
#
# $Header: /usr/build/vile/vile/RCS/modetbl,v 1.217 2003/03/08 00:45:48 tom Exp $
#
#
# Mode-table entries.  Capitalized letters are used for abbreviations.
# The second column is the root of the index-definition.
# The third column is flags used to control updates after a mode is changed.
# The fourth column (if present) controls conditional compilation of the mode.
.globals
bool							# GMD prefix
	"AllVersions"	ALL_VERSIONS	0		SYS_VMS # show all versions when globbing
	"AutoBuffer"	ABUFF		chgd_autobuf	# auto-buffer (lru)
	"cd-on-open"	CD_ON_OPEN	0		OPT_SHELL # set working directory to that containing each newly opened buffer
	"dirc"		DIRC		0		COMPLETE_DIRS # directory-completion (slow!)
	"Alt-TabPos"	ALTTABPOS	0		# emacs-style cursor positioning
	"expand-path"	EXPAND_PATH	0		# true iff %/# don't substitute shortened-path
	"ErrorBells"	ERRORBELLS	0		# audible/visible-bells
	"flash"		FLASH		0		OPT_FLASH # visible-bell (flash)
	"force-console"	FORCE_CONSOLE	0		SYS_WINNT&&DISP_NTWIN
	"glob"		GLOB		0		!OPT_GLOB_PIPE # enable/disable filename globbing
	"HIstory"	HISTORY		0		OPT_HISTORY # command-history
	"ImplyBuffer"	IMPLYBUFF	0		# imply-buffer (vi-like)
	"Insert-Exec"	INSEXEC		0		# allow ^F/^B, etc., to be interpreted during insert mode
	"mouse"		MOUSE		chgd_mouse	SYS_OS2 # mode to control whether we allow mouse-clicking
	"multibeep"	MULTIBEEP	0		# multiple successive identical failed motions all beep
	"maplonger"	MAPLONGER	0		# favor longer maps
	"pin-tagstack"	PIN_TAGSTACK	0		# tagstack push/pop ops are pinned to curwin
	"Popup-Choices"	POPUP_CHOICES	0		OPT_POPUPCHOICE&&!OPT_ENUM_MODES # popup buffer showing file-completion choices
	"Popup-Msgs"	POPUP_MSGS	0		OPT_POPUP_MSGS	# popup buffer when multiple messages emitted
	"popup-menu"	POPUPMENU	chgd_popupmenu	SYS_WINNT&&DISP_NTWIN # enable popup menu (win32)
	"ReadOnly-on-ReadOnly" RONLYRONLY	0	# set readonly mode for readonly files
	"remap"		REMAP		0		# should mappings be reapplied
	"remapfirst"	REMAPFIRST	0		# should 1st char of a map be remapped?
	"resolve-links"	RESOLVE_LINKS	0		defined(HAVE_SYMLINK)	# cache/resolve directory names (can be slow if NFS times-out)
	"ShowRam"	HEAPSIZE	0		OPT_HEAPSIZE	# show heap usage
	"SameBangs"	SAMEBANGS	0		# use same "!!" data for ^X-!
	"swap-title"	SWAPTITLE	chgd_swaptitle	OPT_TITLE	# title -> 'buffer - prognam'
	"working"	WORKING		chgd_working	OPT_WORKING	# "working" message
	"usefilelock"	USEFILELOCK	0		OPT_LCKFILES	# okay use filelocks
	"unique-buffers" UNIQ_BUFS	chgd_uniqbuf	# only one buffer per file
	"VIEW-on-ReadOnly" RONLYVIEW	0		# set view mode for readonly files
	"w32pipes"	W32PIPES	0		OPT_W32PIPES
	"warn-blanks"   WARNBLANKS	0		!SMALLER # warn if filename has blanks, etc.
	"warn-unread"	WARNUNREAD	0		# warn if quitting with unread buffers
	"warn-reread"	WARNREREAD	0		# warn before rereading a buffer
	"warn-rename"	WARNRENAME	0		# warn before renaming a buffer
	"xterm-mouse"	XTERM_MOUSE	chgd_xterm	# mode to control whether we allow mouse-clicking
	"xterm-title"	XTERM_TITLE	chgd_swaptitle	OPT_TITLE	# mode to control whether we allow xterm title updates
	"SmoothScroll"	SMOOTH_SCROLL	0		# should we update even if there is typeahead?
	"Spaces-After-Sentence" SPACESENT	0	# add two spaces after a
enum
	"Color-Scheme"	COLOR_SCHEME	chgd_scheme	OPT_COLOR_SCHEMES # color palette combination
	"ccolor"	CCOLOR		chgd_color	OPT_COLOR	# cursor color
	"fcolor"	FCOLOR		chgd_color	OPT_COLOR	# foreground color
	"bcolor"	BCOLOR		chgd_color	OPT_COLOR	# background color
	"mcolor"	MCOLOR		chgd_hilite	OPT_HILITEMATCH # modeline color
	"Mini-Hilite"   MINI_HILITE	0		# highlight minibuffer when using vi-commands
	"Popup-Choices"	POPUP_CHOICES	0		OPT_POPUPCHOICE&&OPT_ENUM_MODES # popup buffer showing file-completion choices
	"video-attrs"	VIDEO		chgd_color	OPT_COLOR	# video attributes, especially reverse
	"vtflash"	VTFLASH		0		VTFLASH_HOST&&(OPT_FLASH) # flash using DEC VT esc sequences
int							# VAL_ prefix
	"maplength"	MAPLENGTH	0		# maximum length of :map string
	"printing-low"	PRINT_LOW	chgd_charset	# low end of high-bit-set printable range
	"printing-high"	PRINT_HIGH	chgd_charset	# high end of high-bit-set printable range
	"report"	REPORT		0		# threshold for reporting changes
	"timeoutlen"	TIMEOUTVAL	0		# how long to catnap for more input
	"timeoutlen-user" TIMEOUTUSERVAL 0		# how long to catnap for more input
	"scroll-pause"	SCROLLPAUSE	0		SYS_WINNT	# how long to catnap after scrolling
regex							# VAL_ prefix
	"C-SUFfixes"	CSUFFIXES	0		!OPT_MAJORMODE # match against filenames to turn on c-mode
string							# VAL_ prefix
	"backup-style"  BACKUPSTYLE	0		OPT_FILEBACK # file backup style
	"expand-chars"	EXPAND_CHARS	0		# list of chars we can expand (%,#,:)
	"find-cfg"	FINDCFG		chgd_find_cfg	OPT_FINDPATH # configuration of the "find" feature
	"icursor"	ICURSOR		chgd_icursor	OPT_ICURSOR # specify insertion cursor
	"glob"		GLOB		0		OPT_GLOB_PIPE # select filename globbing style
	"redirect-keys"	REDIRECT_KEYS	chgd_redir_keys	SYS_WINNT&&defined(VILE_OLE) # send keys to another process

.buffers
bool							# MD prefix
	"animated"	UPBUFF		0		OPT_UPBUFF # update scratch-buffers
	"AutoIndent"	AIND		0		# auto-indent
	"AutoSave"	ASAVE		0		# auto-save mode
	"AutoWrite"	AUTOWRITE	0		# auto-write when shelling out
	"BackspaceLimit" BACKLIMIT	0		# backspace limited in insert mode
	"check-modtime" CHK_MODTIME	0		!SMALLER # check buffer-modtime
	"CIndent"	CINDENT		0		# c-style indent
	"cmode"		CMOD		chgd_major_w	!OPT_MAJORMODE # C indentation and fence match
	"crypt"		CRYPT		chgd_major	OPT_ENCRYPT	# encrytion mode active
	"dos"		DOS		chgd_major_w	# "dos" mode -- lines end in crlf
	"HighLight"	HILITE		chgd_filter	OPT_MAJORMODE # true if we enable syntax highlighting
	"IgnoreCase"	IGNCASE		chgd_hilite	# Exact matching for searches
	"loading"	LOADING		0		# Are we asynchronously loading a file?
	"locked"	LOCKED		chgd_disabled	OPT_LCKFILES # mode locked
	"magic"		MAGIC		chgd_hilite	# regular expressions in search
	"Meta-Insert-Bindings" METAINSBIND 0		# honor meta bindings in insert mode
	"NewLine"	NEWLINE		chgd_buffer	# trailing newline (vi-style)
	"ReadOnly"	READONLY	chgd_major	# allow writing the buffer
	"ShowMatch"	SHOWMAT		0		# show matching braces during insert
	"ShowMoDe"	SHOWMODE	chgd_major	# show insert/replace/command mode
	"TabInsert"	TABINSERT	0		# okay to insert tab chars
	"TagignoreCase"	TAGIGNORECASE	0		!SMALLER # ignore upper/lower case in tags
	"TagRelative"	TAGSRELTIV	0		# tags are relative to tagsfile path
	"TagWord"	TAGWORD		0		# apply tag to whole word, not only string at cursor
	"terse"		TERSE		0		# be terse -- suppress messages
	"view"		VIEW		chgd_major	# read-only buffer
	"overlap-matches"  HILITEOVERLAP	chgd_hilite	OPT_HILITEMATCH # highlight all search matches
	"UndoAble"	UNDOABLE	chgd_undoable	# changes to buffer are undoable (or not)
	"Undo-Dos-Trim"	UNDO_DOS_TRIM	0		# changes to buffer made when setting dosmode are undoable (or not)
	"WrapScan"	SWRAP		0		# wrap-around search mode
	"WrapWords"	WRAP		0		# word wrap
	"YankMotion"	YANKMOTION	0		# honor vi-style motion after yanking text
enum
	"record-format" RECORD_FORMAT	0		SYS_VMS	# specify record-format to use
	"RecordSeparator" RECORD_SEP	chgd_rs		# record-separator affects dos/unix modes
	"ShowFormat"	SHOW_FORMAT	chgd_window	# show record-separator
	"visual-matches"  HILITEMATCH	chgd_hilite	OPT_HILITEMATCH # highlight all search matches
int							# VAL_ prefix
	"AutoColor"	AUTOCOLOR	0		OPT_COLOR&&!SMALLER # auto color
	"AutoSaveCNT"	ASAVECNT	0		# how often auto-saves occur
	"C-ShiftWidth"	C_SWIDTH	0		!OPT_MAJORMODE # shift-width for C buffers
	"C-TabStop"	C_TAB		chgd_major_w	!OPT_MAJORMODE # tab spacing for C buffers
	"fence-limit"	FENCE_LIMIT	0		OPT_MAJORMODE # fence iteration-limit
	"FillCol"	FILL		0		# column for paragraph reformat, and line break
	"percent-crlf"	PERCENT_CRLF	0		# threshold for converting to DOS-mode
	"record-length" RECORD_LENGTH	0		SYS_VMS	# specify record-length to use
	"ShiftWidth"	SWIDTH		0		# shiftwidth for ^T/^D/<</>>
	"TabStop"	TAB		chgd_major_w	# tab spacing for most buffers
	"TagLength"	TAGLEN		0		# required significant length for tag lookups
	"UndoLimit"	UNDOLIM		0		# how much undo stack is saved
	"WrapMargin"	WRAPMARGIN	0		# width of right margin for autowrap
string							# VAL_ prefix
	"CIndent-Chars"	CINDENT_CHARS	0		# c-style indent flags
	"FENCE-pairS"	FENCES		chgd_fences	# pairs of fences {,}; (,); etc.
	"FilterName"	FILTERNAME	0		OPT_MAJORMODE # Name of syntax-filter
	"locker"	LOCKER		chgd_disabled	OPT_LCKFILES  # Name of locker
	"tags"		TAGS		0		# list of tags files
regex							# VAL_ prefix
	"comments"	COMMENTS	0		# matches leading comment for comment reformatting
	"comment-prefix" CMT_PREFIX	0		# prefix to ignore/preserve when formatting comment
	"fence-begin"	FENCE_BEGIN	0		# begin a simple (character, non-nestable) fence
	"fence-end"	FENCE_END	0		# end a simple fence
	"fence-if"	FENCE_IF	0		# begin a complex (line, nestable) fence
	"fence-elif"	FENCE_ELIF	0		# next complex fence
	"fence-else"	FENCE_ELSE	0		# final complex fence
	"fence-fi"	FENCE_FI	0		# end a complex fence
	"paragraphs"	PARAGRAPHS	0		# delimits a paragraph
	"sections"	SECTIONS	0		# delimits a section
	"sentences"	SENTENCES	0		# delimits a sentence

.windows
bool							# WMD prefix
	"LIst"		LIST		chgd_window	# "list" mode -- show tabs and EOL
	"NUmber"	NUMBER		chgd_window	# line-numbers shown
	"HorizScroll"	HORSCROLL	0		# scroll whole screen
	"LineWrap"	LINEWRAP	chgd_window	OPT_LINEWRAP # wrap lines wider than screen
	"ruler"		RULER		chgd_status	!SMALLER # display line+col in modeline
	"Unprintable-as-Octal" NONPRINTOCTAL  chgd_window # print non-printing chars in octal
	"Terse-SELections" TERSELECT	0		OPT_SELECTIONS # don't display extent of selections on message line
int							# VAL_ prefix
	"SIDEways"	SIDEWAYS	chgd_window	# sideways offset for display

# Put the majormode definitions after buffers to simplify logic in mktbls.
# The arguments of .majormode are the predefined majormodes and submodes.

.majormode c	tabstop
.majormode c	shiftwidth
.majormode vile
enum
	"qualifiers"	QUALIFIERS	0		# denotes how preamble/suffixes are combined
regex							# MVAL_ prefix
	"PREamble"	PREAMBLE	0		# match against file header to turn on mode
	"SUFfixes"	SUFFIXES	0		# match against filenames to turn on mode
string
	"before"	BEFORE		chgd_mm_order	# check mode before given
	"after"		AFTER		chgd_mm_order	# check mode after given

.qualifier
string
	"name"		NAME		0
	"group"		GROUP		0

#
# The "environment" variables are similar to modes, but are not so neatly
# organized into groups of universal/buffer/window.
.environment
"abufname"	ABUFNAME		# alternate buffer name (i.e. '#')
"autocolor-hook" AUTOCOLORHOOK	OPT_HOOKS&&OPT_COLOR	# procedure to run for auto-coloring
"bchars"	BCHARS			# chars in current buffer
"bflags"	BFLAGS			# status flags for current buffer
"blines"	BLINES			# lines in current buffer
"brightness"	BRIGHTNESS	DISP_NTWIN	# intensity of normal, bold
"buffer-hook"	BUFHOOK		OPT_HOOKS	# procedure to run when entering buf
"bwindows"	BWINDOWS		# windows open on current buffer
"cbufname"	CBUFNAME		# current buffer name
"cd-hook"	CDHOOK		OPT_HOOKS	# procedure to run when cd'ing
"cdpath"	CDPATH		OPT_PATHLOOKUP	# runtime copy of CDPATH env var
"cfgopts"	CFGOPTS			# "interesting" compiled options (comma-delimited)
"cfilname"	CFNAME			# current file name
"char"		CHAR			# current character under the cursor
"cmd-count"	CMD_COUNT	OPT_EVAL # repeat-counter for macros
"cryptkey"	CRYPTKEY	OPT_ENCRYPT # write-only encryption-key
"curchar"	CURCHAR		!SMALLER # current character index in buffer
"curcol"	CURCOL			# current column pos of cursor
"curline"	CURLINE			# current line in file
"cwd"		CWD		OPT_SHELL # current directory
"cwline"	CWLINE			# current screen line in window
"debug"		DEBUG			# macro debugging
"directory"	DIRECTORY	OPT_SHELL # controls location of temp-files
"discmd"	DISCMD			# display commands on command line
"disinp"	DISINP			# display command line input characters
"end-of-cmd"	EOC			# true if they ended the cmd with <CR>
"error-buffer"	ERROR_BUFFER	OPT_FINDERR	# buffer to use for find-next-error
"error-expr"	ERROR_EXPR	OPT_FINDERR	# last matched error pattern
"error-match"	ERROR_MATCH	OPT_FINDERR	# " " " matching text
"exec-path"	EXEC_PATH		# directory where vile's executable is found
"exec-suffix"	EXEC_SUFFIX		# suffix to append when looking for execable programs
"exit-hook"	EXITHOOK	OPT_HOOKS	# procedure to run when quitting
"favorites"	FAVORITES	SYS_WINNT	# path to favorites directory
"filename-expr"	FILENAME_EXPR	OPT_FINDERR	# regular expression for %F
"filename-ic"	FILENAME_IC		# true if we set OPT_CASELESS
"filter-list"	FILTER_LIST	OPT_FILTER	# list of builtin-filters
"findpath"	FINDPATH	OPT_FINDPATH	# directory(s) used with "find" feature
"find-cmd"	FINDCMD		OPT_FINDPATH	# shell cmd emitted via "find" feature (debug)
"font"		FONT		DISP_X11||DISP_NTWIN	# current font
"forward-search" FWD_SEARCH		# search-direction (true if forward)
"helpfile"	HELPFILE		# helpfile (vile.hlp)
"iconname"	ICONNAM		DISP_X11	# current font
"identifier"	IDENTIF			# current identifier
"kbd-macro"	KBDMACRO		# keyboard-macro buffer (read only)
"kill"		KILL			# kill buffer (read only)
"lastkey"	LASTKEY			# last keyboard char struck
"lcols"		LCOLS			# length of current line, in columns
"libdir-path"	LIBDIR_PATH		# library directory(s)
"line"		LINE			# text of current line
"llength"	LLENGTH			# length of current line
"majormode"	MAJORMODE	OPT_MAJORMODE # current majormode, if any
"majormode-hook" MAJORMODEHOOK	OPT_HOOKS&&OPT_MAJORMODE	# procedure to run for majormodes
"match"		MATCH			# last matched magic pattern
"menu-file"	MENU_FILE	OPT_MENUS # the name of the menu-file (e.g., .vilemenu)
"mode"		MODE			# are we inserting/overwriting/command
"modeline-format" MLFORMAT	OPT_MLFORMAT # modeline format string
"modified"	MODIFIED		# is current buffer modified?
"ncolors"	NCOLORS			# number of colors displayed
"ntildes"	NTILDES			# number of tildes displayed at eob
"ocwd"		OCWD		OPT_SHELL # previous directory
"os"		OS			# what os are we on?
"pagelen"	PAGELEN			# number of lines used by editor
"pagewid"	CURWIDTH		# current screen width
"palette"	PALETTE			# current palette string
"patchlevel"	PATCHLEVEL		# current patch-level of vile (empty for release)
"pathlist-separator" PATHCHR		# separator for lists of pathnames
"pathname-separator" PATHSEP		# separator for levels of pathnames
"pathname"	PATHNAME		# current path-like word
"pending"	PENDING			# type ahead pending flag
"pid"		PROCESSID		# vile's process-id
"position-format" POSFORMAT	OPT_POSFORMAT # position format string
"progname"	PROGNAME		# returns current prog name - "vile"
"prompt"	PROMPT			# command-prompt string - ": "
"qidentifier"	QIDENTIF		# current qualified identifier
"read-hook"	RDHOOK		OPT_HOOKS	# procedure to run when reading
"replace"	REPLACE			# replacement pattern
"search"	SEARCH			# search pattern
"seed"		SEED			# current random number seed
"shell"		SHELL		OPT_SHELL	# shell-environment variable
"sres"		SRES			# current screen resolution
"startup-file"	STARTUP_FILE		# the name of the startup-file (e.g., .vilerc)
"startup-path"	STARTUP_PATH		# where to find the startup-file (e.g., .)
"status"	STATUS			# returns the status of the last command
"title"		TITLE		OPT_TITLE	# window title
"title-format"	TITLEFORMAT	OPT_TITLE	# window title format
"tpause"	TPAUSE			# length to pause for paren matching
"version"	VERSION			# current version number
"with-prefix"	WITHPREFIX	OPT_EVAL	# current "~with" prefix
"wlines"	WLINES			# # of lines in current window
"word"		WORD			# current word
"write-hook"	WRHOOK		OPT_HOOKS	# procedure to run when writing
"xdisplay"	XDISPLAY	DISP_X11&&OPT_SHELL	# X Windows display, etc.
"xshell"	XSHELL		DISP_X11&&OPT_SHELL	# xterm emulator, etc.
"xshell-flags"	XSHELLFLAGS	DISP_X11&&OPT_SHELL	# $xshell flags, e.g., "-c"

# function name, id, numargs
.functions
"abs"		ABS		1|NUM|NRET	# absolute value of a number
"add"		ADD		2|NUM|NRET	# add two numbers together
"and"		AND		2|BOOL|BRET	# logical and
"ascii"		ASCII		1|NRET		# char to integer conversion
"bind"		BIND		1|STR|SRET	# lookup what function name is bound to a key
"cat"		CAT		2|STR|SRET	# concatenate string
"cclass"	CCLASS		1|STR|SRET	# character-class
"chr"		CHR		1|NUM		# integer to char conversion
"date"		DATE		2|NUM|SRET	# formatted date/timestamp
"default"	DEFAULT		1|STR|SRET	# return initial/default value for mode or state-variable
"divide"	DIV		2|NUM|NRET	# division
"dquery"	DQUERY		2|STR|SRET	# query the user, given default value
"env"		ENV		1|STR|SRET	# retrieve a system environment var
"equal"		EQUAL		2|NUM|BRET	# logical equality check
"error"		ERROR		1|STR|BRET	# check if parameter was the ERROR token
"execable"	EXECABLE	1|BRET		# is a file executable?
"filter"	FILTER		1|STR|BRET	# check if internal filter exists
"ftime"		FTIME		1|STR|NRET	# file-timestamp (last-modified)
"geq"		GEQ		2|NUM|BRET	# logical greater than or equal
"global"	GLOBMODE	1|STR|SRET	# retrieve global setting
"greater"	GREATER		2|NUM|BRET	# logical greater than
"gt"		GT		2|NUM|BRET	# logical greater than (greater)
"gtkey"		GTKEY		0		# get 1 character
"gtsequence"	GTSEQ		0		# get keyboard-sequence (characters)
"indirect"	INDIRECT	1|STR|SRET	# evaluate indirect value
"left"		LEFT		2|STR|SRET	# left string(string, len)
"length"	LENGTH		1|NRET		# string length
"leq"		LEQ		2|NUM|BRET	# logical less than or equal
"lessthan"	LESS		2|NUM|BRET	# logical less than
"local"		LOCMODE		1|STR|SRET	# retrieve local setting
"lookup"	LOOKUP		2|STR|SRET	# lookup an external file
"lower"		LOWER		1|STR|SRET	# lower case string
"lt"		LT		2|NUM|BRET	# logical less than (lessthan)
"middle"	MID		3|STR|SRET	# mid string(string, pos, len)
"modulo"	MOD		2|NUM|NRET	# modulo
"negate"	NEG		1|NUM|NRET	# negate
"neq"		NEQ		2|NUM|BRET	# logical not equal
"not"		NOT		1|BOOL|BRET	# logical not
"or"		OR		2|BOOL|BRET	# logical or
"path"		PATH		2|STR|SRET	# transform pathnames
"pcat"		PATHCAT		2|STR|SRET	# concat directory and filename
"pquote"	PATHQUOTE	1|STR|SRET	# quote pathname if needed
"qpasswd"	QPASSWD		1|STR|SRET	# query user for password, echo '*'
"query"		QUERY		1|STR|SRET	# query the user
"random"	RANDOM		1|NUM|NRET	# get a random number
"rd"		RD		1|BRET		# is a file readable?
"readable"	READABLE	1|BRET		# is a file readable?
"register"	REGISTER	1|STR|SRET	# register, e.g. "a"
"right"		RIGHT		2|STR|SRET	# right string(string, pos)
"rnd"		RND		1|NUM|NRET	# get a random number
"sequal"	SEQUAL		2|BRET		# string logical equality check
"sgeq"		SGEQ		2|NUM|BRET	# string greater than or equal
"sgreater"	SGREAT		2|BRET		# string logical greater than
"sgt"		SGT		2|BRET		# string logical greater than (sgreater)
"sindex"	SINDEX		2|NRET		# find the index of one string in another
"sleq"		SLEQ		2|NUM|BRET	# string less than or equal
"sless"		SLESS		2|BRET		# string logical less than
"slt"		SLT		2|BRET		# string logical less than (sless)
"sneq"		SNEQ		2|NUM|BRET	# string not equal
"stime"		STIME		0|NRET		# system-timestamp
"stoken"	STOKEN		3|BRET		# find a token in a string, given delims
"subtract"	SUB		2|NUM|NRET	# subtraction
"times"		TIMES		2|NUM|NRET	# multiplication
"token"		TOKEN		3|STR|SRET	# select n'th token of string, given delims
"translate"	TRANS		3|STR|SRET	# translate string, changing chars from 2nd to 3rd param
"trim"		TRIM		1|STR|SRET	# trims leading/trailing/repeated whitespace
"upper"		UPPER		1|STR|SRET	# uppercase string
"word"		WORD		2|STR|SRET	# select n'th word of string
"writable"	WRITABLE	1|BRET		# is a file writeable?

.table backup
"off"		0
".bak"		1
"tilde"		2		SYS_UNIX
# "tilde_N_existing", */
# "tilde_N", */

.table bool
"FALSE"		FALSE
"TRUE"		TRUE
"false"		FALSE
"true"		TRUE
"off"		FALSE
"on"		TRUE

# These names are a little cryptic because I'm squeezing them into an 80-column
# display for show-printable -TD
.table charclass		OPT_SHOW_CTYPE
"upr"		vl_UPPER
"lwr"		vl_LOWER
"num"		vl_DIGIT
"sp"		vl_SPACE
"ctl"		vl_CNTRL
"del"		vl_BSPACE
"prn"		vl_PRINT
"pun"		vl_PUNCT
"id"		vl_IDENT
"path"		vl_PATHN
"wld"		vl_WILD
"arg"		vl_LINESPEC
"fn"		vl_FENCE
"nsp"		vl_NONSPACE
"qid"		vl_QIDENT
"tmp"		vl_SCRTCH	OPT_WIDE_CTYPES
"sh"		vl_SHPIPE	OPT_WIDE_CTYPES

.table color
"fcolor"	ENUM_FCOLOR	DISP_X11
"default"	ENUM_UNKNOWN
"black"		0
"red"		1
"green"		2
"yellow"	3		!OPT_16_COLOR
"brown"		3		OPT_16_COLOR
"blue"		4
"magenta"	5
"cyan"		6
"white"		7		!OPT_16_COLOR
"lightgray"	7		OPT_16_COLOR
"gray"		8		OPT_16_COLOR
"brightred"	9		OPT_16_COLOR
"brightgreen"	10		OPT_16_COLOR
"yellow"	11		OPT_16_COLOR
"brightblue"	12		OPT_16_COLOR
"brightmagenta"	13		OPT_16_COLOR
"brightcyan"	14		OPT_16_COLOR
"white"		15		OPT_16_COLOR

.table directive		!SMALLER
"if"		D_IF
"elseif"	D_ELSEIF
"else"		D_ELSE
"endif"		D_ENDIF
"goto"		D_GOTO
"return"	D_RETURN
"while"		D_WHILE
"endwhile"	D_ENDWHILE
"break"		D_BREAK
"force"		D_FORCE
"hidden"	D_HIDDEN
"quiet"		D_QUIET
"local"		D_LOCAL
"with"		D_WITH
"elsewith"	D_ELSEWITH
"endwith"	D_ENDWITH
"endm"		D_ENDM
"trace"		D_TRACE

.table hilite
"bold"		VABOLD
"color"		VACOLOR
"italic"	VAITAL
"none"		0
"reverse"	VAREV
"underline"	VAUL
"black"		VACOL_0		OPT_COLOR
"red"		VACOL_1		OPT_COLOR
"green"		VACOL_2		OPT_COLOR
"yellow"	VACOL_3		OPT_COLOR&&!OPT_16_COLOR
"brown"		VACOL_3		OPT_COLOR&&OPT_16_COLOR
"blue"		VACOL_4		OPT_COLOR
"magenta"	VACOL_5		OPT_COLOR
"cyan"		VACOL_6		OPT_COLOR
"white"		VACOL_7		OPT_COLOR&&!OPT_16_COLOR
"lightgray"	VACOL_7		OPT_COLOR&&OPT_16_COLOR
"gray"		VACOL_8		OPT_COLOR&&OPT_16_COLOR
"brightred"	VACOL_9		OPT_COLOR&&OPT_16_COLOR
"brightgreen"	VACOL_A		OPT_COLOR&&OPT_16_COLOR
"yellow"	VACOL_B		OPT_COLOR&&OPT_16_COLOR
"brightblue"	VACOL_C		OPT_COLOR&&OPT_16_COLOR
"brightmagenta"	VACOL_D		OPT_COLOR&&OPT_16_COLOR
"brightcyan"	VACOL_E		OPT_COLOR&&OPT_16_COLOR
"white"		VACOL_F		OPT_COLOR&&OPT_16_COLOR

.table lookup
"readable"	FL_READABLE
"writable"	FL_WRITEABLE
"execable"	FL_EXECABLE
"current"	FL_CDIR
"home"		FL_HOME
"bin"		FL_EXECDIR
"startup"	FL_STARTPATH
"path"		FL_PATH
"libdir"	FL_LIBDIR

.table mmqualifiers		OPT_MAJORMODE
"any"		MMQ_ANY
"all"		MMQ_ALL

.table paramtypes
"bool"		PT_BOOL
"buffer"	PT_BUFFER
"directory"	PT_DIR
"enum"		PT_ENUM
"file"		PT_FILE
"integer"	PT_INT
"majormode"	PT_MAJORMODE	OPT_MAJORMODE
"mode"		PT_MODE
"string"	PT_STR
"variable"	PT_VAR

.table path
"head"		PATH_HEAD
"tail"		PATH_TAIL
"root"		PATH_ROOT
"end"		PATH_END
"short"		PATH_SHORT
"full"		PATH_FULL

.table popup
"delayed"	POPUP_CHOICES_DELAYED
"immediate"	POPUP_CHOICES_IMMED
"off"		POPUP_CHOICES_OFF

.table recordformat		SYS_VMS
"udf"		FAB$C_UDF
"fix"		FAB$C_FIX
"var"		FAB$C_VAR
"vfc"		FAB$C_VFC
"stm"		FAB$C_STM
"stmlf"		FAB$C_STMLF
"stmcr"		FAB$C_STMCR

.table recordsep
# "auto"	RS_AUTO
"cr"		RS_CR
"crlf"		RS_CRLF
"lf"		RS_LF

.table showformat
"always"	SF_ALWAYS
"differs"	SF_DIFFERS
"foreign"	SF_FOREIGN
"local"		SF_LOCAL
"never"		SF_NEVER

.table videoattrs		OPT_COLOR
"bold"		VABOLD
"italic"	VAITAL
"none"		0
"reverse"	VAREV
"underline"	VAUL

.table vtflashseq		OPT_FLASH
"off"		VTFLASH_OFF
"reverse"	VTFLASH_REVERSE
"normal"	VTFLASH_NORMAL
