mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
parent
89cccea167
commit
6d4f481821
@ -47,7 +47,8 @@ function M._create_parser(bufnr, lang, opts)
|
|||||||
|
|
||||||
vim.fn.bufload(bufnr)
|
vim.fn.bufload(bufnr)
|
||||||
|
|
||||||
language.add(lang, { filetype = vim.bo[bufnr].filetype })
|
local ft = vim.bo[bufnr].filetype
|
||||||
|
language.add(lang, { filetype = ft ~= '' and ft or nil })
|
||||||
|
|
||||||
local self = LanguageTree.new(bufnr, lang, opts)
|
local self = LanguageTree.new(bufnr, lang, opts)
|
||||||
|
|
||||||
|
@ -60,6 +60,16 @@ function M.add(lang, opts)
|
|||||||
filetype = { filetype, { 'string', 'table' }, true },
|
filetype = { filetype, { 'string', 'table' }, true },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if filetype == '' then
|
||||||
|
error(string.format("'%s' is not a valid filetype", filetype))
|
||||||
|
elseif type(filetype) == 'table' then
|
||||||
|
for _, f in ipairs(filetype) do
|
||||||
|
if f == '' then
|
||||||
|
error(string.format("'%s' is not a valid filetype", filetype))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
M.register(lang, filetype or lang)
|
M.register(lang, filetype or lang)
|
||||||
|
|
||||||
if vim._ts_has_language(lang) then
|
if vim._ts_has_language(lang) then
|
||||||
|
@ -33,7 +33,12 @@ describe('treesitter language API', function()
|
|||||||
|
|
||||||
it('shows error for invalid language name', function()
|
it('shows error for invalid language name', function()
|
||||||
eq(".../language.lua:0: '/foo/' is not a valid language name",
|
eq(".../language.lua:0: '/foo/' is not a valid language name",
|
||||||
pcall_err(exec_lua, 'vim.treesitter.add("/foo/", nil, false)'))
|
pcall_err(exec_lua, 'vim.treesitter.add("/foo/")'))
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('shows error for invalid filetype', function()
|
||||||
|
eq('.../language.lua:0: \'\' is not a valid filetype',
|
||||||
|
pcall_err(exec_lua, [[vim.treesitter.add('foo', { filetype = '' })]]))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('inspects language', function()
|
it('inspects language', function()
|
||||||
|
@ -4,6 +4,7 @@ local clear = helpers.clear
|
|||||||
local eq = helpers.eq
|
local eq = helpers.eq
|
||||||
local insert = helpers.insert
|
local insert = helpers.insert
|
||||||
local exec_lua = helpers.exec_lua
|
local exec_lua = helpers.exec_lua
|
||||||
|
local pcall_err = helpers.pcall_err
|
||||||
local feed = helpers.feed
|
local feed = helpers.feed
|
||||||
local is_os = helpers.is_os
|
local is_os = helpers.is_os
|
||||||
local skip = helpers.skip
|
local skip = helpers.skip
|
||||||
@ -124,6 +125,16 @@ void ui_refresh(void)
|
|||||||
}, res)
|
}, res)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('does not get parser for empty filetype', function()
|
||||||
|
insert(test_text);
|
||||||
|
|
||||||
|
eq(".../language.lua:0: '' is not a valid filetype",
|
||||||
|
pcall_err(exec_lua, 'vim.treesitter.get_parser(0)'))
|
||||||
|
|
||||||
|
-- Must provide language for buffers with an empty filetype
|
||||||
|
exec_lua("vim.treesitter.get_parser(0, 'c')")
|
||||||
|
end)
|
||||||
|
|
||||||
it('allows to get a child by field', function()
|
it('allows to get a child by field', function()
|
||||||
insert(test_text);
|
insert(test_text);
|
||||||
|
|
||||||
@ -874,9 +885,10 @@ int x = INT_MAX;
|
|||||||
|
|
||||||
it("can fold via foldexpr", function()
|
it("can fold via foldexpr", function()
|
||||||
insert(test_text)
|
insert(test_text)
|
||||||
exec_lua([[vim.treesitter.get_parser(0, "c")]])
|
|
||||||
|
|
||||||
local levels = exec_lua([[
|
local levels = exec_lua([[
|
||||||
|
vim.opt.filetype = 'c'
|
||||||
|
vim.treesitter.get_parser(0, "c")
|
||||||
local res = {}
|
local res = {}
|
||||||
for i = 1, vim.api.nvim_buf_line_count(0) do
|
for i = 1, vim.api.nvim_buf_line_count(0) do
|
||||||
res[i] = vim.treesitter.foldexpr(i)
|
res[i] = vim.treesitter.foldexpr(i)
|
||||||
|
Loading…
Reference in New Issue
Block a user