commit b6cde142ddbec3ea47bdf23b0e5365f4d87bdd7c
parent 9eda9ce6a11307f5441ff12b9fa0a99bae53da21
Author: Phil Runninger <PhilRunninger@users.noreply.github.com>
Date: Fri, 22 Feb 2019 08:21:20 -0500
Preview bookmarks (#956)
* Add function to preview bookmarks.
File bookmarks are previewed like regular file nodes.
Directory bookmarks are located with NERDTreeFind in the current tree.
* Update help doc to include the new bookmark preview functionality.
Diffstat:
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/autoload/nerdtree/ui_glue.vim b/autoload/nerdtree/ui_glue.vim
@@ -18,6 +18,7 @@ function! nerdtree#ui_glue#createDefaultBindings()
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "DirNode", 'callback': s."activateDirNode" })
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "FileNode", 'callback': s."activateFileNode" })
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "Bookmark", 'callback': s."activateBookmark" })
+ call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Bookmark", 'callback': s."previewBookmark" })
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "all", 'callback': s."activateAll" })
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Node", 'callback': s."openHSplit" })
@@ -100,7 +101,7 @@ function! s:activateFileNode(node)
call a:node.activate({'reuse': 'all', 'where': 'p'})
endfunction
-"FUNCTION: s:activateBookmark() {{{1
+"FUNCTION: s:activateBookmark(bookmark) {{{1
"handle the user activating a bookmark
function! s:activateBookmark(bm)
call a:bm.activate(b:NERDTree, !a:bm.path.isDirectory ? {'where': 'p'} : {})
@@ -495,6 +496,15 @@ function! s:openNodeRecursively(node)
call nerdtree#echo("Recursively opening node. Please wait... DONE")
endfunction
+" FUNCTION: s:previewBookmark(bookmark) {{{1
+function! s:previewBookmark(bookmark)
+ if a:bookmark.path.isDirectory
+ execute 'NERDTreeFind '.a:bookmark.path.str()
+ else
+ call a:bookmark.activate(b:NERDTree, {'stay': 1, 'where': 'p', 'keepopen': 1})
+ endif
+endfunction
+
"FUNCTION: s:previewNodeCurrent(node) {{{1
function! s:previewNodeCurrent(node)
call a:node.open({'stay': 1, 'where': 'p', 'keepopen': 1})
diff --git a/doc/NERDTree.txt b/doc/NERDTree.txt
@@ -240,6 +240,7 @@ Key Description help-tag~
o........Open files, directories and bookmarks......................|NERDTree-o|
go.......Open selected file, but leave cursor in the NERDTree......|NERDTree-go|
+ Open selected bookmark dir in current NERDTree
t........Open selected node/bookmark in a new tab...................|NERDTree-t|
T........Same as 't' but keep the focus on the current tab..........|NERDTree-T|
i........Open selected file in a split window.......................|NERDTree-i|
@@ -305,8 +306,12 @@ Default key: go
Map setting: NERDTreeMapPreview
Applies to: files.
-If a file node is selected, it is opened in the previous window, but the
-cursor does not move.
+If a file node or a bookmark that links to a file is selected, it is opened in
+the previous window, but the cursor does not move.
+
+If a bookmark that links to a directory is selected, that directory is found
+in the current NERDTree. If the directory couldn't be found, a new NERDTree is
+created.
The default key combo for this mapping is "g" + NERDTreeMapActivateNode (see
|NERDTree-o|).
diff --git a/lib/nerdtree/ui.vim b/lib/nerdtree/ui.vim
@@ -62,6 +62,8 @@ function! s:UI._dumpHelp()
let help .= "\" Bookmark table mappings~\n"
let help .= "\" double-click,\n"
let help .= "\" ". g:NERDTreeMapActivateNode .": open bookmark\n"
+ let help .= "\" ". g:NERDTreeMapPreview .": preview file\n"
+ let help .= "\" ". g:NERDTreeMapPreview .": find dir in tree\n"
let help .= "\" ". g:NERDTreeMapOpenInTab.": open in new tab\n"
let help .= "\" ". g:NERDTreeMapOpenInTabSilent .": open in new tab silently\n"
let help .= "\" ". g:NERDTreeMapDeleteBookmark .": delete bookmark\n"