assistant: Undo workflow step when buffer is discarded (#16465)
This fixes a weird bug:
1. Use `/workflow` in assistant
2. Have it generate a step that modifies a file
3. Either (a) select the step in the assistant and have it auto-insert
newlines (b) select "Transform" to have the step applied
4. Close the modified file in the editor ("Discard")
5. Re-open the file
6. BUG: the changes made by assistant are still there!
The reason for the bug is that the assistant keeps references to buffers
and they're not closed/reloaded when closed/reopened.
To fix the bug we now rollback the applied workflow steps when
discarding a buffer.
(This does *not* yet fix the issue where a workflow step inserts a new
buffer into the project/worktree that does not show up on the file
system yet but in `/file` and hangs around until Zed is closed.)
Release Notes:
- N/A
Co-authored-by: Bennet <bennet@zed.dev>
This commit is contained in:
@@ -106,6 +106,7 @@ pub enum Event {
|
||||
Saved,
|
||||
FileHandleChanged,
|
||||
Closed,
|
||||
Discarded,
|
||||
DirtyChanged,
|
||||
DiagnosticsUpdated,
|
||||
}
|
||||
@@ -1691,6 +1692,7 @@ impl MultiBuffer {
|
||||
language::Event::Reparsed => Event::Reparsed(buffer.read(cx).remote_id()),
|
||||
language::Event::DiagnosticsUpdated => Event::DiagnosticsUpdated,
|
||||
language::Event::Closed => Event::Closed,
|
||||
language::Event::Discarded => Event::Discarded,
|
||||
language::Event::CapabilityChanged => {
|
||||
self.capability = buffer.read(cx).capability();
|
||||
Event::CapabilityChanged
|
||||
|
||||
Reference in New Issue
Block a user