kat0h / bufpreview.vim

A markdown previewer for Vim and Neovim
MIT License
96 stars 11 forks source link

autocmdでプレビューすると、ブラウザでタブが2つ開く。 #26

Closed yasunori0418 closed 2 years ago

yasunori0418 commented 2 years ago

環境

最小構成 こちらのリポジトリをクローンして貰ったあと、bufpreviewブランチに切り替えて以下のコマンドを実行してください。

./nvim.mcdl.sh
./nvim.mcdl.sh README.md

実行後は./nvim.mcdl.sh でローカル環境の構築と実行をしますので、再起動させて試しにリポジトリのREADME.mdを開いてみてください。

kat0h commented 2 years ago

想像だけど以下の順で実行されてます ・1つ目のopenServerが await denops.call に達する ・制御が戻ってきて2つ目のopenServerが走る ・2つ目のopenServerが await denops.call に達する ・制御が返ってくるも2つともサーバーが起動しているかの判定は終わってしまっている 20:39 https://github.com/kat0h/bufpreview.vim/blob/98f3222202fc58d5f7d741222f6daefa7a841e3d/denops/bufpreview/main.ts#L36 awaitはこれです、この位置に無ければ2つ開かれることは無かったはず main.ts await denops.call("bufnr") as number, https://github.com/kat0h/bufpreview.vim|kat0h/bufpreview.vimkat0h/bufpreview.vim | 投稿したメンバー: GitHub kuuote

kat0h commented 2 years ago
diff --git a/denops/bufpreview/main.ts b/denops/bufpreview/main.ts
index 1dcc82d..76b9ea6 100644
--- a/denops/bufpreview/main.ts
+++ b/denops/bufpreview/main.ts
@@ -2,6 +2,7 @@ import { Denops, ensureString, fn, op, open, vars } from "./lib/deps.ts";

 import Server from "./lib/server.ts";

+let isServerRunning: boolean = false
 // 一度に開けるサーバーは一つ
 let server: Server | undefined;

@@ -27,6 +28,10 @@ export function main(denops: Denops) {

       // サーバーを開く
       const openServer = async () => {
+        if (isServerRunning) {
+          return
+        }
+        isServerRunnig = true
         // サーバーが既に開かれているなら
         if (server != undefined) {
           server.close();
@@ -36,6 +41,7 @@ export function main(denops: Denops) {
           await denops.call("bufnr") as number,
           () => {
             server = undefined;
+            isServerRunning = false;
           },
         );
         server.run(host, port);

これで一応解決 runの過去形はranです

kat0h commented 2 years ago

参考: https://github.com/lambdalisue/deno-async

kat0h commented 2 years ago

場当たり的な対応で申し訳ないのですが、startServerの呼び出し中に再度呼ばれて開いてしまう挙動を修正しました

yasunori0418 commented 2 years ago

96b324b efe2eea このコミットで最小構成と本環境で確認しました。 問題なく動作しています。

yasunori0418 commented 2 years ago

対応ありがとうございます!!