diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua index 4a9d073c..19ec746d 100644 --- a/.config/nvim/lua/config/keymaps.lua +++ b/.config/nvim/lua/config/keymaps.lua @@ -156,3 +156,87 @@ vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") + +local function goto_prev_node() + local ts_utils = require("nvim-treesitter.ts_utils") + local node = ts_utils.get_node_at_cursor() + if not node then + return + end + local dest_node = ts_utils.get_previous_node(node, true, true) + if not dest_node then + local cur_node = node:parent() + while cur_node do + dest_node = ts_utils.get_previous_node(cur_node, false, false) + if dest_node then + break + end + cur_node = cur_node:parent() + end + end + if not dest_node then + return + end + ts_utils.goto_node(dest_node) +end + +local function goto_next_node() + local ts_utils = require("nvim-treesitter.ts_utils") + local node = ts_utils.get_node_at_cursor() + if not node then + return + end + local dest_node = ts_utils.get_next_node(node, true, true) + if not dest_node then + local cur_node = node:parent() + while cur_node do + dest_node = ts_utils.get_next_node(cur_node, false, false) + if dest_node then + break + end + cur_node = cur_node:parent() + end + end + if not dest_node then + return + end + ts_utils.goto_node(dest_node) +end + +local function goto_parent_node() + local ts_utils = require("nvim-treesitter.ts_utils") + local node = ts_utils.get_node_at_cursor() + if not node then + return + end + local dest_node = node:parent() + if not dest_node then + return + end + ts_utils.goto_node(dest_node) +end + +local function goto_child_node() + local ts_utils = require("nvim-treesitter.ts_utils") + local node = ts_utils.get_node_at_cursor() + if not node then + return + end + local dest_node = ts_utils.get_named_children(node)[1] + if not dest_node then + return + end + ts_utils.goto_node(dest_node) +end + +local keyopts = { noremap = true, silent = true } + +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_parent_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_child_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_next_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_prev_node, keyopts) + +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_parent_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_child_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_next_node, keyopts) +vim.keymap.set({ "n", "v", "o", "i" }, "", goto_prev_node, keyopts) diff --git a/.config/nvim/lua/plugins/puppeteer.lua b/.config/nvim/lua/plugins/puppeteer.lua new file mode 100644 index 00000000..7c1f4126 --- /dev/null +++ b/.config/nvim/lua/plugins/puppeteer.lua @@ -0,0 +1,7 @@ +return { + { + "chrisgrieser/nvim-puppeteer", + dependencies = "nvim-treesitter/nvim-treesitter", + lazy = false, + }, +} diff --git a/.config/nvim/lua/plugins/symbol-usage.lua b/.config/nvim/lua/plugins/symbol-usage.lua.bak similarity index 100% rename from .config/nvim/lua/plugins/symbol-usage.lua rename to .config/nvim/lua/plugins/symbol-usage.lua.bak diff --git a/.config/nvim/lua/plugins/template-string.lua b/.config/nvim/lua/plugins/template-string.lua deleted file mode 100644 index 1041006d..00000000 --- a/.config/nvim/lua/plugins/template-string.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - { - "axelvc/template-string.nvim", - event = "BufRead", - config = function() - require("template-string").setup() - end, - }, -} diff --git a/.config/nvim/lua/plugins/wildfire.lua b/.config/nvim/lua/plugins/wildfire.lua new file mode 100644 index 00000000..40beeba1 --- /dev/null +++ b/.config/nvim/lua/plugins/wildfire.lua @@ -0,0 +1,10 @@ +return { + { + "sustech-data/wildfire.nvim", + event = "BufRead", + dependencies = { "nvim-treesitter/nvim-treesitter" }, + config = function() + require("wildfire").setup() + end, + }, +}