diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-02-24 09:50:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-24 09:50:59 +0000 |
commit | c57af5d41cd039194dbd9c6fb5b68b377d2a5b59 (patch) | |
tree | 964cccb9f659a50b7bcb5194953b95b9682f4d14 | |
parent | 306e67358377cd17bb20104ec4f8d27619937ad6 (diff) | |
download | rneovim-c57af5d41cd039194dbd9c6fb5b68b377d2a5b59.tar.gz rneovim-c57af5d41cd039194dbd9c6fb5b68b377d2a5b59.tar.bz2 rneovim-c57af5d41cd039194dbd9c6fb5b68b377d2a5b59.zip |
feat(treesitter)!: remove silent option from language.add()
Simply use `pcall` if you want to silence an error.
-rw-r--r-- | runtime/doc/treesitter.txt | 5 | ||||
-rw-r--r-- | runtime/lua/vim/treesitter/language.lua | 32 | ||||
-rw-r--r-- | runtime/lua/vim/treesitter/languagetree.lua | 2 | ||||
-rw-r--r-- | test/functional/treesitter/language_spec.lua | 5 |
4 files changed, 14 insertions, 30 deletions
diff --git a/runtime/doc/treesitter.txt b/runtime/doc/treesitter.txt index ccb3c445df..76cde91920 100644 --- a/runtime/doc/treesitter.txt +++ b/runtime/doc/treesitter.txt @@ -686,11 +686,6 @@ add({lang}, {opts}) *vim.treesitter.language.add()* • path (string|nil) Optional path the parser is located at • symbol_name (string|nil) Internal symbol name for the language to load - • silent (boolean|nil) Don't throw an error if language not - found - - Return: ~ - (boolean) If the specified language is installed get_lang({filetype}) *vim.treesitter.language.get_lang()* Parameters: ~ diff --git a/runtime/lua/vim/treesitter/language.lua b/runtime/lua/vim/treesitter/language.lua index 8637d7d544..0796383bf5 100644 --- a/runtime/lua/vim/treesitter/language.lua +++ b/runtime/lua/vim/treesitter/language.lua @@ -13,11 +13,19 @@ end ---@deprecated function M.require_language(lang, path, silent, symbol_name) - return M.add(lang, { + local opts = { silent = silent, path = path, symbol_name = symbol_name, - }) + } + + if silent then + local installed = pcall(M.add, lang, opts) + return installed + end + + M.add(lang, opts) + return true end ---@class treesitter.RequireLangOpts @@ -38,20 +46,16 @@ end --- Defaults to lang. --- - path (string|nil) Optional path the parser is located at --- - symbol_name (string|nil) Internal symbol name for the language to load ---- - silent (boolean|nil) Don't throw an error if language not found ----@return boolean If the specified language is installed function M.add(lang, opts) ---@cast opts treesitter.RequireLangOpts opts = opts or {} local path = opts.path - local silent = opts.silent local filetype = opts.filetype or lang local symbol_name = opts.symbol_name vim.validate({ lang = { lang, 'string' }, path = { path, 'string', true }, - silent = { silent, 'boolean', true }, symbol_name = { symbol_name, 'string', true }, filetype = { filetype, { 'string', 'table' }, true }, }) @@ -64,32 +68,18 @@ function M.add(lang, opts) if path == nil then if not (lang and lang:match('[%w_]+') == lang) then - if silent then - return false - end error("'" .. lang .. "' is not a valid language name") end local fname = 'parser/' .. lang .. '.*' local paths = a.nvim_get_runtime_file(fname, false) if #paths == 0 then - if silent then - return false - end error("no parser for '" .. lang .. "' language, see :help treesitter-parsers") end path = paths[1] end - if silent then - if not pcall(vim._ts_add_language, path, lang, symbol_name) then - return false - end - else - vim._ts_add_language(path, lang, symbol_name) - end - - return true + vim._ts_add_language(path, lang, symbol_name) end --- Register a lang to be used for a filetype (or list of filetypes). diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index 122496cff3..7ec7bbfa12 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -184,7 +184,7 @@ function LanguageTree:parse() local seen_langs = {} ---@type table<string,boolean> for lang, injection_ranges in pairs(injections_by_lang) do - local has_lang = language.add(lang, { silent = true }) + local has_lang = pcall(language.add, lang) -- Child language trees should just be ignored if not found, since -- they can depend on the text of a node. Intermediate strings diff --git a/test/functional/treesitter/language_spec.lua b/test/functional/treesitter/language_spec.lua index a8831b9a9b..2cf18242ff 100644 --- a/test/functional/treesitter/language_spec.lua +++ b/test/functional/treesitter/language_spec.lua @@ -20,10 +20,9 @@ describe('treesitter language API', function() matches("Failed to load parser for language 'borklang': uv_dlopen: .+", pcall_err(exec_lua, "parser = vim.treesitter.add('borklang', { path = 'borkbork.so' })")) - -- Should not throw an error when silent - eq(false, exec_lua("return vim.treesitter.add('borklang', { silent = true })")) + eq(false, exec_lua("return pcall(vim.treesitter.add, 'borklang')")) - eq(false, exec_lua("return vim.treesitter.add('borklang', { path = 'borkbork.so', silent = true })")) + eq(false, exec_lua("return pcall(vim.treesitter.add, 'borklang', { path = 'borkbork.so' })")) eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", pcall_err(exec_lua, "parser = vim.treesitter.inspect_language('borklang')")) |