nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit fcb4ec0303653f5191ed0f1722574ee3dc1662af
parent 8211554efa507644ab4ee28da866237b9ae7e879
Author: marty <martin_grenfell@msn.com>
Date:   Sat, 22 Aug 2009 01:25:18 +1200

make the menu api more awesome

Diffstat:
Mplugin/NERD_tree.vim | 31+++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -688,7 +688,6 @@ function! s:MenuItem.Create(options)
 
     let newMenuItem.text = a:options['text']
     let newMenuItem.shortcut = a:options['shortcut']
-    let newMenuItem.callback = a:options['callback']
     let newMenuItem.children = []
 
     let newMenuItem.isActiveCallback = -1
@@ -696,6 +695,11 @@ function! s:MenuItem.Create(options)
         let newMenuItem.isActiveCallback = a:options['isActiveCallback']
     endif
 
+    let newMenuItem.callback = -1
+    if has_key(a:options, 'callback')
+        let newMenuItem.callback = a:options['callback']
+    endif
+
     if has_key(a:options, 'parent')
         call add(a:options['parent'].children, newMenuItem)
     else
@@ -716,6 +720,15 @@ function! s:MenuItem.CreateSeparator(options)
     return s:MenuItem.Create(options)
 endfunction
 
+"FUNCTION: MenuItem.CreateSubmenu(options) {{{3
+"make a new submenu and add it to global list
+function! s:MenuItem.CreateSubmenu(options)
+    let standard_options = { 'callback': -1 }
+    let options = extend(a:options, standard_options, "force")
+
+    return s:MenuItem.Create(options)
+endfunction
+
 "FUNCTION: MenuItem.enabled() {{{3
 "return 1 if this menu item should be displayed
 "
@@ -746,7 +759,13 @@ endfunction
 "FUNCTION: MenuItem.isSeparator() {{{3
 "return 1 if this menuitem is a separator
 function! s:MenuItem.isSeparator()
-    return self.callback == -1
+    return self.callback == -1 && self.children == []
+endfunction
+
+"FUNCTION: MenuItem.isSubmenu() {{{3
+"return 1 if this menuitem is a submenu
+function! s:MenuItem.isSubmenu()
+    return self.callback == -1 && !empty(self.children)
 endfunction
 
 "CLASS: TreeFileNode {{{2
@@ -2594,12 +2613,16 @@ let g:NERDTreeFileNode = s:TreeFileNode
 let g:NERDTreeBookmark = s:Bookmark
 
 function! NERDTreeAddMenuItem(options)
-    return s:MenuItem.Create(a:options)
+    call s:MenuItem.Create(a:options)
 endfunction
 
 function! NERDTreeAddMenuSeparator(...)
     let opts = a:0 ? a:1 : {}
-    return s:MenuItem.CreateSeparator(opts)
+    call s:MenuItem.CreateSeparator(opts)
+endfunction
+
+function! NERDTreeAddSubmenu(options)
+    return s:MenuItem.Create(a:options)
 endfunction
 
 function! NERDTreeAddKeyMap(options)