nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 6cf4e9a7635c654055abf5bea9c5fceb76620181
parent 2e26da966684ac88987dbc529d1648acc83e5e23
Author: Martin Grenfell <martin_grenfell@msn.com>
Date:   Wed,  3 Sep 2008 17:40:33 +1200

move some bookmark logic into the model

move the bookmark validation logic into the model, as well as the
bookmark to root code

Diffstat:
Mplugin/NERD_tree.vim | 67+++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 37 insertions(+), 30 deletions(-)
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -350,6 +350,40 @@ function! s:oBookmark.str()
     endif
     return '>' . self.name . ' ' . pathStr
 endfunction
+" FUNCTION: oBookmark.toRoot() {{{3
+" Make the node for this bookmark the new tree root
+function! s:oBookmark.toRoot()
+    if self.validate()
+        try
+            let targetNode = s:oBookmark.GetNodeForName(self.name, 1)
+        catch /NERDTree.BookmarkedNodeNotFound/
+            let targetNode = s:oTreeFileNode.New(s:oBookmark.BookmarkFor(self.name).path)
+        endtry
+        call targetNode.makeRoot()
+        call s:RenderView()
+        call s:PutCursorOnNode(targetNode, 0, 0)
+    endif
+endfunction
+" FUNCTION: oBookmark.toRoot(name) {{{3
+" Make the node for this bookmark the new tree root
+function! s:oBookmark.ToRoot(name)
+    let bookmark = s:oBookmark.BookmarkFor(a:name)
+    call bookmark.toRoot()
+endfunction
+
+
+"FUNCTION: oBookmark.validate() {{{3
+function! s:oBookmark.validate()
+    if self.path.exists()
+        return 1
+    else
+        call s:oBookmark.CacheBookmarks(1)
+        call s:RenderView()
+        call s:Echo(self.name . "now points to an invalid location. See :help NERDTreeInvalidBookmarks for info.")
+        return 0
+    endif
+endfunction
+
 " Function: oBookmark.Write()   {{{3
 " Class method to write all bookmarks to the bookmarks file
 function! s:oBookmark.Write()
@@ -1757,21 +1791,6 @@ endfunction
 
 " SECTION: View Functions {{{1
 "============================================================
-" FUNCTION: s:BookmarkToRoot(name) {{{2
-" Make the node for the given bookmark the new tree root
-function! s:BookmarkToRoot(name)
-    let bookmark = s:oBookmark.BookmarkFor(a:name)
-    if s:ValidateBookmark(bookmark)
-        try
-            let targetNode = s:oBookmark.GetNodeForName(a:name, 1)
-        catch /NERDTree.BookmarkedNodeNotFound/
-            let targetNode = s:oTreeFileNode.New(s:oBookmark.BookmarkFor(a:name).path)
-        endtry
-        call targetNode.makeRoot()
-        call s:RenderView()
-        call s:PutCursorOnNode(targetNode, 0, 0)
-    endif
-endfunction
 "FUNCTION: s:CenterView() {{{2
 "centers the nerd tree window around the cursor (provided the nerd tree
 "options permit)
@@ -2803,18 +2822,6 @@ function! s:Toggle(dir)
         call s:InitNerdTree(a:dir)
     endif
 endfunction
-
-"FUNCTION: s:ValidateBookmark(bookmark) {{{2
-function! s:ValidateBookmark(bookmark)
-    try
-        call a:bookmark.mustExist()
-        return 1
-    catch /NERDTree.BookmarkPointsToInvalidLocation/
-        call s:RenderView()
-        call s:Echo(a:bookmark.name . "now points to an invalid location. See :help NERDTreeInvalidBookmarks for info.")
-    endtry
-endfunction
-
 "SECTION: Interface bindings {{{1
 "============================================================
 "FUNCTION: s:ActivateNode(forceKeepWindowOpen) {{{2
@@ -2844,9 +2851,9 @@ function! s:ActivateNode(forceKeepWindowOpen)
         let bookmark = s:GetSelectedBookmark()
         if !empty(bookmark)
             if bookmark.path.isDirectory
-                call s:BookmarkToRoot(bookmark.name)
+                call bookmark.toRoot()
             else
-                if s:ValidateBookmark(bookmark)
+                if bookmark.validate()
                     call s:OpenFileNode(s:oTreeFileNode.New(bookmark.path))
                 endif
             endif
@@ -2912,7 +2919,7 @@ function! s:BindMappings()
     command! -buffer -complete=customlist,s:CompleteBookmarks -nargs=1 RevealBookmark :call <SID>RevealBookmark('<args>')
     command! -buffer -complete=customlist,s:CompleteBookmarks -nargs=1 OpenBookmark :call <SID>OpenBookmark('<args>')
     command! -buffer -complete=customlist,s:CompleteBookmarks -nargs=* ClearBookmarks call <SID>ClearBookmarks('<args>')
-    command! -buffer -complete=customlist,s:CompleteBookmarks -nargs=+ BookmarkToRoot call <SID>BookmarkToRoot('<args>')
+    command! -buffer -complete=customlist,s:CompleteBookmarks -nargs=+ BookmarkToRoot call s:oBookmark.ToRoot('<args>')
     command! -buffer -nargs=0 ClearAllBookmarks call s:oBookmark.ClearAll() <bar> call <SID>RenderView()
     command! -buffer -nargs=0 ReadBookmarks call s:oBookmark.CacheBookmarks(0) <bar> call <SID>RenderView()
     command! -buffer -nargs=0 WriteBookmarks call s:oBookmark.Write()