Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

貼り付けた後、カーソルを動かさずにバッファを変更し、:splitしてから<Plug>(yankround-prev)すると古いウィンドウのリージョンハイライトが削除されない #9

Open
LeafCage opened this issue Dec 26, 2013 · 0 comments
Labels

Comments

@LeafCage
Copy link
Owner

リージョンハイライトに利用しているmatchadd()がウィンドウローカルな情報であるために、グローバルに働くyankroundのメイン機能と相容れないところがある。

  1. <Plug>(yankround-p)などでテキストを貼り付ける
  2. xなど、カーソルを動かさない方法でバッファを変更する
  3. :splitする
  4. <Plug>(yankround-prev)する
  nmap <expr><C-p>    yankround#is_active() ? "\<Plug>(yankround-prev)" : "<SID>(ctrlp)"

など、yankround#is_activate() での判定でfalseと判定される。そのとき、リージョンハイライトを消そうとするが、map-内なのでウィンドウの移動が禁じられている。
結果、リージョンハイライトが削除されずに残る。

修正案としては #8 と同じく、autocmd TextChangedを使うか。
そもそも:splitでウィンドウを切り替えたときを捕捉して抜ける前にハイライトを削除できたらそれが一番良いんですが、autocmd WinLeaveが恐らく発動しなかったはず(もう一度検証する必要有り)。
ウィンドウ切換を捕捉する系のautocmdが発動条件が謎なんですよね。狙ったときに発動してくれない・・。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant