feat: treesitter plugin support

This commit is contained in:
Young Xu 2023-02-22 01:23:46 +08:00
parent 366a92962d
commit 19ce2929b0
Signed by: xuthus5
GPG Key ID: A23CF9620CBB55F9
5 changed files with 76 additions and 42 deletions

View File

@ -2,7 +2,7 @@
一个neovim配置
### usage hello world me help, good.
### usage
安装插件管理工具
@ -17,3 +17,16 @@ git clone --depth 1 https://github.com/wbthomason/packer.nvim\
sudo dnf install fd-find ripgrep -y
go install github.com/jesseduffield/lazygit@latest
```
### 记忆项
代码折叠
- zo - 在光标下打开折叠
- zc - 在光标下关闭折叠
- za - 切换光标下打开、关闭状态
- zr - 将所有折叠打开一层
- zm - 将所有折叠关闭一层
- zR - 打开全部折叠
- zM - 关闭全部折叠

View File

@ -31,6 +31,8 @@ require("plugins.trouble")
require("plugins.aerial")
-- 跳转
require("plugins.leap")
-- 代码高亮
require("plugins.treesitter")
-- LSP管理
require("plugins.mason")
require("lsp.init")

View File

@ -74,3 +74,9 @@ vim.opt.swapfile = false
vim.opt.writebackup = false
vim.opt.undofile = true
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
-- 开启 Folding
vim.wo.foldmethod = "expr"
vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
-- 默认不要折叠
-- https://stackoverflow.com/questions/8316139/how-to-set-the-default-to-unfolded-when-you-open-a-file
vim.wo.foldlevel = 99

View File

@ -32,6 +32,7 @@ map("x", "<A-j>", ":move '>+1<CR>gv-gv", noreopt)
map("x", "<A-k>", ":move '<-2<CR>gv-gv", noreopt)
-- 快所退出
map("n", "q", ":wq<CR>", noreopt)
map("n", "qn", ":q!<CR>", noreopt)
map("n", "qq", ":qa!<CR>", noreopt)
map("i", "jk", "<ESC>", noreopt)
-- git 管理

View File

@ -1,42 +1,54 @@
require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all" (the four listed parsers should always be installed)
ensure_installed = { "c", "lua", "vim", "help", "go" },
require("nvim-treesitter.configs").setup({
-- A list of parser names, or "all" (the four listed parsers should always be installed)
ensure_installed = {
"bash",
"c",
"css",
"dart",
"dockerfile",
"gitignore",
"go",
"gomod",
"gosum",
"gowork",
"help",
"html",
"java",
"javascript",
"json",
"lua",
"markdown",
"rust",
"toml",
"typescript",
"vim",
"vue",
"yaml",
},
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = true,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
-- List of parsers to ignore installing (for "all")
ignore_install = {},
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
-- List of parsers to ignore installing (for "all")
ignore_install = { "javascript" },
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
highlight = {
-- `false` will disable the whole extension
enable = true,
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
-- the name of the parser)
-- list of language that will be disabled
disable = { },
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
disable = function(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
},
}
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<CR>",
node_incremental = "<CR>",
node_decremental = "<BS>",
scope_incremental = "<TAB>",
},
},
indent = {
enable = true,
},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
})