From 64a9579c11b63e2fe0242d45ca12455a7a7d2833 Mon Sep 17 00:00:00 2001 From: Martin Grenfell Date: Sat, 2 May 2015 22:20:59 +0100 Subject: [PATCH] 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()` --- lib/nerdtree/nerdtree.vim | 14 ++++++++++++++ lib/nerdtree/path.vim | 10 ++++++---- plugin/NERD_tree.vim | 5 +++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/nerdtree/nerdtree.vim b/lib/nerdtree/nerdtree.vim index 8e3bdde..55f3dd7 100644 --- 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 index dbecb02..48793eb 100644 --- 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 index 3eae93b..ed769e9 100644 --- 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()