diff --git a/denops/denippet/main.ts b/denops/denippet/main.ts index 9570079..cca9ed4 100644 --- a/denops/denippet/main.ts +++ b/denops/denippet/main.ts @@ -53,7 +53,7 @@ export function main(denops: Denops): void { clearTimeout(timeoutId); timeoutId = setTimeout(async () => { const id = lambda.register(denops, async () => { - await session.update(); + await session.update(session.snippet?.currentNode().tabstop); return true; }); await denops.call( @@ -65,9 +65,9 @@ export function main(denops: Denops): void { }, syncDelay); } - async function forceUpdate(): Promise { + async function forceUpdate(tabstop?: number): Promise { clearTimeout(timeoutId); - await session.update(); + await session.update(tabstop); } denops.dispatcher = { @@ -123,7 +123,7 @@ export function main(denops: Denops): void { if (syncDelay >= 0) { const updateId = lambda.register(denops, async () => { if (syncDelay === 0) { - await session.update(); + await session.update(session.snippet?.currentNode().tabstop); } else if (syncDelay > 0) { debounceUpdate(syncDelay); } @@ -149,7 +149,7 @@ export function main(denops: Denops): void { return; } if ((await fn.mode(denops))[0] === "i") { - await forceUpdate(); + await forceUpdate(session.snippet.currentNode().tabstop); } session.guard(); await session.jump(dir); diff --git a/denops/denippet/session.ts b/denops/denippet/session.ts index 9b36c76..b1219c3 100644 --- a/denops/denippet/session.ts +++ b/denops/denippet/session.ts @@ -49,12 +49,12 @@ export class Session { await clearExtmark(this.denops); } - async update(): Promise { + async update(tabstop?: number): Promise { if (this.isGuarded) { return; } try { - await this.snippet?.update(); + await this.snippet?.update(tabstop); } catch (e) { echoerr(this.denops, e); await this.drop(); diff --git a/denops/denippet/snippet.ts b/denops/denippet/snippet.ts index c43316b..480541f 100644 --- a/denops/denippet/snippet.ts +++ b/denops/denippet/snippet.ts @@ -86,11 +86,11 @@ export class Snippet { return this.jumpableNodes[this.nodeIndex]; } - async update(): Promise { + async update(tabstop?: number): Promise { await this.currentNode().updateInput(); const eventignore = await op.eventignore.get(this.denops); await op.eventignore.set(this.denops, "all"); - await this.snippet.updateRange(undefined, this.currentNode().tabstop); + await this.snippet.updateRange(undefined, tabstop); await op.eventignore.set(this.denops, eventignore); // Extmark could disappear with updateRange(). await this.currentNode().setExtmark();