Vis reuses the Lua LPeg based lexers from the Scintillua project.
Vis searches the lexers in the following locations:
$VIS_PATH/lexers
./lua/lexers
relative to the binary location (using/proc/self/exe
)$XDG_CONFIG_HOME/vis/lexers
/usr/local/share/vis/lexers
/usr/share/vis/lexers
package.path
(standard lua search path)
at runtime a specific lexer can be loded by means of :set syntax <name>
where <name>
corresponds to the filename without the .lua
extension.
To add a new lexer, start with the template.txt
found in this directory
or a lexer of a similiar language. Read the
lexer module documentation.
The LPeg introduction might also
be useful.
For development purposes it is recommended to test the lexers from a lua script as described in the Scintillua manual.
To enable auto syntax highlighting when opening a file you can associate your new lexer with a set of file extensions by adding a corresponding entry into the table found at the end of the vis.lua file.
Changes to existing lexers should also be sent upstream for consideration.
A template for new lexers:
-- ? LPeg lexer.
local l = require('lexer')
local token, word_match = l.token, l.word_match
local P, R, S = lpeg.P, lpeg.R, lpeg.S
local M = {_NAME = '?'}
-- Whitespace.
local ws = token(l.WHITESPACE, l.space^1)
M._rules = {
{'whitespace', ws},
}
M._tokenstyles = {
}
return M
The ../themes
directory contains the color schemes. At startup the
default.lua
theme which should be a symlink to your prefered style is
used. Themes can be changed at runtime via the :set theme <name>
command where <name>
does not include the .lua
file extension.