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

feedkeys()からv_g_CTRL-Gを実行するとui_delay関数が2回実行される #1065

Open
norio13 opened this Issue Aug 3, 2017 · 1 comment

Comments

Projects
None yet
2 participants
@norio13

norio13 commented Aug 3, 2017

質問・報告の内容

v_g_CTRL-Gを実行すると通常は3秒でメッセージが消えますが、txフラグを付けたfeedkeys()から実行すると6秒間メッセージが表示されました。

下記のui_delayが2回実行されてました。
https://github.com/vim/vim/blob/v8.0.0844/src/normal.c#L1247

再現方法

sample1.vim:

normal! ii
call feedkeys("vg\<C-g>", 'tx')

Vim起動:

vim -Nu NONE

手打ちでExコマンドを実行:

:so sample1.vim

実行するとメッセージが表示されて、カーソルがコマンドラインに表示されます。
3秒後カーソルがバッファに移動されますがメッセージは表示されたままです。
実行してから6秒経過するとメッセージも消えます。

ただし、timerから実行した場合は問題ありません。
実行方法はsample1.vim同じです。

sample2.vim:

function! Callback(timer)
    normal! ii
    call feedkeys("vg\<C-g>", 'tx')
endfunction

call timer_start(0, 'Callback')

Vimのバージョン

8.0.844

OSの種類/ディストリ/バージョン

  • Linux Debian 9.1 stretch 64bit

その他

vim --cleanでも再現しますが、端末のサイズが小さいと
続けるにはENTERを押すかコマンドを入力してください
が出るのでvim -Nu NONEを指定しました。

evalfunc.cのf_feedkeys関数が実行中に1回、f_feedkeys関数を抜けた後にもう1回、合計2回ui_delay(3000L, FALSE)が実行されているように見えました。
調査に使用したpatchも載せます。
https://gist.github.com/norio13/c8b8e6bbdb1c3c11ac63a257e8ae1bac

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Aug 3, 2017

Member

Windows だと3秒でした。よくわかりません。

Member

mattn commented Aug 3, 2017

Windows だと3秒でした。よくわかりません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment