From cab0e7e275ca13c9331bbd3b8853f13b37097670 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Sat, 14 Sep 2024 12:14:57 +1000 Subject: [PATCH 1/2] feat: help closes on and api.tree.toggle_help mappings --- lua/nvim-tree/help.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lua/nvim-tree/help.lua b/lua/nvim-tree/help.lua index c509ac47564..095ea22ca43 100644 --- a/lua/nvim-tree/help.lua +++ b/lua/nvim-tree/help.lua @@ -1,4 +1,5 @@ local keymap = require "nvim-tree.keymap" +local api = {} -- circular dependency local PAT_MOUSE = "^<.*Mouse" local PAT_CTRL = "^"] = { fn = close, desc = "nvim-tree: exit help" }, -- hidden s = { fn = toggle_sort, desc = "nvim-tree: toggle sorting method" }, } + -- api help binding closes + for _, map in ipairs(keymap.get_keymap()) do + if map.callback == api.tree.toggle_help then + keymaps[map.lhs] = { fn = close, desc = "nvim-tree: exit help" } + end + end + for k, v in pairs(keymaps) do vim.keymap.set("n", k, v.fn, { desc = v.desc, @@ -240,6 +250,8 @@ end function M.setup(opts) M.config.cursorline = opts.view.cursorline M.config.sort_by = opts.help.sort_by + + api = require "nvim-tree.api" end return M From 0d111487c7b7241243d0855c513eb1ea48fe7439 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Sat, 14 Sep 2024 12:21:01 +1000 Subject: [PATCH 2/2] feat: help closes on and api.tree.toggle_help mappings --- lua/nvim-tree/help.lua | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lua/nvim-tree/help.lua b/lua/nvim-tree/help.lua index 095ea22ca43..2bca25ce5e9 100644 --- a/lua/nvim-tree/help.lua +++ b/lua/nvim-tree/help.lua @@ -80,18 +80,19 @@ local function sort_lhs(a, b) end --- Compute all lines for the buffer +---@param map table keymap.get_keymap ---@return table strings of text ---@return table arrays of arguments 3-6 for nvim_buf_add_highlight() ---@return number maximum length of text -local function compute() +local function compute(map) local head_lhs = "nvim-tree mappings" local head_rhs1 = "exit: q" local head_rhs2 = string.format("sort by %s: s", M.config.sort_by == "key" and "description" or "keymap") -- formatted lhs and desc from active keymap - local mappings = vim.tbl_map(function(map) - return { lhs = tidy_lhs(map.lhs), desc = tidy_desc(map.desc) } - end, keymap.get_keymap()) + local mappings = vim.tbl_map(function(m) + return { lhs = tidy_lhs(m.lhs), desc = tidy_desc(m.desc) } + end, map) -- sorter function for mappings local sort_fn @@ -166,8 +167,11 @@ local function open() -- close existing, shouldn't be necessary close() + -- fetch all mappings + local map = keymap.get_keymap() + -- text and highlight - local lines, hl, width = compute() + local lines, hl, width = compute(map) -- create the buffer M.bufnr = vim.api.nvim_create_buf(false, true) @@ -208,20 +212,20 @@ local function open() end -- hardcoded - local keymaps = { + local help_keymaps = { q = { fn = close, desc = "nvim-tree: exit help" }, [""] = { fn = close, desc = "nvim-tree: exit help" }, -- hidden s = { fn = toggle_sort, desc = "nvim-tree: toggle sorting method" }, } -- api help binding closes - for _, map in ipairs(keymap.get_keymap()) do - if map.callback == api.tree.toggle_help then - keymaps[map.lhs] = { fn = close, desc = "nvim-tree: exit help" } + for _, m in ipairs(map) do + if m.callback == api.tree.toggle_help then + help_keymaps[m.lhs] = { fn = close, desc = "nvim-tree: exit help" } end end - for k, v in pairs(keymaps) do + for k, v in pairs(help_keymaps) do vim.keymap.set("n", k, v.fn, { desc = v.desc, buffer = M.bufnr,