diff options
Diffstat (limited to 'runtime/queries/vim')
| -rw-r--r-- | runtime/queries/vim/folds.scm | 4 | ||||
| -rw-r--r-- | runtime/queries/vim/highlights.scm | 354 | ||||
| -rw-r--r-- | runtime/queries/vim/injections.scm | 44 | ||||
| -rw-r--r-- | runtime/queries/vim/locals.scm | 19 |
4 files changed, 421 insertions, 0 deletions
diff --git a/runtime/queries/vim/folds.scm b/runtime/queries/vim/folds.scm new file mode 100644 index 000000000..0a1fb695f --- /dev/null +++ b/runtime/queries/vim/folds.scm @@ -0,0 +1,4 @@ +[ + (if_statement) + (function_definition) +] @fold diff --git a/runtime/queries/vim/highlights.scm b/runtime/queries/vim/highlights.scm new file mode 100644 index 000000000..df7b3cf48 --- /dev/null +++ b/runtime/queries/vim/highlights.scm @@ -0,0 +1,354 @@ +(identifier) @variable + +((identifier) @constant + (#lua-match? @constant "^[A-Z][A-Z_0-9]*$")) + +; Keywords +[ + "if" + "else" + "elseif" + "endif" +] @keyword.conditional + +[ + "try" + "catch" + "finally" + "endtry" + "throw" +] @keyword.exception + +[ + "for" + "endfor" + "in" + "while" + "endwhile" + "break" + "continue" +] @keyword.repeat + +[ + "function" + "endfunction" +] @keyword.function + +; Function related +(function_declaration + name: (_) @function) + +(call_expression + function: (identifier) @function.call) + +(call_expression + function: (scoped_identifier + (identifier) @function.call)) + +(parameters + (identifier) @variable.parameter) + +(default_parameter + (identifier) @variable.parameter) + +[ + (bang) + (spread) +] @punctuation.special + +[ + (no_option) + (inv_option) + (default_option) + (option_name) +] @variable.builtin + +[ + (scope) + "a:" + "$" +] @module + +; Commands and user defined commands +[ + "let" + "unlet" + "const" + "call" + "execute" + "normal" + "set" + "setfiletype" + "setlocal" + "silent" + "echo" + "echon" + "echohl" + "echomsg" + "echoerr" + "autocmd" + "augroup" + "return" + "syntax" + "filetype" + "source" + "lua" + "ruby" + "perl" + "python" + "highlight" + "command" + "delcommand" + "comclear" + "colorscheme" + "scriptencoding" + "startinsert" + "stopinsert" + "global" + "runtime" + "wincmd" + "cnext" + "cprevious" + "cNext" + "vertical" + "leftabove" + "aboveleft" + "rightbelow" + "belowright" + "topleft" + "botright" + (unknown_command_name) + "edit" + "enew" + "find" + "ex" + "visual" + "view" + "eval" + "sign" + "abort" +] @keyword + +(map_statement + cmd: _ @keyword) + +(keycode) @character.special + +(command_name) @function.macro + +; Filetype command +(filetype_statement + [ + "detect" + "plugin" + "indent" + "on" + "off" + ] @keyword) + +; Syntax command +(syntax_statement + (keyword) @string) + +(syntax_statement + [ + "enable" + "on" + "off" + "reset" + "case" + "spell" + "foldlevel" + "iskeyword" + "keyword" + "match" + "cluster" + "region" + "clear" + "include" + ] @keyword) + +(syntax_argument + name: _ @keyword) + +[ + "<buffer>" + "<nowait>" + "<silent>" + "<script>" + "<expr>" + "<unique>" +] @constant.builtin + +(augroup_name) @module + +(au_event) @constant + +(normal_statement + (commands) @constant) + +; Highlight command +(hl_attribute + key: _ @property + val: _ @constant) + +(hl_group) @type + +(highlight_statement + [ + "default" + "link" + "clear" + ] @keyword) + +; Command command +(command) @string + +(command_attribute + name: _ @property + val: (behavior + name: _ @constant + val: (identifier)? @function)?) + +; Edit command +(plus_plus_opt + val: _? @constant) @property + +(plus_cmd + "+" @property) @property + +; Runtime command +(runtime_statement + (where) @keyword.operator) + +; Colorscheme command +(colorscheme_statement + (name) @string) + +; Scriptencoding command +(scriptencoding_statement + (encoding) @string.special) + +; Literals +(string_literal) @string + +(integer_literal) @number + +(float_literal) @number.float + +(comment) @comment @spell + +(line_continuation_comment) @comment @spell + +(pattern) @string.special + +(pattern_multi) @string.regexp + +(filename) @string.special.path + +(heredoc + (body) @string) + +(heredoc + (parameter) @keyword) + +[ + (marker_definition) + (endmarker) +] @label + +(literal_dictionary + (literal_key) @property) + +((scoped_identifier + (scope) @_scope + . + (identifier) @boolean) + (#eq? @_scope "v:") + (#any-of? @boolean "true" "false")) + +; Operators +[ + "||" + "&&" + "&" + "+" + "-" + "*" + "/" + "%" + ".." + "==" + "!=" + ">" + ">=" + "<" + "<=" + "=~" + "!~" + "=" + "^=" + "+=" + "-=" + "*=" + "/=" + "%=" + ".=" + "..=" + "<<" + "=<<" + "->" + (match_case) +] @operator + +[ + "is" + "isnot" +] @keyword.operator + +; Some characters have different meanings based on the context +(unary_operation + "!" @operator) + +(binary_operation + "." @operator) + +; Punctuation +[ + "(" + ")" + "{" + "}" + "[" + "]" + "#{" +] @punctuation.bracket + +(field_expression + "." @punctuation.delimiter) + +[ + "," + ":" +] @punctuation.delimiter + +(ternary_expression + [ + "?" + ":" + ] @keyword.conditional.ternary) + +; Options +((set_value) @number + (#lua-match? @number "^[%d]+(%.[%d]+)?$")) + +(inv_option + "!" @operator) + +(set_item + "?" @operator) + +((set_item + option: (option_name) @_option + value: (set_value) @function) + (#any-of? @_option "tagfunc" "tfu" "completefunc" "cfu" "omnifunc" "ofu" "operatorfunc" "opfunc")) diff --git a/runtime/queries/vim/injections.scm b/runtime/queries/vim/injections.scm new file mode 100644 index 000000000..30d11cbb4 --- /dev/null +++ b/runtime/queries/vim/injections.scm @@ -0,0 +1,44 @@ +(lua_statement + (script + (body) @injection.content + (#set! injection.language "lua"))) + +(lua_statement + (chunk) @injection.content + (#set! injection.language "lua")) + +(ruby_statement + (script + (body) @injection.content + (#set! injection.language "ruby"))) + +(ruby_statement + (chunk) @injection.content + (#set! injection.language "ruby")) + +(python_statement + (script + (body) @injection.content + (#set! injection.language "python"))) + +(python_statement + (chunk) @injection.content + (#set! injection.language "python")) + +; If we support perl at some point... +; (perl_statement (script (body) @perl)) +; (perl_statement (chunk) @perl) +(autocmd_statement + (pattern) @injection.content + (#set! injection.language "regex")) + +((set_item + option: (option_name) @_option + value: (set_value) @injection.content) + (#any-of? @_option + "includeexpr" "inex" "printexpr" "pexpr" "formatexpr" "fex" "indentexpr" "inde" "foldtext" "fdt" + "foldexpr" "fde" "diffexpr" "dex" "patchexpr" "pex" "charconvert" "ccv") + (#set! injection.language "vim")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/vim/locals.scm b/runtime/queries/vim/locals.scm new file mode 100644 index 000000000..870647279 --- /dev/null +++ b/runtime/queries/vim/locals.scm @@ -0,0 +1,19 @@ +[ + (script_file) + (function_definition) +] @local.scope + +(function_declaration + name: (identifier) @local.definition.function) + +(function_declaration + parameters: (parameters + (identifier) @local.definition.parameter)) + +(let_statement + [ + (scoped_identifier) + (identifier) + ] @local.definition.var) + +(identifier) @local.reference |
