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

":autocmd TextChanged * FOO" 自体が TextChanged イベントを発生させる #1159

Closed
machakann opened this issue Mar 18, 2018 · 17 comments

Comments

@machakann
Copy link

質問・報告の内容

vim -u NONE -N で Vim を立ち上げた後、 :au TextChanged * echom 'foo' を実行すると foo がすぐに表示されます。 :au コマンド自体が TextChanged を発生させているようです。実行の前後で b:changedtick は変わっていないのでおかしいように思います。

Vimのバージョン

8.0.1494 以降

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

  • Windows 10 Education 64bit
  • Archlinux 64bit
@machakann
Copy link
Author

issue1159

@h-east
Copy link
Member

h-east commented Mar 18, 2018

これで直ります。が自信なし。

All>
patchのレビューをお願いします。
https://gist.github.com/h-east/db4472b2e104ca79f6dce56974e791d4

@mattn
Copy link
Member

mattn commented Mar 19, 2018

@h-east ありがとうございます。vim -u NONE -N の場合は直ってる様に見えます。ただ(何が原因か分かってないですが)、-u NONE -N を付けない場合は初回の TextChanged が発火しない様です。

@h-east
Copy link
Member

h-east commented Mar 19, 2018

patch 8.0.1494
バッファを作成した時点でcurbuf->b_last_changedtickが0、CHANGEDTICK(curbuf)が2になっているため上記patchの判定部分で真になってしまいTEXTCHANGEDイベントが発生しています。
対策としては、バッファ生成時にcurbuf->b_last_changedtick = CHANGEDTICK(curbuf)してやればいいんじゃないかと考えました。

@machakann
Copy link
Author

TextChanged に自動コマンドを設定するプラグインが存在した場合、上の手順で再現しないみたいですね

@mattn
Copy link
Member

mattn commented Mar 19, 2018

au TextChanged * echom 'changed'

パッチを適用した後の動作です。

vim -u NONE -N

起動後 :so test.vim を実行してテキストを変更 → changed

vim (.vimrc は別ファイル名にしておく)

起動後 :so test.vim を実行してテキストを変更 → changed 出ない

@h-east
Copy link
Member

h-east commented Mar 19, 2018

私の環境(fedora 26)だとどちらもchanged出ますね。

テキストを変更

これどうやってます?私はYpとやっています。

@mattn
Copy link
Member

mattn commented Mar 19, 2018

iてきとう<ESC> で確認しました。

@h-east
Copy link
Member

h-east commented Mar 19, 2018

それはTextChangedI ←I (Insert mode)での話なのでTextChangedの対象にはならないです。

@mattn
Copy link
Member

mattn commented Mar 19, 2018

はい。ただ -u NONE -N と動作が違うのはなんででしょうかね。

@mattn
Copy link
Member

mattn commented Mar 19, 2018

たぶん本件とは別の問題なので別に issue 作りますね。

@mattn
Copy link
Member

mattn commented Mar 19, 2018

すいません #1159 は僕の勘違いでした。 @h-east OK ですのでテスト足して出して貰って良いですか。

@h-east
Copy link
Member

h-east commented Mar 22, 2018

test追加しました。(Rev. 2)
testこれでええんかな?(いちおうpatch前だとFaildになって、patch後だとSuccessにはなる)
https://gist.github.com/h-east/db4472b2e104ca79f6dce56974e791d4

@mattn
Copy link
Member

mattn commented Mar 22, 2018

LGTM

@h-east
Copy link
Member

h-east commented Mar 23, 2018

PRed.
vim/vim#2742

@h-east
Copy link
Member

h-east commented Mar 24, 2018

patch 8.0.1633

@machakann issue登録ありがとうございました。

@machakann
Copy link
Author

ありがとうございました!

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

No branches or pull requests

3 participants