nerdtree

A tree explorer plugin for vim.
Index Commits Files Refs
commit 64a9579c11b63e2fe0242d45ca12455a7a7d2833
parent 09e1dbec105df8f2acd928d96ad8c887a6a52c20
Author: Martin Grenfell <martin.grenfell@gmail.com>
Date:   Sat,  2 May 2015 22:20:59 +0100

add a path filter API

Add an API to allow custom "path filter callbacks" to be added.

Previously we allowed one path filtering function to exist called
`NERDTreeCustomIgnoreFilter`. This has been removed and replaced with an
API to allow any number of such functions to exist -  via the new
`NERDTreeAddPathFilter()`

Diffstat:
Mlib/nerdtree/nerdtree.vim | 14++++++++++++++
Mlib/nerdtree/path.vim | 10++++++----
Mplugin/NERD_tree.vim | 5+++++
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/lib/nerdtree/nerdtree.vim b/lib/nerdtree/nerdtree.vim
@@ -3,6 +3,11 @@
 let s:NERDTree = {}
 let g:NERDTree = s:NERDTree
 
+"FUNCTION: s:NERDTree.AddPathFilter() {{{1
+function! s:NERDTree.AddPathFilter(callback)
+    call add(s:NERDTree.PathFilters(), a:callback)
+endfunction
+
 "FUNCTION: s:NERDTree.Close() {{{1
 "Closes the primary NERD tree window for this tab
 function! s:NERDTree.Close()
@@ -116,6 +121,15 @@ function! s:NERDTree.New(path)
     return newObj
 endfunction
 
+"FUNCTION: s:NERDTree.PathFilters() {{{1
+function! s:NERDTree.PathFilters()
+    if !exists('s:NERDTree._PathFilters')
+        let s:NERDTree._PathFilters = []
+    endif
+    return s:NERDTree._PathFilters
+endfunction
+
+
 "FUNCTION: s:NERDTree.render() {{{1
 "A convenience function - since this is called often
 function! s:NERDTree.render()
diff --git a/lib/nerdtree/path.vim b/lib/nerdtree/path.vim
@@ -392,6 +392,12 @@ function! s:Path.ignore()
                 return 1
             endif
         endfor
+
+        for callback in g:NERDTree.PathFilters()
+            if {callback}({'path': self, 'nerdtree': b:NERDTree})
+                return 1
+            endif
+        endfor
     endif
 
     "dont show hidden files unless instructed to
@@ -403,10 +409,6 @@ function! s:Path.ignore()
         return 1
     endif
 
-    if exists("*NERDTreeCustomIgnoreFilter") && NERDTreeCustomIgnoreFilter(self)
-        return 1
-    endif
-
     return 0
 endfunction
 
diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
@@ -196,6 +196,11 @@ function! NERDTreeCWD()
     call NERDTreeFocus()
     call nerdtree#ui_glue#chRootCwd()
 endfunction
+
+function! NERDTreeAddPathFilter(callback)
+    call g:NERDTree.AddPathFilter(a:callback)
+endfunction
+
 " SECTION: Post Source Actions {{{1
 call nerdtree#postSourceActions()