mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
fix(lsp): redundant vim.snippet.jumpable #28560
This commit is contained in:
parent
a1c9da2d5a
commit
bc7f86209d
@ -4306,8 +4306,33 @@ Iter:totable() *Iter:totable()*
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
Lua module: vim.snippet *vim.snippet*
|
Lua module: vim.snippet *vim.snippet*
|
||||||
|
|
||||||
vim.snippet.active() *vim.snippet.active()*
|
*vim.snippet.ActiveFilter*
|
||||||
Returns `true` if there's an active snippet in the current buffer.
|
|
||||||
|
Fields: ~
|
||||||
|
• {direction} (`vim.snippet.Direction`) Navigation direction. -1 for
|
||||||
|
previous, 1 for next.
|
||||||
|
|
||||||
|
|
||||||
|
vim.snippet.active({filter}) *vim.snippet.active()*
|
||||||
|
Returns `true` if there's an active snippet in the current buffer,
|
||||||
|
applying the given filter if provided.
|
||||||
|
|
||||||
|
You can use this function to navigate a snippet as follows: >lua
|
||||||
|
vim.keymap.set({ 'i', 's' }, '<Tab>', function()
|
||||||
|
if vim.snippet.active({ direction = 1 }) then
|
||||||
|
return '<cmd>lua vim.snippet.jump(1)<cr>'
|
||||||
|
else
|
||||||
|
return '<Tab>'
|
||||||
|
end
|
||||||
|
end, { expr = true })
|
||||||
|
<
|
||||||
|
|
||||||
|
Parameters: ~
|
||||||
|
• {filter} (`vim.snippet.ActiveFilter?`) Filter to constrain the search
|
||||||
|
with:
|
||||||
|
• `direction` (vim.snippet.Direction): Navigation direction.
|
||||||
|
Will return `true` if the snippet can be jumped in the
|
||||||
|
given direction. See |vim.snippet.ActiveFilter|.
|
||||||
|
|
||||||
Return: ~
|
Return: ~
|
||||||
(`boolean`)
|
(`boolean`)
|
||||||
@ -4343,26 +4368,6 @@ vim.snippet.jump({direction}) *vim.snippet.jump()*
|
|||||||
• {direction} (`vim.snippet.Direction`) Navigation direction. -1 for
|
• {direction} (`vim.snippet.Direction`) Navigation direction. -1 for
|
||||||
previous, 1 for next.
|
previous, 1 for next.
|
||||||
|
|
||||||
vim.snippet.jumpable({direction}) *vim.snippet.jumpable()*
|
|
||||||
Returns `true` if there is an active snippet which can be jumped in the
|
|
||||||
given direction. You can use this function to navigate a snippet as
|
|
||||||
follows: >lua
|
|
||||||
vim.keymap.set({ 'i', 's' }, '<Tab>', function()
|
|
||||||
if vim.snippet.jumpable(1) then
|
|
||||||
return '<cmd>lua vim.snippet.jump(1)<cr>'
|
|
||||||
else
|
|
||||||
return '<Tab>'
|
|
||||||
end
|
|
||||||
end, { expr = true })
|
|
||||||
<
|
|
||||||
|
|
||||||
Parameters: ~
|
|
||||||
• {direction} (`vim.snippet.Direction`) Navigation direction. -1 for
|
|
||||||
previous, 1 for next.
|
|
||||||
|
|
||||||
Return: ~
|
|
||||||
(`boolean`)
|
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Lua module: vim.text *vim.text*
|
Lua module: vim.text *vim.text*
|
||||||
|
@ -532,29 +532,6 @@ end
|
|||||||
|
|
||||||
--- @alias vim.snippet.Direction -1 | 1
|
--- @alias vim.snippet.Direction -1 | 1
|
||||||
|
|
||||||
--- Returns `true` if there is an active snippet which can be jumped in the given direction.
|
|
||||||
--- You can use this function to navigate a snippet as follows:
|
|
||||||
---
|
|
||||||
--- ```lua
|
|
||||||
--- vim.keymap.set({ 'i', 's' }, '<Tab>', function()
|
|
||||||
--- if vim.snippet.jumpable(1) then
|
|
||||||
--- return '<cmd>lua vim.snippet.jump(1)<cr>'
|
|
||||||
--- else
|
|
||||||
--- return '<Tab>'
|
|
||||||
--- end
|
|
||||||
--- end, { expr = true })
|
|
||||||
--- ```
|
|
||||||
---
|
|
||||||
--- @param direction (vim.snippet.Direction) Navigation direction. -1 for previous, 1 for next.
|
|
||||||
--- @return boolean
|
|
||||||
function M.jumpable(direction)
|
|
||||||
if not M.active() then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
return M._session:get_dest_index(direction) ~= nil
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Jumps within the active snippet in the given direction.
|
--- Jumps within the active snippet in the given direction.
|
||||||
--- If the jump isn't possible, the function call does nothing.
|
--- If the jump isn't possible, the function call does nothing.
|
||||||
---
|
---
|
||||||
@ -604,11 +581,37 @@ function M.jump(direction)
|
|||||||
setup_autocmds(M._session.bufnr)
|
setup_autocmds(M._session.bufnr)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Returns `true` if there's an active snippet in the current buffer.
|
--- @class vim.snippet.ActiveFilter
|
||||||
|
--- @field direction vim.snippet.Direction Navigation direction. -1 for previous, 1 for next.
|
||||||
|
|
||||||
|
--- Returns `true` if there's an active snippet in the current buffer,
|
||||||
|
--- applying the given filter if provided.
|
||||||
---
|
---
|
||||||
|
--- You can use this function to navigate a snippet as follows:
|
||||||
|
---
|
||||||
|
--- ```lua
|
||||||
|
--- vim.keymap.set({ 'i', 's' }, '<Tab>', function()
|
||||||
|
--- if vim.snippet.active({ direction = 1 }) then
|
||||||
|
--- return '<cmd>lua vim.snippet.jump(1)<cr>'
|
||||||
|
--- else
|
||||||
|
--- return '<Tab>'
|
||||||
|
--- end
|
||||||
|
--- end, { expr = true })
|
||||||
|
--- ```
|
||||||
|
---
|
||||||
|
--- @param filter? vim.snippet.ActiveFilter Filter to constrain the search with:
|
||||||
|
--- - `direction` (vim.snippet.Direction): Navigation direction. Will return `true` if the snippet
|
||||||
|
--- can be jumped in the given direction.
|
||||||
--- @return boolean
|
--- @return boolean
|
||||||
function M.active()
|
function M.active(filter)
|
||||||
return M._session ~= nil and M._session.bufnr == vim.api.nvim_get_current_buf()
|
local active = M._session ~= nil and M._session.bufnr == vim.api.nvim_get_current_buf()
|
||||||
|
|
||||||
|
local in_direction = true
|
||||||
|
if active and filter and filter.direction then
|
||||||
|
in_direction = M._session:get_dest_index(filter.direction) ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return active and in_direction
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Exits the current snippet.
|
--- Exits the current snippet.
|
||||||
|
@ -97,9 +97,9 @@ describe('vim.snippet', function()
|
|||||||
|
|
||||||
it('does not jump outside snippet range', function()
|
it('does not jump outside snippet range', function()
|
||||||
test_expand_success({ 'function $1($2)', ' $0', 'end' }, { 'function ()', ' ', 'end' })
|
test_expand_success({ 'function $1($2)', ' $0', 'end' }, { 'function ()', ' ', 'end' })
|
||||||
eq(false, exec_lua('return vim.snippet.jumpable(-1)'))
|
eq(false, exec_lua('return vim.snippet.active({ direction = -1 })'))
|
||||||
feed('<Tab><Tab>i')
|
feed('<Tab><Tab>i')
|
||||||
eq(false, exec_lua('return vim.snippet.jumpable(1)'))
|
eq(false, exec_lua('return vim.snippet.active( { direction = 1 })'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('navigates backwards', function()
|
it('navigates backwards', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user