diff --git a/README.md b/README.md
index 4113950550d..a2d18005c8c 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,7 @@ External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation),
[fd-find](https://github.com/sharkdp/fd#installation)
+- [tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on the platform)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
@@ -185,7 +186,7 @@ winget install --accept-source-agreements chocolatey.chocolatey
2. install all requirements using choco, exit the previous cmd and
open a new one so that choco path is set, and run in cmd as **admin**:
```
-choco install -y neovim git ripgrep wget fd unzip gzip mingw make
+choco install -y neovim git ripgrep wget fd unzip gzip mingw make tree-sitter
```
WSL (Windows Subsystem for Linux)
@@ -195,7 +196,7 @@ wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip neovim
+sudo apt install make gcc ripgrep fd-find treesitter-cli unzip git xclip neovim
```
@@ -205,14 +206,14 @@ sudo apt install make gcc ripgrep unzip git xclip neovim
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip neovim
+sudo apt install make gcc ripgrep fd-find treesitter-cli unzip git xclip neovim
```
Debian Install Steps
```
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip curl
+sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip curl
# Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
@@ -228,14 +229,14 @@ sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/
Fedora Install Steps
```
-sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
+sudo dnf install -y gcc make git ripgrep fd-find tree-sitter-cli unzip neovim
```
Arch Install Steps
```
-sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
+sudo pacman -S --noconfirm --needed gcc make git ripgrep fd tree-sitter-cli unzip neovim
```
diff --git a/init.lua b/init.lua
index b98ffc6198a..282803c6f3b 100644
--- a/init.lua
+++ b/init.lua
@@ -940,28 +940,34 @@ require('lazy').setup({
},
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
+ lazy = false,
build = ':TSUpdate',
- main = 'nvim-treesitter.configs', -- Sets main module to use for opts
- -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
- opts = {
- ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
- -- Autoinstall languages that are not installed
- auto_install = true,
- highlight = {
- enable = true,
- -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
- -- If you are experiencing weird indenting issues, add the language to
- -- the list of additional_vim_regex_highlighting and disabled languages for indent.
- additional_vim_regex_highlighting = { 'ruby' },
- },
- indent = { enable = true, disable = { 'ruby' } },
- },
+ branch = 'main',
+ -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
+ config = function()
+ local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
+ require('nvim-treesitter').install(parsers)
+
+ vim.api.nvim_create_autocmd('FileType', {
+ pattern = parsers,
+ callback = function()
+ -- enables syntax highlighting and other treesitter features
+ vim.treesitter.start()
+
+ -- enables treesitter based folds
+ -- for more info on folds see `:help folds`
+ -- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
+
+ -- enables treesitter based indentation
+ vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
+ end,
+ })
+ end,
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
- -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
- -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
+ -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects (using the `main` branch)
},
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the