From 951ae1f1b20c70de937d8510fedb1054537ba5a8 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Tue, 14 Mar 2023 10:50:07 +1100 Subject: [PATCH 1/2] feat(api): add api.config.mappings.get_keymap and get_keymap_default --- doc/nvim-tree-lua.txt | 17 +++++++++++++++++ lua/nvim-tree/api.lua | 7 +++++++ lua/nvim-tree/keymap.lua | 27 +++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 89d4356197e..b164e328029 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1494,6 +1494,23 @@ api.config.mappings.default() *nvim-tree.api.config.mappings.default()* Return: ~ (table) as per |nvim-tree.view.mappings.list| + *nvim-tree.api.config.mappings.get_keymap()* +api.config.mappings.get_keymap() + Retrieves all buffer local mappings for nvim-tree. + These are the mappings that are applied by |nvim-tree.on_attach|, which + may include default mappings. + + Return: ~ + (table) as per |nvim_buf_get_keymap()| + + *nvim-tree.api.config.mappings.get_keymap()* +api.config.mappings.get_keymap_default() + Retrieves the buffer local mappings for nvim-tree that are applied by + |nvim-tree.api.config.mappings.default_on_attach()| + + Return: ~ + (table) as per |nvim_buf_get_keymap()| + ============================================================================== 6. MAPPINGS *nvim-tree-mappings* diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index fc1299ecab2..630f30e1e34 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -182,4 +182,11 @@ Api.config.mappings.default = function() return require("nvim-tree.keymap-legacy").default_mappings_clone() end +Api.config.mappings.get_keymap = function() + return require("nvim-tree.keymap").get_keymap() +end +Api.config.mappings.get_keymap_default = function() + return require("nvim-tree.keymap").get_keymap_default() +end + return Api diff --git a/lua/nvim-tree/keymap.lua b/lua/nvim-tree/keymap.lua index da6e537e33b..850003e6fc0 100644 --- a/lua/nvim-tree/keymap.lua +++ b/lua/nvim-tree/keymap.lua @@ -1,5 +1,24 @@ local M = {} +--- Apply mappings to a scratch buffer and return buffer local mappings +--- @param fn function(bufnr) on_attach or default_on_attach +--- @return table as per vim.api.nvim_buf_get_keymap +local function generate_keymap(fn) + -- create a scratch buffer + local scratch_bufnr = vim.api.nvim_create_buf(true, true) + + -- apply mappings + fn(scratch_bufnr) + + -- retrieve all + local keymap = vim.api.nvim_buf_get_keymap(scratch_bufnr, "") + + -- delete the scratch buffer + vim.api.nvim_buf_delete(scratch_bufnr, { force = true }) + + return keymap +end + -- stylua: ignore start function M.default_on_attach(bufnr) local api = require('nvim-tree.api') @@ -65,6 +84,14 @@ function M.default_on_attach(bufnr) end -- stylua: ignore end +function M.get_keymap() + return generate_keymap(M.on_attach) +end + +function M.get_keymap_default() + return generate_keymap(M.default_on_attach) +end + function M.setup(opts) if type(opts.on_attach) ~= "function" then M.on_attach = M.default_on_attach From b835bd7a2f0b30cf0bed94bf67d4a3e0dee98b31 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 20 Mar 2023 11:21:20 +1100 Subject: [PATCH 2/2] feat(api): add api.config.mappings.get_keymap and get_keymap_default --- lua/nvim-tree/keymap.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/keymap.lua b/lua/nvim-tree/keymap.lua index 850003e6fc0..408035c9153 100644 --- a/lua/nvim-tree/keymap.lua +++ b/lua/nvim-tree/keymap.lua @@ -4,8 +4,8 @@ local M = {} --- @param fn function(bufnr) on_attach or default_on_attach --- @return table as per vim.api.nvim_buf_get_keymap local function generate_keymap(fn) - -- create a scratch buffer - local scratch_bufnr = vim.api.nvim_create_buf(true, true) + -- create an unlisted scratch buffer + local scratch_bufnr = vim.api.nvim_create_buf(false, true) -- apply mappings fn(scratch_bufnr)