Skip to content

Commit dee23b4

Browse files
committed
fix(ai): update tree-sitter textobject to use correct language in error
1 parent e385477 commit dee23b4

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

lua/mini/ai.lua

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,7 @@ H.get_matched_ranges_builtin = function(captures)
15661566

15671567
-- Get query file depending on the local language
15681568
local query = vim.treesitter.query.get(lang, 'textobjects')
1569-
if query == nil then H.error_treesitter('query') end
1569+
if query == nil then H.error_treesitter('query', lang) end
15701570

15711571
-- Compute ranges of matched captures
15721572
local capture_is_requested = vim.tbl_map(function(c) return vim.tbl_contains(captures, '@' .. c) end, query.captures)
@@ -1602,10 +1602,12 @@ H.get_nodes_range_builtin = function(nodes, buf_id, metadata)
16021602
return { left[1], left[2], left[3], right[4], right[5], right[6] }
16031603
end
16041604

1605-
H.error_treesitter = function(failed_get)
1605+
H.error_treesitter = function(failed_get, lang)
16061606
local buf_id, ft = vim.api.nvim_get_current_buf(), vim.bo.filetype
1607-
local has_lang, lang = pcall(vim.treesitter.language.get_lang, ft)
1608-
lang = has_lang and lang or ft
1607+
if lang == nil then
1608+
local has_lang, ft_lang = pcall(vim.treesitter.language.get_lang, ft)
1609+
lang = has_lang and ft_lang or ft
1610+
end
16091611
local msg = string.format('Can not get %s for buffer %d and language "%s".', failed_get, buf_id, lang)
16101612
H.error(msg)
16111613
end

tests/test_ai.lua

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -883,18 +883,28 @@ T['gen_spec']['treesitter()']['validates builtin treesitter presence'] = functio
883883
'%(mini%.ai%) Can not get query for buffer 1 and language "vim"%.'
884884
)
885885

886+
-- - Should show local language in error message
887+
child.cmd('edit tmp.lua')
888+
set_lines({ 'vim.cmd([[', 'setlocal cursorline', ']])' })
889+
set_cursor(2, 0)
890+
expect.error(
891+
function() child.lua('MiniAi.find_textobject("a", "F")') end,
892+
'%(mini%.ai%) Can not get query for buffer 2 and language "vim"%.'
893+
)
894+
886895
-- Parser
896+
child.cmd('enew')
887897
child.bo.filetype = 'aaa'
888898
expect.error(
889899
function() child.lua('MiniAi.find_textobject("a", "F")') end,
890-
'%(mini%.ai%) Can not get parser for buffer 1 and language "aaa"%.'
900+
'%(mini%.ai%) Can not get parser for buffer 3 and language "aaa"%.'
891901
)
892902

893903
-- - Should respect registered language for a filetype
894904
child.lua('vim.treesitter.language.register("my_aaa", "aaa")')
895905
expect.error(
896906
function() child.lua('MiniAi.find_textobject("a", "F")') end,
897-
'%(mini%.ai%) Can not get parser for buffer 1 and language "my_aaa"%.'
907+
'%(mini%.ai%) Can not get parser for buffer 3 and language "my_aaa"%.'
898908
)
899909
end
900910

0 commit comments

Comments
 (0)