From 4f036342f14378b53ac5d7c6ae8d8f6d1bf9a0f8 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 20 Mar 2023 11:23:45 +1100 Subject: [PATCH] feat(api): add api.config.mappings.get_keymap and get_keymap_default (#2056) * feat(api): add api.config.mappings.get_keymap and get_keymap_default * 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 89d43561..b164e328 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 fc1299ec..630f30e1 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 da6e537e..408035c9 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 an unlisted scratch buffer + local scratch_bufnr = vim.api.nvim_create_buf(false, 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