vim.go

 1package v
 2
 3import (
 4	. "github.com/alecthomas/chroma" // nolint
 5	"github.com/alecthomas/chroma/lexers/internal"
 6	. "github.com/alecthomas/chroma/lexers/p" // nolint
 7)
 8
 9// Viml lexer.
10var Viml = internal.Register(MustNewLexer(
11	&Config{
12		Name:      "VimL",
13		Aliases:   []string{"vim"},
14		Filenames: []string{"*.vim", ".vimrc", ".exrc", ".gvimrc", "_vimrc", "_exrc", "_gvimrc", "vimrc", "gvimrc"},
15		MimeTypes: []string{"text/x-vim"},
16	},
17	Rules{
18		"root": {
19			{`^([ \t:]*)(py(?:t(?:h(?:o(?:n)?)?)?)?)([ \t]*)(<<)([ \t]*)(.*)((?:\n|.)*)(\6)`, ByGroups(UsingSelf("root"), Keyword, Text, Operator, Text, Text, Using(Python), Text), nil},
20			{`^([ \t:]*)(py(?:t(?:h(?:o(?:n)?)?)?)?)([ \t])(.*)`, ByGroups(UsingSelf("root"), Keyword, Text, Using(Python)), nil},
21			{`^\s*".*`, Comment, nil},
22			{`[ \t]+`, Text, nil},
23			{`/(\\\\|\\/|[^\n/])*/`, LiteralStringRegex, nil},
24			{`"(\\\\|\\"|[^\n"])*"`, LiteralStringDouble, nil},
25			{`'(''|[^\n'])*'`, LiteralStringSingle, nil},
26			{`(?<=\s)"[^\-:.%#=*].*`, Comment, nil},
27			{`-?\d+`, LiteralNumber, nil},
28			{`#[0-9a-f]{6}`, LiteralNumberHex, nil},
29			{`^:`, Punctuation, nil},
30			{`[()<>+=!|,~-]`, Punctuation, nil},
31			{`\b(let|if|else|endif|elseif|fun|function|endfunction)\b`, Keyword, nil},
32			{`\b(NONE|bold|italic|underline|dark|light)\b`, NameBuiltin, nil},
33			{`\b\w+\b`, NameOther, nil},
34			{`.`, Text, nil},
35		},
36	},
37))