fix: stop hiding cached gutter markers while edits refresh
This commit is contained in:
+2
-3
@@ -4932,9 +4932,8 @@ impl Editor {
|
||||
return None;
|
||||
}
|
||||
let changes = self.active.gutter_changes.as_ref()?;
|
||||
if changes.revision != self.active.text_revision
|
||||
|| Some(changes.path.as_path()) != self.path()
|
||||
{
|
||||
// Keep the last completed markers visible while the worker recomputes after edits.
|
||||
if Some(changes.path.as_path()) != self.path() {
|
||||
return None;
|
||||
}
|
||||
changes.lines.get(row).copied().flatten()
|
||||
|
||||
+18
-1
@@ -1610,17 +1610,34 @@ mod tests {
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.editor.handle(Input::Char('i'));
|
||||
session.editor.handle(Input::Char('x'));
|
||||
assert_eq!(session.editor.gutter_change(1), None);
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.editor.handle(Input::Char('y'));
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.editor.handle(Input::Backspace);
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.editor.handle(Input::Escape);
|
||||
session.editor.handle(Input::Char('u'));
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.editor.handle(Input::Char('U'));
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
assert!(!session.apply_gutter_result(
|
||||
second_request,
|
||||
vec![(first_buffer, Ok(vec![None, Some(Change::Removed)]))],
|
||||
));
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
session.poll_gutter_at(now);
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Modified));
|
||||
assert!(session.apply_gutter_result(
|
||||
session.gutter_request_id,
|
||||
vec![(first_buffer, Ok(vec![None, Some(Change::Added)]))],
|
||||
));
|
||||
assert_eq!(session.editor.gutter_change(1), Some(Change::Added));
|
||||
session.poll_gutter_at(now + Duration::from_secs(1));
|
||||
assert!(session.apply_gutter_result(
|
||||
session.gutter_request_id,
|
||||
vec![(first_buffer, Ok(vec![None, None]))],
|
||||
));
|
||||
assert_eq!(session.editor.gutter_change(1), None);
|
||||
session.editor.execute(&format!("buffer {second_buffer}"));
|
||||
assert_eq!(session.editor.gutter_change(0), Some(Change::Added));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user