-
-
Notifications
You must be signed in to change notification settings - Fork 611
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fixed: git rename not showing up for the renamed file #1783
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can actually avoid ->
detection and quoting/escaping issues completely by using the -z
machine readable option. See git help status
.
The only complication is that we must split the results on NUL instead of LF in Runner:_run_git_job
. Runner:_log_raw_output
will likely need to be changed to log the split results instead of raw results.
Running with log.types.git
is useful.
lua/nvim-tree/git/runner.lua
Outdated
if path:sub(1, 1) == '"' then | ||
-- incase " -> " is a part of the file name | ||
local _, j = path:find '" %-> "' | ||
path = path:sub(j, -1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI: string.sub
can be used to match without any special/pattern characters.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm, how would you do that? I couldn't find anything on Google that let me use string.sub
to match substring.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh bugger... I got that wrong. It should be string.find
I've recently used it for a path here:
-- filter files with no open buffer and directories containing no open buffers |
Fixed -> pattern to escape - Fixed "\"" and "\\" in filename
@alex-courtis |
Ouch, that is tricky. It looks like we can use the magic Time box that at 20 mins: if you can't get that working, I'm happy to go with the I'm out of time; I'll review again next weekend. |
@alex-courtis Done, this is much cleaner! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested OK.
Many thanks for the change and going the extra mile!
@@ -44,7 +52,7 @@ function Runner:_getopts(stdout_handle, stderr_handle) | |||
local untracked = self.list_untracked and "-u" or nil | |||
local ignored = (self.list_untracked and self.list_ignored) and "--ignored=matching" or "--ignored=no" | |||
return { | |||
args = { "--no-optional-locks", "status", "--porcelain=v1", ignored, untracked, self.path }, | |||
args = { "--no-optional-locks", "status", "--porcelain=v1", "-z", ignored, untracked, self.path }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fantastic! Thank you.
local path = line:sub(4, -2) | ||
if utils.str_find(status, "R") then | ||
-- skip next line if it is a rename entry | ||
skip_next_line = true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting that -z swaps from and to... It works.
…aults (#1777) * chore(mappings): remove mappings via vim.keymap.del instead of filtering mappings, to allow for multiple ways of specifying a key * doc: specify that the terminal emulator must be configured to use the patched font * feat(renderer): add NvimTreeOpenedFolderIcon NvimTreeClosedFolderIcon (#1768) * feat: Add highlight group for opened folder closes #1674 * docs: Add NvimTreeOpenedFolderIcon default * feat: Add NvimTreeClosedFolderIcon highlight group Defaults to NvimTreeFolderIcon * feat: add diagnostics.show_on_open_dirs git.show_on_open_dirs (#1778) * feat(diagnostics): only show diagnostic on closed folder * feat(git): only show git icon on closed folder * docs: Update feature_request.md (#1788) * Update feature_request.md Closes #1654 * Update feature_request.md Co-authored-by: Alexander Courtis <alex@courtis.org> * 1786 git next prev land on dirs (#1787) * Filtered dir with git status that are open when show_on_open_dir is false * refactored for single source of truth of existence of git status on a node Putting `has_git_status()` in `explorer.common` because that's where node.status is constructed Or at least I think that's where it's constructed * 1786 semantic nit Co-authored-by: Alexander Courtis <alex@courtis.org> * fix(git): git rename not showing up for the renamed file (#1783) * fixed git rename not showing up for the renamed file * considered " -> " being a part of the filename Fixed -> pattern to escape - Fixed "\"" and "\\" in filename * using string.find(, , true) to match plain -> * Using -z and removed unnecessary logic * feat(view): always enable cursorline, users may change this behaviour via Event.TreeOpen (#1814) * Update view.lua * set cursorline to true * feat(event): dispatch Event.NodeRenamed on cut-paste (#1817) * feat(view): add filters.git_clean, filters.no_buffer (#1784) * feat(view): add filters.git_clean * feat(view): add filters.git_clean * feat(view): add filters.no_buffer * feat(view): filters.no_buffer misses unloaded, handles buffer in/out * feat(view): filters.no_buffer matches directories specifically * feat(view): filters.no_buffer clarify targets * feat: add placeholder filters.diagnostics_ok, refactor filters * feat(view): remove placeholder filters.diagnostics_ok * doc: consolidate and clarify :help examples * doc: format help * feat: paste and create always target closed folder, remove create_in_closed_folder (#1802) * Fix default for file creation in closed directories * Make paste in closed directories consistent with create * doc: clarify create_in_closed_folder * Remove create_in_closed_folder option * doc: clarify create_in_closed_folder removal message (whoops) Co-authored-by: Alexander Courtis <alex@courtis.org> * on_attach is user's or default, nothing else; legacy generated on_attach includes defaults Co-authored-by: baahrens <bahrens@compeon.de> Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com> Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com> Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com> Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com> Co-authored-by: Eric Haynes <ehaynes99@gmail.com>
…ttps://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach (#1579) * chore(mappings): migrate legacy mappings under the hood * chore(mappings): POC for help and :help on_attach keymaps * chore(mappings): POC for help and :help on_attach keymaps * chore(mappings): add desc to all mappings, show in help, reformat help * chore(mappings): add desc to all mappings * chore(mappings): add desc to all mappings * chore(mappings): escape help keys * chore(mappings): migrate legacy mappings under the hood: map keymap to legacy mappings * chore(mappings): migrate legacy mappings under the hood: remove dispatch * Revert "chore(mappings): migrate legacy mappings under the hood: remove dispatch" This reverts commit f6f439b. * chore(mappings): migrate legacy mappings under the hood: pass node to action_cb * chore(mappings): migrate legacy mappings under the hood: remove dispatch * chore(mappings): migrate legacy mappings under the hood: replace mappigns with keymaps in help * chore(mappings): generate on_attach from user's legacy mappings * chore(mappings): generate on_attach from user's legacy mappings * chore(mappings): merge cleanup * chore(mappings): use default mappings when on_attach not present, log legacy migration * on_attach is default or user only, legacy and generation includes defaults (#1777) * chore(mappings): remove mappings via vim.keymap.del instead of filtering mappings, to allow for multiple ways of specifying a key * doc: specify that the terminal emulator must be configured to use the patched font * feat(renderer): add NvimTreeOpenedFolderIcon NvimTreeClosedFolderIcon (#1768) * feat: Add highlight group for opened folder closes #1674 * docs: Add NvimTreeOpenedFolderIcon default * feat: Add NvimTreeClosedFolderIcon highlight group Defaults to NvimTreeFolderIcon * feat: add diagnostics.show_on_open_dirs git.show_on_open_dirs (#1778) * feat(diagnostics): only show diagnostic on closed folder * feat(git): only show git icon on closed folder * docs: Update feature_request.md (#1788) * Update feature_request.md Closes #1654 * Update feature_request.md Co-authored-by: Alexander Courtis <alex@courtis.org> * 1786 git next prev land on dirs (#1787) * Filtered dir with git status that are open when show_on_open_dir is false * refactored for single source of truth of existence of git status on a node Putting `has_git_status()` in `explorer.common` because that's where node.status is constructed Or at least I think that's where it's constructed * 1786 semantic nit Co-authored-by: Alexander Courtis <alex@courtis.org> * fix(git): git rename not showing up for the renamed file (#1783) * fixed git rename not showing up for the renamed file * considered " -> " being a part of the filename Fixed -> pattern to escape - Fixed "\"" and "\\" in filename * using string.find(, , true) to match plain -> * Using -z and removed unnecessary logic * feat(view): always enable cursorline, users may change this behaviour via Event.TreeOpen (#1814) * Update view.lua * set cursorline to true * feat(event): dispatch Event.NodeRenamed on cut-paste (#1817) * feat(view): add filters.git_clean, filters.no_buffer (#1784) * feat(view): add filters.git_clean * feat(view): add filters.git_clean * feat(view): add filters.no_buffer * feat(view): filters.no_buffer misses unloaded, handles buffer in/out * feat(view): filters.no_buffer matches directories specifically * feat(view): filters.no_buffer clarify targets * feat: add placeholder filters.diagnostics_ok, refactor filters * feat(view): remove placeholder filters.diagnostics_ok * doc: consolidate and clarify :help examples * doc: format help * feat: paste and create always target closed folder, remove create_in_closed_folder (#1802) * Fix default for file creation in closed directories * Make paste in closed directories consistent with create * doc: clarify create_in_closed_folder * Remove create_in_closed_folder option * doc: clarify create_in_closed_folder removal message (whoops) Co-authored-by: Alexander Courtis <alex@courtis.org> * on_attach is user's or default, nothing else; legacy generated on_attach includes defaults Co-authored-by: baahrens <bahrens@compeon.de> Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com> Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com> Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com> Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com> Co-authored-by: Eric Haynes <ehaynes99@gmail.com> * on_attach_default hardcoded * format default_on_attach * source default on_attach directly * remove human mappings help * simplified on_attach generation * simplified on_attach generation * generate default on_attach * generate default on_attach * split out keymap_legacy * add recently introduced mappings * legacy api.config.mappings.active and default * legacy api.config.mappings.active and default * on_attach help and readme * legacy generate handles action = "" * legacy generate handles action = * legacy generate gives defaults when no user mappings * legacy generate handles action = "" * legacy generate api handles overrides * legacy generate handles subsequent setup, on_attach retains deep copies of legacy config * add wiki link to generated on_attach * add opts helper function for on_attach, prefixing 'nvim-tree: ' --------- Co-authored-by: kiyan <yazdani.kiyan@protonmail.com> Co-authored-by: baahrens <bahrens@compeon.de> Co-authored-by: Richard Li <38484873+chomosuke@users.noreply.github.com> Co-authored-by: gegoune <69750637+gegoune@users.noreply.github.com> Co-authored-by: rishabhjain9191 <rishabh.jain9191@gmail.com> Co-authored-by: Anton <14187674+antosha417@users.noreply.github.com> Co-authored-by: Eric Haynes <ehaynes99@gmail.com>
After renaming a file, rename icon only shows up on parent directory. No icon shows up on the file itself. This PR fixes that.
Edit: It now also deal with escape characters in quoted filenames (e.g. "a \"quoted\" file name") correctly