From 047ecd60db696ea7e296cfc4a3f1b0a75d569726 Mon Sep 17 00:00:00 2001 From: songshaobo Date: Wed, 30 Oct 2024 11:08:26 +0800 Subject: [PATCH 1/2] Add 'NERDTreeFindToggle' command Signed-off-by: songshaobo --- autoload/nerdtree/ui_glue.vim | 57 +++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim index c5c96181..b6889133 100644 --- a/autoload/nerdtree/ui_glue.vim +++ b/autoload/nerdtree/ui_glue.vim @@ -294,6 +294,62 @@ function! s:displayHelp() abort call b:NERDTree.ui.centerView() endfunction +function! s:findAndRevealPathToggle(pathStr) abort + if !g:NERDTree.IsOpen() + let l:pathStr = !empty(a:pathStr) ? a:pathStr : expand('%:p') + let l:revealOpts = {} + + if empty(l:pathStr) + call nerdtree#echoWarning('no file for the current buffer') + return + endif + + if !filereadable(l:pathStr) + call g:NERDTreeCreator.ToggleTabTree(a:pathStr) + return + endif + + try + let l:pathStr = g:NERDTreePath.Resolve(l:pathStr) + let l:pathObj = g:NERDTreePath.New(l:pathStr) + catch /^NERDTree.InvalidArgumentsError/ + call nerdtree#echoWarning('invalid path') + return + endtry + + if !g:NERDTree.ExistsForTab() + try + let l:cwd = g:NERDTreePath.New(getcwd()) + catch /^NERDTree.InvalidArgumentsError/ + call nerdtree#echo('current directory does not exist.') + let l:cwd = l:pathObj.getParent() + endtry + + if l:pathObj.isUnder(l:cwd) + call g:NERDTreeCreator.CreateTabTree(l:cwd.str()) + else + call g:NERDTreeCreator.CreateTabTree(l:pathObj.getParent().str()) + endif + else + NERDTreeFocus + + if !l:pathObj.isUnder(b:NERDTree.root.path) + call s:chRoot(g:NERDTreeDirNode.New(l:pathObj.getParent(), b:NERDTree)) + endif + endif + + if l:pathObj.isHiddenUnder(b:NERDTree.root.path) + call b:NERDTree.ui.setShowHidden(1) + endif + + let l:node = b:NERDTree.root.reveal(l:pathObj, l:revealOpts) + call b:NERDTree.render() + call l:node.putCursorHere(1, 0) + else + call g:NERDTree.Close() + endif +endfunction + " FUNCTION: s:findAndRevealPath(pathStr) {{{1 function! s:findAndRevealPath(pathStr) abort let l:pathStr = !empty(a:pathStr) ? a:pathStr : expand('%:p') @@ -663,6 +719,7 @@ function! nerdtree#ui_glue#setupCommands() abort command! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreateTabTree('') command! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror() command! -n=? -complete=file -bar NERDTreeFind call s:findAndRevealPath('') + command! -n=? -complete=file -bar NERDTreeFindToggle call s:findAndRevealPathToggle('') command! -n=0 -bar NERDTreeRefreshRoot call s:refreshRoot() command! -n=0 -bar NERDTreeFocus call NERDTreeFocus() command! -n=0 -bar NERDTreeCWD call NERDTreeCWD() From 1b318de7e1e4f2c66d71a968361208651e517ca4 Mon Sep 17 00:00:00 2001 From: songshaobo Date: Wed, 30 Oct 2024 11:19:40 +0800 Subject: [PATCH 2/2] Update my configuration Signed-off-by: songshaobo --- plugin/NERD_tree.vim | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim index 84c04fda..00f9c5e5 100644 --- a/plugin/NERD_tree.vim +++ b/plugin/NERD_tree.vim @@ -86,7 +86,7 @@ endif let g:NERDTreeStatusline = get(g:, 'NERDTreeStatusline', "%{exists('b:NERDTree')?b:NERDTree.root.path.str():''}") let g:NERDTreeWinPos = get(g:, 'NERDTreeWinPos', 'left') -let g:NERDTreeWinSize = get(g:, 'NERDTreeWinSize', 31) +let g:NERDTreeWinSize = get(g:, 'NERDTreeWinSize', 40) "init the shell commands that will be used to copy nodes, and remove dir trees "Note: the space after the command is important @@ -101,12 +101,12 @@ endif "SECTION: Init variable calls for key mappings {{{2 let g:NERDTreeMapCustomOpen = get(g:, 'NERDTreeMapCustomOpen', '') -let g:NERDTreeMapJumpBookmarks = get(g:, 'NERDTreeMapJumpBookmarks', 'gb') +let g:NERDTreeMapJumpBookmarks = get(g:, 'NERDTreeMapJumpBookmarks', 'gB') let g:NERDTreeMapActivateNode = get(g:, 'NERDTreeMapActivateNode', 'o') let g:NERDTreeMapChangeRoot = get(g:, 'NERDTreeMapChangeRoot', 'C') let g:NERDTreeMapChdir = get(g:, 'NERDTreeMapChdir', 'cd') -let g:NERDTreeMapCloseChildren = get(g:, 'NERDTreeMapCloseChildren', 'X') -let g:NERDTreeMapCloseDir = get(g:, 'NERDTreeMapCloseDir', 'x') +let g:NERDTreeMapCloseChildren = get(g:, 'NERDTreeMapCloseChildren', 'A') +let g:NERDTreeMapCloseDir = get(g:, 'NERDTreeMapCloseDir', 'a') let g:NERDTreeMapDeleteBookmark = get(g:, 'NERDTreeMapDeleteBookmark', 'D') let g:NERDTreeMapMenu = get(g:, 'NERDTreeMapMenu', 'm') let g:NERDTreeMapHelp = get(g:, 'NERDTreeMapHelp', '?') @@ -133,7 +133,7 @@ let g:NERDTreeMapToggleFiles = get(g:, 'NERDTreeMapToggleFiles', 'F') let g:NERDTreeMapToggleFilters = get(g:, 'NERDTreeMapToggleFilters', 'f') let g:NERDTreeMapToggleHidden = get(g:, 'NERDTreeMapToggleHidden', 'I') let g:NERDTreeMapToggleFileLines = get(g:, 'NERDTreeMapToggleFileLines', 'FL') -let g:NERDTreeMapToggleZoom = get(g:, 'NERDTreeMapToggleZoom', 'A') +let g:NERDTreeMapToggleZoom = get(g:, 'NERDTreeMapToggleZoom', 'x') let g:NERDTreeMapUpdir = get(g:, 'NERDTreeMapUpdir', 'u') let g:NERDTreeMapUpdirKeepOpen = get(g:, 'NERDTreeMapUpdirKeepOpen', 'U') let g:NERDTreeMapCWD = get(g:, 'NERDTreeMapCWD', 'CD')