Closed uga-rosa closed 10 months ago
I think pum#entered()
check is needed.
diff --git a/denops/denippet/snippet.ts b/denops/denippet/snippet.ts
index 480541f..1d7bced 100644
--- a/denops/denippet/snippet.ts
+++ b/denops/denippet/snippet.ts
@@ -1,4 +1,4 @@
-import { Denops, op } from "./deps/denops.ts";
+import { Denops, op, fn } from "./deps/denops.ts";
import { lsputil } from "./deps/lsp.ts";
import { is } from "./deps/unknownutil.ts";
import * as Node from "./node.ts";
@@ -87,6 +87,9 @@ export class Snippet {
}
async update(tabstop?: number): Promise<void> {
+ if (await fn.exists(this.denops, "*pum#entered") && await this.denops.call("pum#entered")) {
+ return;
+ }
await this.currentNode().updateInput();
const eventignore = await op.eventignore.get(this.denops);
await op.eventignore.set(this.denops, "all");
We found it difficult to control this on Pum side, so we had to put in a check using pum#entered
on Denippet side.
Thx @Shougo !
I have tested with eventignore
, but it does not work...
It cannot be fixed from pum.vim side. it is limitation.
session.update()中にTextChangedIが呼ばれるっぽい。 そのせいでpumが壊れる。
最小構成
手順
if
と入力。補完窓が開くので<C-y>
で確定してスニペットを展開if
と入力。補完候補を選択しても何も起きない。<BS>
でif
を消して今度はi
だけ打ち、候補を選択