fixed: git rename not showing up for the renamed file#1783
fixed: git rename not showing up for the renamed file#1783alex-courtis merged 4 commits intonvim-tree:masterfrom chomosuke:fix-git-rename
Conversation
alex-courtis
left a comment
There was a problem hiding this comment.
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.
FYI: string.sub can be used to match without any special/pattern characters.
There was a problem hiding this comment.
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.
Oh bugger... I got that wrong. It should be string.find
I've recently used it for a path here:
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! |
alex-courtis
left a comment
There was a problem hiding this comment.
Tested OK.
Many thanks for the change and going the extra mile!
| 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 }, |
| 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.
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