feat(snip): smart_jump() for node traversal

This commit is contained in:
arne314
2025-06-27 17:48:56 +02:00
parent 38d6c0d9bd
commit 50634a190d
2 changed files with 23 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
local M = {}
local config = require('typstar.config')
local luasnip = nil
M.setup = function(args)
config.merge_config(args)
@@ -9,6 +10,8 @@ M.setup = function(args)
local anki = require('typstar.anki')
vim.api.nvim_create_user_command('TypstarToggleSnippets', autosnippets.toggle_autosnippets, {})
vim.api.nvim_create_user_command('TypstarSmartJump', function() M.smart_jump(1) end, {})
vim.api.nvim_create_user_command('TypstarSmartJumpBack', function() M.smart_jump(-1) end, {})
vim.api.nvim_create_user_command('TypstarInsertExcalidraw', excalidraw.insert_drawing, {})
vim.api.nvim_create_user_command('TypstarOpenExcalidraw', excalidraw.open_drawing, {})
@@ -19,8 +22,23 @@ M.setup = function(args)
vim.api.nvim_create_user_command('TypstarAnkiForceReimport', anki.scan_force_reimport, {})
vim.api.nvim_create_user_command('TypstarAnkiForceCurrent', anki.scan_force_current, {})
vim.api.nvim_create_user_command('TypstarAnkiForceCurrentReimport', anki.scan_force_current_reimport, {})
autosnippets.setup()
end
-- source: https://github.com/lentilus/fastex.nvim
M.smart_jump = function(length, x, y, tries)
if luasnip == nil then luasnip = require('luasnip') end
local x2, y2 = unpack(vim.api.nvim_win_get_cursor(0))
local tries = tries or 0
if tries > 10 then return end
if x == nil or y == nil then
x, y = x2, y2
end
if x == x2 and y == y2 then
luasnip.jump(length)
vim.schedule(function() M.smart_jump(length, x, y, tries + 1) end)
end
end
return M