aboutsummaryrefslogtreecommitdiffstats
path: root/queries/vim
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2021-04-18 09:57:02 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2021-08-16 15:09:53 +0200
commitf2076b267ef2d53c35a964a8752eef38d7040fd5 (patch)
tree01c38bbb969910c07da22299f3dbe605d6aa9fbb /queries/vim
parentLua: highlight uppercase variables as constants (#1690) (diff)
downloadnvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar.gz
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar.bz2
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar.lz
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar.xz
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.tar.zst
nvim-treesitter-f2076b267ef2d53c35a964a8752eef38d7040fd5.zip
feat: add support for vim
Diffstat (limited to 'queries/vim')
-rw-r--r--queries/vim/highlights.scm105
-rw-r--r--queries/vim/injections.scm9
2 files changed, 114 insertions, 0 deletions
diff --git a/queries/vim/highlights.scm b/queries/vim/highlights.scm
new file mode 100644
index 000000000..e10983d4f
--- /dev/null
+++ b/queries/vim/highlights.scm
@@ -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)
diff --git a/queries/vim/injections.scm b/queries/vim/injections.scm
new file mode 100644
index 000000000..de70ef169
--- /dev/null
+++ b/queries/vim/injections.scm
@@ -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