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()`
When opening a file we will "reuse" a window if the buffer is already
open somewhere.
Add an option to NERDTreeOpener to configure it to not reuse windows
across tabs.
Expand the event system to have explicit Event objects and potentially
many Notifiers. Previously they was only one notifier and one (implied)
event.
A lot of this is stolen from #358.
Add 2 new classes and move code into them from autoload:
* NERDTree. Each nerdtree buffer now has a NERDTree object that holds
the root node and will old other util functions
* UI. Each NERDTree object holds a UI object which is responsible for
rendering, getting the current node, etc
Still a fair few methods to sort through in autoload (many of which will
end up in the above classes) - need sleep though.
Rename it to the more intention revealing NERDTreeRespectWildIgnore.
Use it directly in the `globpath()` call rather than surrounding if
statement. Its subjective, but I find this clearer.
Add an initializer for the option.
NERDTree can now optionally ignore the dot at the beginning of hidden
filenames for sorting to show them next to normal files if
`g:NERDTreeSortHiddenFirst` is set to 0. (By default it's set to 1 to
preserve the current behavior.) This is just like what GNU ls does when
`LC_COLLATE` environment variable is set to `en_US`.
I found an error when I tried to use [git_menu.vim](g:NERDTreeMenuController):
```
Error detected while processing function nerdtree#invokeKeyMap..91..90..<SNR>52_showMenu..65..82:
line 2:
E121: Undefined variable: s:MenuController
E15: Invalid expression: s:MenuController.New(self.children)
line 3:
E121: Undefined variable: mc
```
I searched the line at which it happened
then, I found that `s:MenuController` is not defined in `menu_item.vim` but in menu_controller.vim .
So I corrected the name to refer to MenuController.