mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-18 11:20:07 -04:00
feat(install): add "maintained" option to only install maintained parsers
Unmaintained parsers only give users little benefit but take sometimes a a long time to install (e.g. Markdown, Julia, Haskell parser). We could recommend to only install maintained parsers by default.
This commit is contained in:
parent
04ff77442a
commit
c3b526fe51
5 changed files with 16 additions and 5 deletions
|
|
@ -106,7 +106,7 @@ so you'll need to activate them by putting this in your `init.vim` file:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
require'nvim-treesitter.configs'.setup {
|
require'nvim-treesitter.configs'.setup {
|
||||||
ensure_installed = "all", -- one of "all", "language", or a list of languages
|
ensure_installed = "maintained", -- one of "all", "maintained" (parsers with maintainers), or a list of languages
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true, -- false will disable the whole extension
|
enable = true, -- false will disable the whole extension
|
||||||
disable = { "c", "rust" }, -- list of language that will be disabled
|
disable = { "c", "rust" }, -- list of language that will be disabled
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,11 @@ function! nvim_treesitter#foldexpr() abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! nvim_treesitter#installable_parsers(arglead, cmdline, cursorpos) abort
|
function! nvim_treesitter#installable_parsers(arglead, cmdline, cursorpos) abort
|
||||||
return join(luaeval("require'nvim-treesitter.parsers'.available_parsers()") + ['all'], "\n")
|
return join(luaeval("require'nvim-treesitter.parsers'.available_parsers()") + ['all', 'maintained'], "\n")
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! nvim_treesitter#installed_parsers(arglead, cmdline, cursorpos) abort
|
function! nvim_treesitter#installed_parsers(arglead, cmdline, cursorpos) abort
|
||||||
return join(luaeval("require'nvim-treesitter.info'.installed_parsers()") + ['all'], "\n")
|
return join(luaeval("require'nvim-treesitter.info'.installed_parsers()") + ['all', 'maintained'], "\n")
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! nvim_treesitter#available_modules(arglead, cmdline, cursorpos) abort
|
function! nvim_treesitter#available_modules(arglead, cmdline, cursorpos) abort
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ To enable supported features, put this in your `init.vim` file:
|
||||||
>
|
>
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
require'nvim-treesitter.configs'.setup {
|
require'nvim-treesitter.configs'.setup {
|
||||||
ensure_installed = "all", -- one of "all", "language", or a list of languages
|
ensure_installed = "maintained", -- one of "all", "maintained" (parsers with maintainers), or a list of languages
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true, -- false will disable the whole extension
|
enable = true, -- false will disable the whole extension
|
||||||
disable = { "c", "rust" }, -- list of language that will be disabled
|
disable = { "c", "rust" }, -- list of language that will be disabled
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,9 @@ local function install(with_sync, ask_reinstall)
|
||||||
if ... == 'all' then
|
if ... == 'all' then
|
||||||
languages = parsers.available_parsers()
|
languages = parsers.available_parsers()
|
||||||
ask = false
|
ask = false
|
||||||
|
elseif ... == 'maintained' then
|
||||||
|
languages = parsers.maintained_parsers()
|
||||||
|
ask = false
|
||||||
else
|
else
|
||||||
languages = vim.tbl_flatten({...})
|
languages = vim.tbl_flatten({...})
|
||||||
ask = ask_reinstall
|
ask = ask_reinstall
|
||||||
|
|
@ -221,9 +224,13 @@ function M.uninstall(lang)
|
||||||
path_sep = '\\'
|
path_sep = '\\'
|
||||||
end
|
end
|
||||||
|
|
||||||
if lang == 'all' then
|
if vim.tbl_contains({'all', 'maintained'}, lang) then
|
||||||
reset_progress_counter()
|
reset_progress_counter()
|
||||||
local installed = info.installed_parsers()
|
local installed = info.installed_parsers()
|
||||||
|
if lang == "maintained" then
|
||||||
|
local maintained = parsers.maintained_parsers()
|
||||||
|
installed = vim.tbl_filter(function(l) return vim.tbl_contains(maintained, l) end, installed)
|
||||||
|
end
|
||||||
for _, lang in pairs(installed) do
|
for _, lang in pairs(installed) do
|
||||||
M.uninstall(lang)
|
M.uninstall(lang)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,10 @@ function M.available_parsers()
|
||||||
return vim.tbl_keys(M.list)
|
return vim.tbl_keys(M.list)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function M.maintained_parsers()
|
||||||
|
return vim.tbl_filter(function(lang) return M.list[lang].maintainers end, M.available_parsers())
|
||||||
|
end
|
||||||
|
|
||||||
function M.get_parser_configs()
|
function M.get_parser_configs()
|
||||||
return M.list
|
return M.list
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue