aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTravonteD <tman1300@aol.com>2020-08-16 20:11:56 -0400
committerTravonteD <tman1300@aol.com>2020-08-16 20:40:33 -0400
commit72905524c2ef78536dbe148f311e634815ead40b (patch)
tree4f5bbe65d3aa4af51afe9e50e39fe061c22406f8
parentPython: update highlights (diff)
downloadnvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar.gz
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar.bz2
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar.lz
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar.xz
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.tar.zst
nvim-treesitter-72905524c2ef78536dbe148f311e634815ead40b.zip
Add fennel support
-rw-r--r--README.md1
-rw-r--r--lua/nvim-treesitter/parsers.lua7
-rw-r--r--queries/fennel/highlights.scm123
-rw-r--r--queries/fennel/locals.scm45
4 files changed, 176 insertions, 0 deletions
diff --git a/README.md b/README.md
index c8ce44e42..915fcf71a 100644
--- a/README.md
+++ b/README.md
@@ -252,6 +252,7 @@ List of currently supported languages:
- [x] css (maintained by @TravonteD)
- [x] dart (maintained by @Akin909)
- [ ] elm
+- [x] fennel (maintained by @TravonteD)
- [x] go (maintained by @theHamsta, @WinWisely268)
- [ ] haskell
- [x] html (maintained by @TravonteD)
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index c1b48a00d..38c6097ca 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -221,6 +221,13 @@ list.rst = {
}
}
+list.fennel = {
+ install_info = {
+ url = "https://github.com/travonted/tree-sitter-fennel",
+ files = { "src/parser.c" },
+ }
+}
+
-- Parsers for injections
list.regex = {
install_info = {
diff --git a/queries/fennel/highlights.scm b/queries/fennel/highlights.scm
new file mode 100644
index 000000000..f5f88962b
--- /dev/null
+++ b/queries/fennel/highlights.scm
@@ -0,0 +1,123 @@
+(boolean) @boolean
+(nil) @constant.builtin
+(string) @string
+(number) @number
+(field) @constant
+(comment) @comment
+(identifier) @variable
+
+[
+ "fn"
+ "lambda"
+ "hashfn"
+ "set"
+ "tset"
+ "λ"
+ "global"
+ "var"
+ "local"
+ "let"
+ "do"
+ "not"
+ "not="
+ "_ENV"
+ "_G"
+ "_VERSION"
+ "arg"
+ "assert"
+ "collectgarbage"
+ "coroutine"
+ "debug"
+ "dofile"
+ "doto"
+ "error"
+ "eval-compiler"
+ "gensym"
+ "getmetatable"
+ "in-scope?"
+ "ipairs"
+ "list"
+ "list?"
+ "load"
+ "loadfile"
+ "loadstring"
+ "match"
+ "macro"
+ "macrodebug"
+ "macroexpand"
+ "macros"
+ "multi-sym?"
+ "next"
+ "pairs"
+ "package"
+ "pcall"
+ "print"
+ "rawequal"
+ "rawget"
+ "rawlen"
+ "rawset"
+ "select"
+ "sequence?"
+ "setmetatable"
+ "string"
+ "sym"
+ "sym?"
+ "table"
+ "table?"
+ "tonumber"
+ "tostring"
+ "type"
+ "unpack"
+ "varg?"
+ "xpcall"
+] @keyword
+
+[
+ "require"
+ "require-macros"
+ "import-macros"
+ "include"
+ ] @include
+
+[
+ "each"
+ "for"
+ "while"
+] @repeat
+
+[
+ "if"
+ "when"
+] @conditional
+
+[
+ "("
+ ")"
+ "{"
+ "}"
+ "["
+ "]"
+] @punctuation.bracket
+
+; hash function
+"#" @function
+
+(function_definition
+ name: (identifier) @function)
+
+(lambda_definition
+ name: (identifier) @function)
+
+(function_call
+ name: (identifier) @function)
+
+(field_expression
+ (identifier)
+ "." @punctuation.delimiter
+ (identifier) @function)
+
+(field_expression
+ (identifier)
+ (field) @function)
+
+(parameters (identifier) @parameter)
diff --git a/queries/fennel/locals.scm b/queries/fennel/locals.scm
new file mode 100644
index 000000000..fb260596b
--- /dev/null
+++ b/queries/fennel/locals.scm
@@ -0,0 +1,45 @@
+; Scope
+[
+ (program)
+ (function_definition)
+ (lambda_definition)
+ (let_definition)
+] @scope
+
+; Functions
+(function_definition
+ name: (identifier) @definition.function)
+(lambda_definition
+ name: (identifier) @definition.function)
+
+; Variable Definitions
+(local_definition
+ (assignment
+ (identifier) @definition.var))
+(var_definition
+ (assignment
+ (identifier) @definition.var))
+(global_definition
+ (assignment
+ (identifier) @definition.var))
+(assignment
+ (identifier) @definition.var)
+(multi_value_assignment
+ (value_list
+ (identifier) @definition.var))
+(parameters
+ ((identifier) @definition.var))
+; iterators/loops
+((each
+ (each_clause
+ (identifier) @definition.var)) @scope)
+((for
+ (for_clause
+ (identifier) @definition.var)) @scope)
+
+; references
+(set
+ (assignment (identifier) @reference))
+(function_call
+ name: (identifier) @reference)
+(identifier) @reference