The default when naming a file in the command line is that extra white
space will be stripped away. It seems logical for file naming via the
fs_menu in nerdtree to follow that convention.
I have left the defaults of `trim` because they seem sensible.
Co-authored-by: Phil Runninger <PhilRunninger@users.noreply.github.com>
* Update the issue templates, making them simpler to use.
* Update FAQ answers.
Closes#1246.
- Add an if statement to the autocommand to prevent its running in the
Command Window.
Closes#1248.
- Add a new answer to show closing a tab when only NERDTree remains.
* Update the Bug issue template.
* Update version number in change log.
* Put `Callback` function variables in local scope.
This change prevents conflict with other `Callback` functions that are
defined elsewhere in global scope.
* Update version number in change log.
* Restore <CR>'s default behavior to be the same as o's.
* Remove the dictionary validation, and simplify initCustomOpenArgs().
There was a bug in the validation logic that caused a valid integer
value of 'keepopen' to always be overwritten with the defaultOpenArgs'
value. It was always comparing its type to the type of a string.
I fixed this by removing all the type validation, and wrapping the code
with a try-catch block. If NERDTreeCustomOpenArgs is not a dictionary,
an error message will print and the defaults will be used instead.
* Add fold markers to new functions.
* Update version number in change log.
* Replace #and() with two more-specific functions.
* Push NERDTreeQuitOnOpen checking earlier in the call stack.
* Fix bug in `go` key for file bookmarks. It was behaving like `gs`.
* Fix the `o` mapping for bookmark nodes and the g:NERDTree reference.
* Use get() function to shorten if statement logic.
* Update version number in change log.
* Remove obsolete reference to MERDTreeQuitOnOpen in comment.
* Removed directory separator from sort key
Directories had an additional separator appended to them which caused improper comparisons for other directories that shared similar prefixes.
* Updated changelog
* New menu command: Run system command in this directory.
* Echo the output from the system command.
* Update version number in change log.
* Address Vim linter message: change "\n" to nr2char(10)
* Use single quoted strings.
* Use system() instead of systemlist() for greater version compatibility.
systemlist() was introduced sometime in Vim 8+, so I switched to
system() for 7.4 compatibility.
* Add ability to specify a path to be ignored.
This ignore expression compares itself against the whole path of the
node, instead of just the tail component of the node.
* Remove debug statements and make it work on Windows.
* Restore the original self.str() to get OS-specific paths for comparing.
Using the UI-formatted path had two problems.
1. It always appended a forward slash at the end of the path, which was
unnecessary and made patterns like '/tmp/cache$[[path]]' not work as
expected.
2. It always used forward slashes to join the path components. I thought
this would be a good thing, but there's no reason to force Windows
users to use that syntax. They'll just need to remember to escape the
backslashes, like so: '\\Temp\\cache$[[path]]'
* Add documentation for the new [[path]] tag for NERDTreeIgnore.
* Replace the abbreviation 'dir' with the full word 'directory'.
* Update version number in change log.
* Revamp the README to improve clarity and provide more information.
* Verify correct behavior of suggested auto commands.
* Add my tribute to Norm Abrams. Be careful with those plugin managers.
* Other minor formatting and cleanup.
* Fix typos, reorder some sections, and tidy up the README.
* Give a better answer to the single NERDTree for all tabs question.
* More reformatting of text.
* Add basic installation instructions. Switch to single quotes.
* Update version number in CHANGELOG.
* Make sure a mirrored NERDTree is displayed at correct width.
* Remove references to unused variables.
b:NERDTreeOldWindowSize was referenced, but never set anywhere. No need
to keep it around.
* Refactor: Initialize variables a different way.
Using the get() function allows us to "let" variables more directly,
without using the execute command or requiring strings to be escaped.
This also eliminates the s:initVariable function. The new format is
shown below, and defines a default value if the user didn't provide a
value in the vimrc file.
let g:var = get(g: 'var', 'default value')
* Update version number in change log.
* Fix alignment of `let g:var = get(g:, 'var', <default>)` statements.
* Add a function to compare path objects.
* Remove redundant node comparison function, and rename the ones left.
* Remove the compareTo function in the Path object.
Use nerdtree#compareNodePaths(p1,p2) instead. There was no need for two
comparison functions that do the same thing. They were a little
different in their details, but that shouldn't be the case. Having only
one such function makes better sense and is easier to maintain.
* Update version number in change log.
* Replace s:Path.Slash() with nerdtree#slash().
* Check the value of &shell when determining the slash under Windows.
* Leave &shellslash unchanged when forming copy/delete commands.
* Fix fold marker.
* Update version number in change log.
* Add abort attribute to nerdtree#slash() to satisfy Vim style guide.
Co-authored-by: Phil Runninger <prunninger@vhtcx.com>
* Fix new NERDTrees' width when previous one was in the only window.
When leaving a NERDTree buffer, its window's width is remembered so that
that width can be used when showing the buffer again in a new window. If
NERDTree is the only window when leaving the buffer, it remembers the
whole width of the editor. When a new NERDTree window is created, it is
sized such that there is only a very small window for files to be opened
into.
To fix this, if NERDTree is the ONLY window, remember its width as the
value of g:NERDTreeWinSize, not the width of the editor.
* Update version number in change log.
* Limit opening or previewing into a split window to only file nodes.
* Prevent previwing directory nodes, which would create another NERDTree.
* Refactor the previewBookmark code to open directories a better way.
* Update version number in change log.
* Update documentation.
* Add open/preview in split/vsplit to bookmarks.
* Make preview split/vsplit bookmark work only on file nodes.
* Add quickhelp text for split/vsplit commands on bookmarks.
* Handle previewing directory bookmarks properly.
* Update documentation: bookmarks can be opened in a split/vsplit.
* Update version number in change log.
* Closes#1136. Allow concealed characters to show another character.
conceallevel=3 always hides the character, but conceallevel=2 allows an
alternate character to be displayed instead.
* Update version number in changelog.
* support for default viewer in Windows
* updated changelog
* Update nerdtree_plugin/fs_menu.vim
Co-authored-by: Phil Runninger <PhilRunninger@users.noreply.github.com>
* Update nerdtree_plugin/fs_menu.vim
Co-authored-by: Phil Runninger <PhilRunninger@users.noreply.github.com>
Co-authored-by: Phil Runninger <PhilRunninger@users.noreply.github.com>
* * fix duplicated slash in s:Path.isUnder() (on windows OS, for root directory on drive Path.str() return path with [back]slash)
* * Rewrite NERDTreePath.isUnder() and NERDTreePath.isAncestor() for direct comparison of paths without transformations
* Remove trailing slash, so we don't end up with two on root folder.
The str() function returns "C:\" on the root folder and "C:\temp" on
non-root folders, one with and one without a trailing backslash. This
inconsistency needs to be handled so the stridx() function will work
correctly.
* Make sure the change also works in a non-windows file system.
This commit handles an edge case that can be triggered with these
commands:
:cd /home/me
:e /foobar.txt (an existing file)
:NERDTreeFind
What happened was the root directory name '/' was being Resolved(), and
the trailing (and only) slash was being removed. The NERDTree was then
created in the current working directory, instead of the root directory.
:NERDTreeFind then wasn't able to find foobar.txt, and printed an error.
* Remove degugging statements.
* * ambiguity issue fix
Co-authored-by: Phil Runninger <philrunninger@gmail.com>
* Fix example code for the NERDTreeAddKeyMap function.
The quickhelpText didn't match what the statement in the callback
function actually did.
* Update version number in change log.
* Don't recreate the NERDTree if its root is the same as being requested.
* Use single quotes per Vint's style recommendation.
* Update version number in changelog.
* Use a simpler method of getting the NERDTree root path.
* Remove variable. Just compare agains the function call's result.
* Improve "g:NERDTreeQuickLook()"
The following improvements were made...
- Use variable sigils
- Shorten a local variable name
- Prefer an early return over testing for a negative
- Switch to single quotes
- Call "shellescape()" to pass a command argument [IMPORTANT!]
The final change is a critical fix for the security and reliability
of this function (see ":h system()").
Similar fixes for the other functions in this script will follow.
* Improve "g:NERDTreeRevealInFinder()"
This commit makes several style improvements and adds a missing call
to the "shellescape()" function.
See also: 56cfbcff1e
* Improve "g:NERDTreeExecuteFile()"
Refer to: 56cfbcff1e
* Improve "g:NERDTreeRevealFileLinux()"
Refer to: 56cfbcff1e
* Improve "g:NERDTreeExecuteFileLinux()"
Refer to: 56cfbcff1e
* Properly reveal "/" on Linux
This commit handles the edge case where a user invokes the "reveal"
function on "/" on a Linux box. There is nothing to do but open the
root directory itself since "/" has no parent.
* Update the "CHANGELOG.md" file
* Add final missing "shellescape()" calls
I initially thought that there were several more locations where
a call to "shellescape()" was required but omitted. However, there
are only two. I suppose I should have taken the time to look.
Fixing these was easy. I would be surprised if this change breaks
anything on the user side.
* Update the "CHANGELOG.md" file (again)
Use a more fitting description of the change...
* Fix infinity loop in FindParentVCSRoot (on windows os with 'set shellslash' in vimrc and no VCS in path)
* update CHANGELOG.md
* Update CHANGELOG.md
Co-Authored-By: Phil Runninger <PhilRunninger@users.noreply.github.com>
Co-authored-by: evgenij.vidershpan <evgenij.vidershpan@yandex.ru>
Co-authored-by: Phil Runninger <PhilRunninger@users.noreply.github.com>
* File Move: Escape existing directory name when looking for open files.
* Update version number in change log.
Co-authored-by: Phil Runninger <prunninger@vhtcx.com>
There was a fix in #1043 which improves the behavior for non saved
filenames. Those are not on disk, but also not empty. This lead to an
issue #1059 where actual "empty files" like created with vim-startify or
stdin lead to an error. This change fixes this by adapting the order of
the tests. It'll print "no file for the current buffer" for empty files.
Solves #1059