From ff860ecb49fd5d6973f9e2d16f4606bfd7b254b9 Mon Sep 17 00:00:00 2001 From: kiyan42 Date: Fri, 3 Apr 2020 12:19:41 +0200 Subject: [PATCH] Feature: add option for user keybindings --- README.md | 14 ++++++++++++++ doc/nvim-tree-lua.txt | 16 ++++++++++++++++ doc/tags | 1 + lua/lib/config.lua | 16 +++++++++++++++- lua/lib/winutils.lua | 18 ++++++++++-------- 5 files changed, 56 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e2bd12d3629..148191d6b3a 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,20 @@ let g:lua_tree_show_icons = { "1 by default, notice that if 'files' is 1, it will only display "if web-devicons is installed and on your runtimepath +" You can edit keybindings be defining this variable +" You don't have to define all keys. +" NOTE: the 'edit' key will wrap/unwrap a folder and open a file +let g:lua_tree_bindings = { + \ 'edit': '', + \ 'edit_vsplit': '', + \ 'edit_split': '', + \ 'edit_tab': '', + \ 'cd': '.', + \ 'create': 'a', + \ 'remove': 'd', + \ 'rename': 'r' + \ } + nnoremap :LuaTreeToggle nnoremap r :LuaTreeRefresh nnoremap n :LuaTreeFindFile diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index e4f7370e26a..c601373fd7f 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -109,6 +109,22 @@ INFORMATIONS *nvim-tree-info* - Double left click acts like '' - Double right click acts like '.' +|g:lua_tree_bindings| *g:lua_tree_bindings* + +you can change default keybindings by defining this variable. +default keybindings will be applied to undefined keys. +> + let g:lua_tree_bindings = { + \ edit: '', + \ edit_vsplit: '', + \ edit_split: '', + \ edit_tab: '', + \ cd: '.', + \ create: 'a', + \ remove: 'd', + \ rename: 'r' + \ } + |Features| *nvim-tree-features* File icons with vim-devicons. diff --git a/doc/tags b/doc/tags index a9ea49b6642..9631073f7e4 100644 --- a/doc/tags +++ b/doc/tags @@ -3,6 +3,7 @@ :LuaTreeToggle nvim-tree-lua.txt /*:LuaTreeToggle* g:lua_tree_auto_close nvim-tree-lua.txt /*g:lua_tree_auto_close* g:lua_tree_auto_open nvim-tree-lua.txt /*g:lua_tree_auto_open* +g:lua_tree_bindings nvim-tree-lua.txt /*g:lua_tree_bindings* g:lua_tree_follow nvim-tree-lua.txt /*g:lua_tree_follow* g:lua_tree_ignore nvim-tree-lua.txt /*g:lua_tree_ignore* g:lua_tree_show_icons nvim-tree-lua.txt /*g:lua_tree_show_icons* diff --git a/lua/lib/config.lua b/lua/lib/config.lua index 603031a9b65..a9d63718545 100644 --- a/lua/lib/config.lua +++ b/lua/lib/config.lua @@ -27,10 +27,24 @@ local colors = { dark_red = get('terminal_color_9', 'DarkRed'), } +local keybindings = get('lua_tree_bindings', {}); + +local bindings = { + edit = keybindings.edit or '', + edit_vsplit = keybindings.edit_vsplit or '', + edit_split = keybindings.edit_split or '', + edit_tab = keybindings.edit_tab or '', + cd = keybindings.cd or '.', + create = keybindings.create or 'a', + remove = keybindings.remove or 'd', + rename = keybindings.remove or 'r', +} + return { SHOW_FOLDER_ICON = SHOW_FOLDER_ICON, SHOW_FILE_ICON = SHOW_FILE_ICON, SHOW_GIT_ICON = SHOW_GIT_ICON, - colors = colors + colors = colors, + bindings = bindings } diff --git a/lua/lib/winutils.lua b/lua/lib/winutils.lua index 71fd51c5c66..9a0eacac3f8 100644 --- a/lua/lib/winutils.lua +++ b/lua/lib/winutils.lua @@ -8,6 +8,8 @@ local highlight = libformat.highlight_buffer local stateutils = require 'lib/state' local get_tree = stateutils.get_tree +local bindings = require 'lib/config'.bindings + local function get_buf() local regex = '.*'..BUF_NAME..'$'; @@ -132,16 +134,16 @@ local function set_mappings() if not buf then return end local mappings = { - [''] = 'open_file("edit")'; ['<2-LeftMouse>'] = 'open_file("edit")'; ['<2-RightMouse>'] = 'open_file("chdir")'; - [''] = 'open_file("vsplit")'; - [''] = 'open_file("split")'; - [''] = 'open_file("tabnew")'; - ['.'] = 'open_file("chdir")'; - a = 'edit_file("create")'; - d = 'edit_file("remove")'; - r = 'edit_file("rename")'; + [bindings.edit] = 'open_file("edit")'; + [bindings.edit_vsplit] = 'open_file("vsplit")'; + [bindings.edit_split] = 'open_file("split")'; + [bindings.edit_tab] = 'open_file("tabnew")'; + [bindings.cd] = 'open_file("chdir")'; + [bindings.create] = 'edit_file("create")'; + [bindings.remove] = 'edit_file("remove")'; + [bindings.rename] = 'edit_file("rename")'; } for k,v in pairs(mappings) do