mirror of
https://github.com/neovim/neovim.git
synced 2026-06-16 08:41:15 +00:00
feat(treesitter): provide select()
Problem: No public method for treesitter incremental selection. Solution: Add `vim.treesitter.select()`.
This commit is contained in:
committed by
Justin M. Keyes
parent
cac643f0f5
commit
a0dcdcd8a0
@@ -12,6 +12,7 @@ local M = vim._defer_require('vim.treesitter', {
|
|||||||
language = ..., --- @module 'vim.treesitter.language'
|
language = ..., --- @module 'vim.treesitter.language'
|
||||||
languagetree = ..., --- @module 'vim.treesitter.languagetree'
|
languagetree = ..., --- @module 'vim.treesitter.languagetree'
|
||||||
query = ..., --- @module 'vim.treesitter.query'
|
query = ..., --- @module 'vim.treesitter.query'
|
||||||
|
_select = ..., --- @module 'vim.treesitter._select'
|
||||||
})
|
})
|
||||||
|
|
||||||
local LanguageTree = M.languagetree
|
local LanguageTree = M.languagetree
|
||||||
|
|||||||
@@ -23,14 +23,26 @@ local function set_filetype(ft)
|
|||||||
api.nvim_set_option_value('filetype', ft, { buf = 0 })
|
api.nvim_set_option_value('filetype', ft, { buf = 0 })
|
||||||
end
|
end
|
||||||
|
|
||||||
local function treeselect(cmd_, ...)
|
local function treeselect(cmd_, count_)
|
||||||
if cmd_ == 'select_node' then
|
if cmd_ == 'select_node' then
|
||||||
cmd_ = 'select_child'
|
cmd_ = 'child'
|
||||||
|
elseif cmd_ == 'select_child' then
|
||||||
|
cmd_ = 'child'
|
||||||
|
elseif cmd_ == 'select_parent' then
|
||||||
|
cmd_ = 'parent'
|
||||||
|
elseif cmd_ == 'select_next' then
|
||||||
|
cmd_ = 'next'
|
||||||
|
elseif cmd_ == 'select_prev' then
|
||||||
|
cmd_ = 'prev'
|
||||||
|
elseif cmd_ == 'select_grow_next' then
|
||||||
|
cmd_ = 'extend_next'
|
||||||
|
elseif cmd_ == 'select_grow_prev' then
|
||||||
|
cmd_ = 'extend_prev'
|
||||||
end
|
end
|
||||||
|
|
||||||
exec_lua(function(cmd, ...)
|
exec_lua(function(cmd, count)
|
||||||
require 'vim.treesitter._select'[cmd](...)
|
vim.treesitter.select(cmd, { count = count })
|
||||||
end, cmd_, ...)
|
end, cmd_, count_)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe('treesitter incremental-selection', function()
|
describe('treesitter incremental-selection', function()
|
||||||
|
|||||||
Reference in New Issue
Block a user