2016-01-20 11 views
6

vscode拡張機能について学び始めたばかりで、vscode.window.showInformationMessage()によって生成される情報メッセージボックスをプログラムで簡単に閉じることができますか?あなたが再現したい場合は、私はWordCount demo hereで開始し、チュートリアルで説明したようコピーした後、/、extension.tsの体を貼り付け、私は私がした内容そう...vscode.windowのshowInformationMessageボックスをプログラムで閉じる方法

export function activate(context: ExtensionContext) { 
    let wordCounter = new WordCounter(); 
    let wcTimeout = null; 
    let setWCTimeout = function() { 
     clearWCTimeout(); 
     wcTimeout = setTimeout(clearWCTimeout, 1000); 
    }; 
    let clearWCTimeout = function() { 
     if (wcTimeout !== null) { 
      clearTimeout(wcTimeout); 
      wcTimeout = null; 
      // clear/hide the message box here, but how? 
     } 
    }; 

    let disposable = commands.registerCommand('extension.sayHello',() => { 
     wordCounter.updateWordCount(); 
     setWCTimeout(); 
     vscode.window 
      .showInformationMessage(wordCounter._getWordCount(window.activeTextEditor.document).toString()) 
      .then(clearWCTimeout); 
    }); 

    // Add to a list of disposables which are disposed when this extension is deactivated. 
    context.subscriptions.push(wordCounter); 
    context.subscriptions.push(wcTimeout); 
    context.subscriptions.push(disposable); 
} 

ようactivate()にいくつかの変更をしました試した、またはみなさ:nullと空の文字列の両方でvscode.window.showInformationMessage()を呼び出す

  • - 何も、null以外に何もしません|目の
  • 処分に現れる新しい情報メッセージボックスに空の文字列の結果をeコマンド - これはうまくいくとは思えませんでした。もちろん、再度動作する前にコマンドを再登録する必要があります。
  • DOMにアクセスして「Close」ボタンとトリガーAそれをクリック - しかし、運

サイドノートをDOMを操作するためのエントリポイントのいずれかの種類を見つけるん:このパラダイムの中のベストプラクティスでは、私は午前興味。例えば、私が使用したいかもしれないjsタイマーを包む一般的なノードlibがありますか?しかし、それは私の主な関心事ではありません。遅延メカニズム(setTimeout()/clearTimeout())についてコメントする場合は、この環境/パラダイム内のベストプラクティス(「それは醜い」を超えて、「それはあなたが個人的に行う方法ではない」という観点から建設的にしてください。)

+0

ええ、情報メッセージはあまりにも迷惑で、ステータスバーメッセージはほとんど目立たない... –

答えて

5

それは現在のところ不可能である

vscodeためにgithubの上で提起関連の問題がありました:。情報メッセージを閉じることができないため、応答で与えられたhttps://github.com/Microsoft/vscode/issues/2732

理由はということです"その意図は、ユーザがそれらに反応しなければならないことである"

推奨アプローチとして、更新/却下する必要のあるメッセージにステータスバーを使用することをお勧めします。