reduce editor lag by making render async and preventing too many renders

This commit is contained in:
socketteer 2023-11-13 07:57:36 -05:00
parent 81e3ee04ee
commit 2a44016f78

12
main.ts
View file

@ -85,6 +85,8 @@ const DEFAULT_SETTINGS: LoomSettings = {
type CompletionResult = { ok: true; completions: string[] } | { ok: false; status: number; message: string };
let renderBusy = false;
export default class LoomPlugin extends Plugin {
settings: LoomSettings;
state: Record<string, NoteState>;
@ -103,8 +105,13 @@ export default class LoomPlugin extends Plugin {
saveAndRender() {
this.save();
if (renderBusy) return;
renderBusy = true;
this.renderLoomViews();
this.renderLoomSiblingsViews();
renderBusy = false;
}
thenSaveAndRender(callback: () => void) {
@ -676,7 +683,10 @@ export default class LoomPlugin extends Plugin {
);
updateDecorations();
this.saveAndRender();
setTimeout(() => {
this.saveAndRender();
}, 0);
// restore cursor position
editor.setCursor(cursor);