feat: add support for vim

This commit is contained in:
Thomas Vigouroux 2021-04-18 09:57:02 +02:00 committed by Stephan Seitz
parent 9c5dd185c4
commit 1877e03bfa
4 changed files with 124 additions and 0 deletions

View file

@ -210,6 +210,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [x] [turtle](https://github.com/BonaBeavis/tree-sitter-turtle) (maintained by @bonabeavis)
- [x] [typescript](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka)
- [x] [verilog](https://github.com/tree-sitter/tree-sitter-verilog) (maintained by @zegervdv)
- [x] [vim](https://github.com/vigoux/tree-sitter-viml) (maintained by @vigoux)
- [x] [vue](https://github.com/ikatyang/tree-sitter-vue) (maintained by @WhyNotHugo)
- [x] [yaml](https://github.com/ikatyang/tree-sitter-yaml) (maintained by @stsewd)
- [x] [yang](https://github.com/Hubro/tree-sitter-yang) (maintained by @Hubro)

View file

@ -656,6 +656,15 @@ list.cmake = {
maintainers = { "@uyha" },
}
list.vim = {
install_info = {
url = "https://github.com/vigoux/tree-sitter-viml",
files = { "src/parser.c", "src/scanner.c" },
},
filetype = "vim",
maintainers = { "@vigoux" },
}
local M = {
list = list,
}

105
queries/vim/highlights.scm Normal file
View file

@ -0,0 +1,105 @@
;; Keywords
[
"if"
"else"
"elseif"
"endif"
] @conditional
[
"try"
"catch"
"finally"
"endtry"
"throw"
] @exception
[
"for"
"endfor"
"in"
"while"
"endwhile"
] @repeat
[
"function"
"endfunction"
] @keyword.function
;; Function related
(function_declaration name: (_) @function)
(call_expression function: (identifier) @function)
[ (bang) (spread) ] @punctuation.special
[ (no_option) (inv_option) (default_option) (option_name) ] @variable.builtin
[ (scope) "a:" ] @namespace
(ternary_expression ["?" ":"] @conditional)
;; Commands and user defined commands
[
"let"
"unlet"
"call"
"execute"
"normal"
"set"
"silent"
"echo"
"autocmd"
"return"
"lua"
"ruby"
"perl"
"python"
] @keyword
(command_name) @function.macro
(au_event) @constant
(normal_statement (commands) @constant)
;; Literals
(string_literal) @string
(integer_literal) @number
(float_literal) @float
(comment) @comment
(pattern) @string.special
;; Operators
[
"||"
"&&"
"+"
"-"
"*"
"/"
"%"
".."
"is"
"isnot"
"=="
"!="
">"
">="
"<"
"<="
"=~"
"!~"
"="
"+="
"-="
"*="
"/="
"%="
".="
] @operator
; Some characters have different meanings based on the context
(unary_operation "!" @operator)
(binary_operation "." @operator)

View file

@ -0,0 +1,9 @@
(lua_statement . (_) @lua)
(ruby_statement . (_) @ruby)
(python_statement . (_) @python)
;; If we support perl at some point...
;; (perl_statement . (_) @perl)
(autocmd_statement (pattern) @regex)
(comment) @comment