Ensure cursor in view after format (#4047)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
This commit is contained in:
parent
cc257e9bf9
commit
c9584251f3
1 changed files with 16 additions and 11 deletions
|
@ -2504,19 +2504,24 @@ async fn make_format_callback(
|
|||
) -> anyhow::Result<job::Callback> {
|
||||
let format = format.await?;
|
||||
let call: job::Callback = Box::new(move |editor, _compositor| {
|
||||
let view_id = view!(editor).id;
|
||||
if let Some(doc) = editor.document_mut(doc_id) {
|
||||
if !editor.documents.contains_key(&doc_id) {
|
||||
return;
|
||||
}
|
||||
|
||||
let scrolloff = editor.config().scrolloff;
|
||||
let doc = doc_mut!(editor, &doc_id);
|
||||
let view = view_mut!(editor);
|
||||
if doc.version() == doc_version {
|
||||
doc.apply(&format, view_id);
|
||||
doc.append_changes_to_history(view_id);
|
||||
doc.apply(&format, view.id);
|
||||
doc.append_changes_to_history(view.id);
|
||||
doc.detect_indent_and_line_ending();
|
||||
view.ensure_cursor_in_view(doc, scrolloff);
|
||||
if let Modified::SetUnmodified = modified {
|
||||
doc.reset_modified();
|
||||
}
|
||||
} else {
|
||||
log::info!("discarded formatting changes because the document changed");
|
||||
}
|
||||
}
|
||||
});
|
||||
Ok(call)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue