From 2a44016f78686ef1ac419178932c4e6d75e7318d Mon Sep 17 00:00:00 2001 From: socketteer Date: Mon, 13 Nov 2023 07:57:36 -0500 Subject: [PATCH] reduce editor lag by making render async and preventing too many renders --- main.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/main.ts b/main.ts index dd7d153..89c3ac9 100644 --- a/main.ts +++ b/main.ts @@ -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; @@ -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);