diff --git a/group_vars/all/neovim.yml b/group_vars/all/neovim.yml index a7b1d8c..767a4b7 100644 --- a/group_vars/all/neovim.yml +++ b/group_vars/all/neovim.yml @@ -22,14 +22,14 @@ neovim_plugins: name: "cmp-nvim-lua" - url: "https://github.com/nvim-treesitter/nvim-treesitter" name: "nvim-treesitter" - version: main + version: master # main seems broken? - url: "https://github.com/nvim-lua/plenary.nvim" name: "plenary.nvim" - url: "https://github.com/nvim-telescope/telescope-fzf-native.nvim" name: "telescope-fzf-native.nvim" - url: "https://github.com/nvim-telescope/telescope.nvim" name: "telescope.nvim" - version: "v0.2.2" + version: "0.1.x" - url: "https://github.com/L3MON4D3/LuaSnip" name: "luasnip" version: "v1.0.0" diff --git a/tasks/neovim.yml b/tasks/neovim.yml index f574e65..3303d3a 100644 --- a/tasks/neovim.yml +++ b/tasks/neovim.yml @@ -102,7 +102,7 @@ dest: "{{ xdg_config_dir }}/nvim/lua/options.lua" - src: "templates/nvim/lua/tree-sitter.lua.j2" - dest: "{{ xdg_config_dir }}/nvim/lua/_tree-sitter.lua" + dest: "{{ xdg_config_dir }}/nvim/lua/tree-sitter.lua" - src: "templates/nvim/lua/git-signs.lua.j2" dest: "{{ xdg_config_dir }}/nvim/lua/git-signs.lua" diff --git a/templates/nvim/init.lua.j2 b/templates/nvim/init.lua.j2 index 8c2d7e9..a18b81c 100644 --- a/templates/nvim/init.lua.j2 +++ b/templates/nvim/init.lua.j2 @@ -4,7 +4,7 @@ require('options') require('_filetype') require('colorscheme') require('lsp') -require('_tree-sitter') +require('tree-sitter') require('git-signs') require('_telescope') require('indent-blankline') diff --git a/templates/nvim/lua/tree-sitter.lua.j2 b/templates/nvim/lua/tree-sitter.lua.j2 index 1ee1701..d1730ad 100644 --- a/templates/nvim/lua/tree-sitter.lua.j2 +++ b/templates/nvim/lua/tree-sitter.lua.j2 @@ -1,31 +1,26 @@ -- {{ ansible_managed }} +-- Tree sitter language parsers are installed automatically (through `auto_install`). -- To update installed parsers use `:TSUpdate {language}`. -- See https://github.com/nvim-treesitter/nvim-treesitter for more info. -local tree_sitter_config = require('nvim-treesitter') +local tree_sitter_config = require('nvim-treesitter.configs') -local ensure_installed = { - 'lua', 'yaml', 'bash', 'python', 'javascript', 'typescript', 'jsx', 'css', 'scss', - 'html', 'htmldjango', 'sql', 'json', 'dockerfile', 'markdown', 'rst', 'tmux', - 'xml', 'toml', 'editorconfig', 'diff', 'gitcommit', 'git_config', 'gitignore', - 'gitattributes', 'make', 'nginx', 'vim', 'vimdoc', 'passwd', 'regex' +tree_sitter_config.setup { + ensure_installed = { + 'lua', 'yaml', 'bash', 'python', 'javascript', 'typescript', 'css', 'scss', + 'html', 'htmldjango', 'sql', 'json', 'dockerfile', 'markdown', 'rst', 'tmux', + 'xml', 'toml', 'editorconfig', 'diff', 'gitcommit', 'git_config', 'gitignore', + 'gitattributes', 'make', 'nginx', 'vim', 'vimdoc', 'passwd', 'regex' + }, + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, + indent = { + enable = true, + }, + incremental_selection = { + enable = true, + }, } - -local already_installed = require('nvim-treesitter.config').get_installed() -local parsers_to_install = vim.iter(ensure_installed) - :filter(function(parser) return not vim.tbl_contains(already_installed, parser) end) - :totable() - -tree_sitter_config.install(parsers_to_install) - -vim.api.nvim_create_autocmd('FileType', { - callback = function() - -- Enable treesitter highlighting and disable regex syntax - pcall(vim.treesitter.start) - -- folds, provided by Neovim - vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' - vim.wo.foldmethod = 'expr' - -- indentation, provided by nvim-treesitter - vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" - end, -})