-
-
Notifications
You must be signed in to change notification settings - Fork 278
Keep current file selected after staging #1760
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
base: master
Are you sure you want to change the base?
Conversation
I'm going to do my best to review all your PR's soon, just bear in mind I have three kids, two of which are six months old 😅 |
No worries! Take your time, I know how demanding twins can be. |
@@ -18,23 +17,33 @@ local function get_local_diff_view(section_name, item_name, opts) | |||
section_name = "working" | |||
end | |||
|
|||
local function update_files() | |||
local function update_files(current_file_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.
it looks like this argument will always be nil? I don't see any callers passing it.
git.repo:dispatch_refresh { | ||
source = "diffview_update", | ||
callback = function() end, | ||
} | ||
|
||
local repo_state = git.repo.state | ||
if not repo_state then | ||
return files | ||
end |
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.
Not sure about this - the git repo should always have state at this point. How would you get here with an uninitialized repository?
view:on_files_staged(function() | ||
vim.schedule(function() | ||
Watcher.instance():dispatch_refresh() | ||
end) | ||
end) |
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.
Can you explain why this needs to be scheduled, instead of non-blocking async? Not sure I follow.
This PR fixes #1448 where Diffview would jump back to the first file after saving.
To fix this in Neogit, I've updated the Diffview integration:
update_files
, which then uses it to ensure the correct file remains selected.Note on a related Diffview issue:
I also noticed that Diffview itself doesn't always handle writing edits to staged files correctly (changes made in the diff view to a staged file might not reflect in the worktree, appearing lost on refresh). I've fixed this in my fork of Diffview.