Previously we highlighted symlinks as one item (NERDTreeLink):
symlinked_file -> /path/to/target
Split this out into 3 highlight groups:
* NERDTreeLinkFile
* NERDTreeLinkDir
* NERDTreeLinkTarget
So we have:
symlinked_dir/ -> /foo/bar
-------------- ***********
^ ^
| |
NERDTreeLinkDir NERDTreeLinkTarget
Similarly for file links - with NERDTreeLinkFile instead of
NERDTreeLinkDir.
This allows users to modify how symlinks are highlighted. E.g. to make
them appear as normal files/dirs they could add this to their vimrc:
hi link NERDTreeLinkFile NERDTreeFile
hi link NERDTreeLinkDir NERDTreeDir
hi link NERDTreeLinkTarget ignore
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.
Allows the user to create or copy a nested node
in a single step with ma or mc, recursively
creating nested parent directories if needed, and
without throwing any errors if they already exist.
[Finishes #163, #34]
As a user it's a little jarring when a plugin maps over something I've
already defined. This patch fixes that problem, by using `<unique>` to
ensure unique mappings.
For more info see `:help <unique>`
Note: This has no effect if the mapping isn't already defined (that is,
NERDTree is defining a unique mapping), so this won't break for normal
users of the plugin.
Note: `:silent!` is needed to ignore the error that occurs when a
mapping is already defined.
Fixes#252
On some new versions of vim these files were being loaded before the
main NERD_tree.vim which was causing errors as dependencies werent
loaded in time. Move the classes into lib - so vim wont try to load them
until we tell it
Because NERD_Tree sets the filetype in its buffer, it's tempting to hook into the FileType event in order to customize it. Unfortunately, the buffer-local mappings are only defined _after_ setting the filetype, so one cannot un-/redefine them via this mechanism. (I know there are config variables and an API for that, but one may have other unforeseen uses.)
Therefore, swap the order and set the filetype last. Also, use :setlocal filetype= instead of :setfiletype. In the (remote) chance that a custom filetype detection mistakenly sets a filetype for the NERD_Tree buffer, the :setfiletype would be without effect, but we want to force the filetype (for the special syntax) here.
This is needed because some versions of vim dont let you chain method
calls together. So do the work in NERDTreeCreator instead of forcing all
callers to break the New().createXXX() calls out onto 2 lines with an
intermediate variable.
Fixes#226.
Add the NERDTreeCreator class.
Stick all functions related to creating a primary/secondary/mirror
nerdtree in there. We may break this down further in the future, but
this is a good starting point.
Make some of the interface binding functions in autoload/nerdtree
public. This is needed since we are accessing some of them from
NERDTreeCreator. Should be temporary until we get some kind of proper
interface binding system set up.
* fix the fold markers (they were unnecessarily deep)
* always have one line under each method
* update some of the fold comments -> always use FUNCTION in all caps
* add a modeline to each class file