nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 3620029ae0c82d4ad83f2ddfe26e55235c975933
parent 217d9f6651f52edaf6ff5cbf811edb6f0b0bd107
Author: Martin Grenfell <martin.grenfell@gmail.com>
Date:   Sun,  8 Jan 2012 17:24:30 +0000

make Bookmark use the new open() interface

Diffstat:
Mplugin/NERD_tree.vim | 54+++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 37 insertions(+), 17 deletions(-)
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -193,17 +193,7 @@ endif
 let s:Bookmark = {}
 " FUNCTION: Bookmark.activate() {{{3
 function! s:Bookmark.activate(...)
-    let opts = a:0 ? a:1 : {}
-
-    if self.path.isDirectory
-        call self.toRoot()
-    else
-        if self.validate()
-            let n = s:TreeFileNode.New(self.path)
-            call n.open(opts)
-            call s:closeTreeIfQuitOnOpen()
-        endif
-    endif
+    call self.open(a:0 ? a:1 : {})
 endfunction
 " FUNCTION: Bookmark.AddBookmark(name, path) {{{3
 " Class method to add a new bookmark to the list, if a previous bookmark exists
@@ -389,6 +379,33 @@ function! s:Bookmark.New(name, path)
     let newBookmark.path = a:path
     return newBookmark
 endfunction
+" FUNCTION: Bookmark.open([options]) {{{3
+"Args:
+"A dictionary containing the following keys (all optional):
+"  'split': Specifies whether the node should be opened in new split/tab or in
+"           the previous window. Can be either 'v' or 'h' or 't' (for open in
+"           new tab)
+"  'reuse': if a window is displaying the file then jump the cursor there
+"  'keepopen': dont close the tree window
+"  'stay': open the file, but keep the cursor in the tree win
+"
+function! s:Bookmark.open(...)
+    let opts = a:0 ? a:1 : {}
+
+    if self.path.isDirectory
+        if has_key(opts, 'split')
+            let n = s:TreeDirNode.New(self.path)
+            call n.open(opts)
+        else
+            call self.toRoot()
+        endif
+    else
+        if self.validate()
+            let n = s:TreeFileNode.New(self.path)
+            call n.open(opts)
+        endif
+    endif
+endfunction
 " FUNCTION: Bookmark.openInNewTab(options) {{{3
 " Create a new bookmark object with the given name and path object
 function! s:Bookmark.openInNewTab(options)
@@ -3817,6 +3834,9 @@ function! s:bindMappings()
     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Node", 'callback': s."openHSplit" })
     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Node", 'callback': s."openVSplit" })
 
+    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': "Bookmark", 'callback': s."openHSplit" })
+    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': "Bookmark", 'callback': s."openVSplit" })
+
     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': "Node", 'callback': s."previewNodeCurrent" })
     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': "Node", 'callback': s."previewNodeVSplit" })
     call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': "Node", 'callback': s."previewNodeHSplit" })
@@ -4092,14 +4112,14 @@ function! s:openBookmark(name)
     endif
 endfunction
 
-" FUNCTION: s:openHSplit(node) {{{2
-function! s:openHSplit(node)
-    call a:node.activate({'split': 'h'})
+" FUNCTION: s:openHSplit(target) {{{2
+function! s:openHSplit(target)
+    call a:target.activate({'split': 'h'})
 endfunction
 
-" FUNCTION: s:openVSplit(node) {{{2
-function! s:openVSplit(node)
-    call a:node.activate({'split': 'v'})
+" FUNCTION: s:openVSplit(target) {{{2
+function! s:openVSplit(target)
+    call a:target.activate({'split': 'v'})
 endfunction
 
 " FUNCTION: s:openExplorer(node) {{{2