Compare commits

...

1 Commits
6.3.0 ... 6.4.0

Author SHA1 Message Date
Alejandro Sanchez
a7886fb6c4 Allow use of function references as callbacks (#1067) 2019-12-14 20:25:17 -05:00
6 changed files with 19 additions and 7 deletions

View File

@@ -7,6 +7,8 @@
in an unordered list. The format is: in an unordered list. The format is:
- **.PATCH**: Pull Request Title (PR Author) [PR Number](Link to PR) - **.PATCH**: Pull Request Title (PR Author) [PR Number](Link to PR)
--> -->
#### 6.4
- **.0**: Allow use of function references as callbacks (HiPhish) [#1067](https://github.com/scrooloose/nerdtree/pull/1067)
#### 6.3 #### 6.3
- **.0**: Add new command that behaves like NERDTreeToggle but defaults to the root of a VCS repository. (willfindlay) [#1060](https://github.com/scrooloose/nerdtree/pull/1060) - **.0**: Add new command that behaves like NERDTreeToggle but defaults to the root of a VCS repository. (willfindlay) [#1060](https://github.com/scrooloose/nerdtree/pull/1060)
#### 6.2 #### 6.2

View File

@@ -1315,6 +1315,10 @@ following code conventions are used:
See this blog post for more details: See this blog post for more details:
http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
A number of API functions take a callback argument to call. The callback can
be either a string with the name of a function to call, or a |Funcref| object
which will be called directly.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
4.1. Key map API *NERDTreeKeymapAPI* 4.1. Key map API *NERDTreeKeymapAPI*

View File

@@ -66,7 +66,7 @@ endfunction
"FUNCTION: KeyMap.invoke() {{{1 "FUNCTION: KeyMap.invoke() {{{1
"Call the KeyMaps callback function "Call the KeyMaps callback function
function! s:KeyMap.invoke(...) function! s:KeyMap.invoke(...)
let Callback = function(self.callback) let Callback = type(self.callback) == v:t_func ? self.callback : function(self.callback)
if a:0 if a:0
call Callback(a:1) call Callback(a:1)
else else

View File

@@ -79,7 +79,7 @@ endfunction
"specified "specified
function! s:MenuItem.enabled() function! s:MenuItem.enabled()
if self.isActiveCallback != -1 if self.isActiveCallback != -1
return {self.isActiveCallback}() return type(self.isActiveCallback) == v:t_func ? self.isActiveCallback() : {self.isActiveCallback}()
endif endif
return 1 return 1
endfunction endfunction
@@ -94,7 +94,11 @@ function! s:MenuItem.execute()
call mc.showMenu() call mc.showMenu()
else else
if self.callback != -1 if self.callback != -1
call {self.callback}() if type(self.callback) == v:t_func
call self.callback()
else
call {self.callback}()
endif
endif endif
endif endif
endfunction endfunction

View File

@@ -14,8 +14,9 @@ endfunction
function! s:Notifier.NotifyListeners(event, path, nerdtree, params) function! s:Notifier.NotifyListeners(event, path, nerdtree, params)
let event = g:NERDTreeEvent.New(a:nerdtree, a:path, a:event, a:params) let event = g:NERDTreeEvent.New(a:nerdtree, a:path, a:event, a:params)
for listener in s:Notifier.GetListenersForEvent(a:event) for Listener in s:Notifier.GetListenersForEvent(a:event)
call {listener}(event) let Callback = type(Listener) == v:t_func ? Listener : function(Listener)
call Callback(event)
endfor endfor
endfunction endfunction

View File

@@ -500,8 +500,9 @@ function! s:Path.ignore(nerdtree)
endif endif
endfor endfor
for callback in g:NERDTree.PathFilters() for Callback in g:NERDTree.PathFilters()
if {callback}({'path': self, 'nerdtree': a:nerdtree}) let Callback = type(Callback) == v:t_func ? Callback : function(Callback)
if Callback({'path': self, 'nerdtree': a:nerdtree})
return 1 return 1
endif endif
endfor endfor