diff options
| author | Kiyan Yazdani <yazdani.kiyan@protonmail.com> | 2020-04-22 22:22:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-22 22:22:46 +0200 |
| commit | ee5e88dca242a3c9143b69af5811f5152175f574 (patch) | |
| tree | 0733f9d1bcd18f3afb853a74be77fb656d9bf1aa | |
| parent | Merge pull request #20 from kyazdani42/fix-readme (diff) | |
| parent | highlight: retain highlighters with the buffers (diff) | |
| download | nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar.gz nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar.bz2 nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar.lz nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar.xz nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.tar.zst nvim-treesitter-ee5e88dca242a3c9143b69af5811f5152175f574.zip | |
Merge pull request #7 from vigoux/feature/highlight
Syntax highlighting
| -rw-r--r-- | lua/nvim-treesitter.lua | 3 | ||||
| -rw-r--r-- | lua/nvim-treesitter/highlight.lua | 19 | ||||
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 2 | ||||
| -rw-r--r-- | queries/lua/highlights.scm | 60 |
4 files changed, 83 insertions, 1 deletions
diff --git a/lua/nvim-treesitter.lua b/lua/nvim-treesitter.lua index 8f2fa05ed..b053f39b0 100644 --- a/lua/nvim-treesitter.lua +++ b/lua/nvim-treesitter.lua @@ -3,6 +3,7 @@ local parsers = require'nvim-treesitter.parsers' local configs = require 'nvim-treesitter.configs' local install = require'nvim-treesitter.install' local locals = require'nvim-treesitter.locals' +local highlight = require'nvim-treesitter.highlight' local M = {} @@ -14,6 +15,8 @@ end -- this is the main interface through the plugin function M.setup(lang) if parsers.has_parser(lang) then + local autocmd = "autocmd NvimTreesitter FileType %s lua require'nvim-treesitter.highlight'.setup()" + api.nvim_command(string.format(autocmd, lang)) end end diff --git a/lua/nvim-treesitter/highlight.lua b/lua/nvim-treesitter/highlight.lua new file mode 100644 index 000000000..110954a6a --- /dev/null +++ b/lua/nvim-treesitter/highlight.lua @@ -0,0 +1,19 @@ +local api = vim.api +local queries = require'nvim-treesitter.query' +local ts = vim.treesitter + +local M = { + highlighters={} +} + +function M.setup(bufnr, ft) + local buf = bufnr or api.nvim_get_current_buf() + local ft = ft or api.nvim_buf_get_option(buf, 'ft') + + local query = queries.get_query(ft, "highlights") + if not query then return end + + M.highlighters[buf] = ts.TSHighlighter.new(query, buf, ft) +end + +return M diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index e9f671f93..277c29697 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -62,7 +62,7 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) local preds = query.info.patterns[pattern] if preds then for _, pred in pairs(preds) do - if pred[1] == "set!" and pred[2] ~= nil then + if pred[1] == "set!" and type(pred[2]) == "string" then insert_to_path(prepared_match, split(pred[2]), pred[3]) end end diff --git a/queries/lua/highlights.scm b/queries/lua/highlights.scm new file mode 100644 index 000000000..4ce331fa6 --- /dev/null +++ b/queries/lua/highlights.scm @@ -0,0 +1,60 @@ +;;; Highlighting for lua + +;;; Builtins +;; Keywords +"local" @keyword +"if" @keyword +"then" @keyword +"else" @keyword +"elseif" @keyword +"end" @keyword +"return" @keyword +"do" @keyword +"while" @keyword +"repeat" @keyword +"for" @keyword +(break_statement) @keyword +"goto" @keyword + +;; Operators +"~=" @operator +"==" @operator +"<=" @operator +">=" @operator +"not" @operator +"and" @operator +"or" @operator +"<" @operator +">" @operator + +"+" @operator +"-" @operator +"%" @operator +"/" @operator +"//" @operator +"*" @operator +"^" @operator +"&" @operator +"~" @operator +"|" @operator +">>" @operator +"<<" @operator +".." @operator +"#" @operator + +;; Constants +(false) @constant +(true) @constant +(nil) @constant +(spread) @constant ;; "..." + +;; Nodes +(function "function" @function "end" @function) +(table "{" @operator "}" @operator) +(comment) @comment +(string) @string +(number) @number +(label_statement) @label + +;; Error +(ERROR) @Error |
