2012-04-11 8 views
1

私は、検索をした、とcloeset回答フォームHow can I automatically close preview window after I move cursor to another window in Vim?を得ました。しかし、私はそれが正しくタグリストのプラグインで動作しないことがわかった。ここで入力後にvim previewウィンドウを自動的に閉じる方法:qコマンドを使用してウィンドウ、タブまたはvimを終了するには?

は、上記のリンクから取られたコードです:

autocmd WinLeave * pc 

autocmd WinLeave * call ClosePreviewWindow() 
function ClosePreviewWindow() 
    if &pvw 
     pclose 
    endif 
endfunction 

私はautopreviewと呼ばれるvimのプラグインを使用しています。一般的には、ptagコマンドを呼び出してプレビューウィンドウを開き、バッファウィンドウに戻ることができます。ここでは、バッファウィンドウからプレビューウィンドウにジャンプして戻ると、WinLeaveイベントを2回トリガし、プレビューウィンドウが開いた直後に閉じられるという問題があります。だからそれは現れなかった。 WinLeaveをTabLeave/BufLeaveに置き換えようとしましたが、他の問題が発生しました。だから私はここにきて助けに来た。

更新日:
多分私はtabclose/qaコマンドを使うべきですか?

答えて

1

WinLeaveの代わりにWinEnterイベントを使用しようとしましたか?ハンドラでは、プレビューウィンドウに入っているかどうかを確認し、そうでない場合はプレビューウィンドウが開いているかどうかを確認し、必要ならば閉じます(上のコードのように)。

あなたの説明に基づいて、この作品を作るためにあなたが以前ウィンドウがプレビューウィンドウがいたかどうかを確認する必要があります

編集。 winnr("#")は、前のウィンドウ番号を与え、「私の前のウィンドウのための(ウィンドウローカルであることを起こる)オプション値pvwを得る」、と言うことは何

if getwinvar(winnr("#"), "&pvw") == 1 
    " do stuff, e.g. pclose 
endif 

:このスニペットはことを教えてくれます窓。

+0

プレビューウィンドウが開いているかどうかを確認する方法はありますか?私はグーグルで、何の手がかりも得ていませんでした。 – Lion

+0

編集した私の答え –

+0

あなたの答えをありがとう。私は回避策のアプローチを見つけました。バッファにプレビューウィンドウしかなく、Tlist_Exit_OnlyWindow = 1に設定した場合、taglist.vimのソースコードを閉じてプレビューウィンドウも自動的に閉じます。 – Lion

関連する問題