From cb215f04a2bb945f59c37063d9f853e1eee7edb2 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 2 Jan 2023 11:54:22 +1100 Subject: [PATCH 1/3] feat(api): add config.mappings.current and config.mappings.default --- doc/nvim-tree-lua.txt | 14 ++++++++++++++ lua/nvim-tree/actions/init.lua | 13 +++++++++++++ lua/nvim-tree/api.lua | 4 ++++ lua/nvim-tree/utils.lua | 17 +++++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 2dac973970a..7883a1cb642 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1335,6 +1335,20 @@ exists. - navigate.prev - navigate.select +api.config.mappings.current() *nvim-tree.api.config.mappings.current()* + Retrieve a clone of the currently active mappings: + |nvim-tree-default-mappings| with |nvim-tree.view.mappings| applied. + Changing the active mappings will require a call to |nvim-tree-setup| + + Return: ~ + (table) as per |nvim-tree.view.mappings.list| + +api.config.mappings.default() *nvim-tree.api.config.mappings.default()* + Retrieve a clone of the default mappings: |nvim-tree-default-mappings| + + Return: ~ + (table) as per |nvim-tree.view.mappings.list| + ============================================================================== 6. MAPPINGS *nvim-tree-mappings* diff --git a/lua/nvim-tree/actions/init.lua b/lua/nvim-tree/actions/init.lua index b1f12c9ab2f..b0d9f982bac 100644 --- a/lua/nvim-tree/actions/init.lua +++ b/lua/nvim-tree/actions/init.lua @@ -3,6 +3,7 @@ local log = require "nvim-tree.log" local view = require "nvim-tree.view" local notify = require "nvim-tree.notify" +local utils = require "nvim-tree.utils" -- BEGIN_DEFAULT_MAPPINGS local DEFAULT_MAPPINGS = { @@ -399,6 +400,18 @@ local DEFAULT_MAPPING_CONFIG = { list = {}, } +--- clone default for the user +--- @return table +function M.default_mappings_clone() + return utils.table_deep_clone(DEFAULT_MAPPINGS) +end + +--- clone active for the user +--- @return table +function M.current_mappings_clone() + return utils.table_deep_clone(M.mappings) +end + function M.setup(opts) require("nvim-tree.actions.fs.trash").setup(opts) require("nvim-tree.actions.node.system-open").setup(opts) diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index 515d9ffd3d6..1a34b1a00f2 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -6,6 +6,7 @@ local Api = { fs = { copy = {} }, git = {}, live_filter = {}, + config = { mappings = {} }, } local function inject_node(f) @@ -127,4 +128,7 @@ Api.marks.navigate.next = require("nvim-tree.marks.navigation").next Api.marks.navigate.prev = require("nvim-tree.marks.navigation").prev Api.marks.navigate.select = require("nvim-tree.marks.navigation").select +Api.config.mappings.current = require("nvim-tree.actions").current_mappings_clone +Api.config.mappings.default = require("nvim-tree.actions").default_mappings_clone + return Api diff --git a/lua/nvim-tree/utils.lua b/lua/nvim-tree/utils.lua index 433fef6f3fb..d5b5a50fbcf 100644 --- a/lua/nvim-tree/utils.lua +++ b/lua/nvim-tree/utils.lua @@ -388,6 +388,23 @@ function M.array_remove_nils(array) end, array) end +--- create a new deep cloned table +--- @param t table +--- @return table +function M.table_deep_clone(t) + local c = {} + + for k, v in pairs(t) do + if type(v) == "table" then + c[k] = M.table_deep_clone(v) + else + c[k] = v + end + end + + return c +end + function M.inject_node(f) return function() f(require("nvim-tree.lib").get_node_at_cursor()) From ef0a5df320b88e96b13fcbe3caaf83da9e9e3312 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 2 Jan 2023 12:10:11 +1100 Subject: [PATCH 2/3] feat(api): add config.mappings.current and config.mappings.default --- lua/nvim-tree/actions/init.lua | 5 ++--- lua/nvim-tree/utils.lua | 17 ----------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/lua/nvim-tree/actions/init.lua b/lua/nvim-tree/actions/init.lua index b0d9f982bac..9aeffa87fdd 100644 --- a/lua/nvim-tree/actions/init.lua +++ b/lua/nvim-tree/actions/init.lua @@ -3,7 +3,6 @@ local log = require "nvim-tree.log" local view = require "nvim-tree.view" local notify = require "nvim-tree.notify" -local utils = require "nvim-tree.utils" -- BEGIN_DEFAULT_MAPPINGS local DEFAULT_MAPPINGS = { @@ -403,13 +402,13 @@ local DEFAULT_MAPPING_CONFIG = { --- clone default for the user --- @return table function M.default_mappings_clone() - return utils.table_deep_clone(DEFAULT_MAPPINGS) + return vim.deepcopy(DEFAULT_MAPPINGS) end --- clone active for the user --- @return table function M.current_mappings_clone() - return utils.table_deep_clone(M.mappings) + return vim.deepcopy(M.mappings) end function M.setup(opts) diff --git a/lua/nvim-tree/utils.lua b/lua/nvim-tree/utils.lua index d5b5a50fbcf..433fef6f3fb 100644 --- a/lua/nvim-tree/utils.lua +++ b/lua/nvim-tree/utils.lua @@ -388,23 +388,6 @@ function M.array_remove_nils(array) end, array) end ---- create a new deep cloned table ---- @param t table ---- @return table -function M.table_deep_clone(t) - local c = {} - - for k, v in pairs(t) do - if type(v) == "table" then - c[k] = M.table_deep_clone(v) - else - c[k] = v - end - end - - return c -end - function M.inject_node(f) return function() f(require("nvim-tree.lib").get_node_at_cursor()) From 3d27dd4ef697c765b7c6cba1a7b4ef512f726f05 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Mon, 2 Jan 2023 12:12:55 +1100 Subject: [PATCH 3/3] feat(api): add config.mappings.current and config.mappings.default --- doc/nvim-tree-lua.txt | 2 +- lua/nvim-tree/actions/init.lua | 2 +- lua/nvim-tree/api.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 7883a1cb642..fae1f4fd197 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1335,7 +1335,7 @@ exists. - navigate.prev - navigate.select -api.config.mappings.current() *nvim-tree.api.config.mappings.current()* +api.config.mappings.active() *nvim-tree.api.config.mappings.active()* Retrieve a clone of the currently active mappings: |nvim-tree-default-mappings| with |nvim-tree.view.mappings| applied. Changing the active mappings will require a call to |nvim-tree-setup| diff --git a/lua/nvim-tree/actions/init.lua b/lua/nvim-tree/actions/init.lua index 9aeffa87fdd..7a9fad21e79 100644 --- a/lua/nvim-tree/actions/init.lua +++ b/lua/nvim-tree/actions/init.lua @@ -407,7 +407,7 @@ end --- clone active for the user --- @return table -function M.current_mappings_clone() +function M.active_mappings_clone() return vim.deepcopy(M.mappings) end diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index 1a34b1a00f2..e40bfcd6729 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -128,7 +128,7 @@ Api.marks.navigate.next = require("nvim-tree.marks.navigation").next Api.marks.navigate.prev = require("nvim-tree.marks.navigation").prev Api.marks.navigate.select = require("nvim-tree.marks.navigation").select -Api.config.mappings.current = require("nvim-tree.actions").current_mappings_clone +Api.config.mappings.active = require("nvim-tree.actions").active_mappings_clone Api.config.mappings.default = require("nvim-tree.actions").default_mappings_clone return Api