diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-03-30 10:26:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-30 10:26:28 +0100 |
commit | 61e54f26361b2e7d08eabde9a4cbf42aaa41683b (patch) | |
tree | deb9d00e4a01a771fde08f777af2fa6054479d17 /runtime/lua/vim/treesitter.lua | |
parent | 8b7fb668e440f7793564b764bc9a691e3f45382a (diff) | |
download | rneovim-61e54f26361b2e7d08eabde9a4cbf42aaa41683b.tar.gz rneovim-61e54f26361b2e7d08eabde9a4cbf42aaa41683b.tar.bz2 rneovim-61e54f26361b2e7d08eabde9a4cbf42aaa41683b.zip |
feat: add `vim.treesitter.language.get_filetypes()` (#22643)
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r-- | runtime/lua/vim/treesitter.lua | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua index 4c3b17daa4..2594c1672d 100644 --- a/runtime/lua/vim/treesitter.lua +++ b/runtime/lua/vim/treesitter.lua @@ -58,9 +58,6 @@ function M._create_parser(bufnr, lang, opts) vim.fn.bufload(bufnr) - local ft = vim.bo[bufnr].filetype - M.language.add(lang, { filetype = ft ~= '' and ft or nil }) - local self = LanguageTree.new(bufnr, lang, opts) ---@private @@ -94,7 +91,12 @@ function M._create_parser(bufnr, lang, opts) return self end ---- Returns the parser for a specific buffer and filetype and attaches it to the buffer +--- @private +local function valid_lang(lang) + return lang and lang ~= '' +end + +--- Returns the parser for a specific buffer and attaches it to the buffer --- --- If needed, this will create the parser. --- @@ -110,18 +112,12 @@ function M.get_parser(bufnr, lang, opts) bufnr = a.nvim_get_current_buf() end - if lang == nil then - local ft = vim.bo[bufnr].filetype - if ft ~= '' then - lang = M.language.get_lang(ft) or ft - -- TODO(lewis6991): we should error here and not default to ft - -- if not lang then - -- error(string.format('filetype %s of buffer %d is not associated with any lang', ft, bufnr)) - -- end - else - if parsers[bufnr] then - return parsers[bufnr] - end + if not valid_lang(lang) then + lang = M.language.get_lang(vim.bo[bufnr].filetype) or vim.bo[bufnr].filetype + end + + if not valid_lang(lang) then + if not parsers[bufnr] then error( string.format( 'There is no parser available for buffer %d and one could not be' @@ -131,9 +127,7 @@ function M.get_parser(bufnr, lang, opts) ) ) end - end - - if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then + elseif parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then parsers[bufnr] = M._create_parser(bufnr, lang, opts) end @@ -164,7 +158,6 @@ function M.get_string_parser(str, lang, opts) str = { str, 'string' }, lang = { lang, 'string' }, }) - M.language.add(lang) return LanguageTree.new(str, lang, opts) end |