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
Closed

Comments

@machakann
Copy link

@machakann machakann commented Mar 18, 2018

質問・報告の内容

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

@machakann machakann commented Mar 18, 2018

issue1159

@h-east
Copy link
Member

@h-east h-east commented Mar 18, 2018

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

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

@mattn
Copy link
Member

@mattn mattn commented Mar 19, 2018

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

@h-east
Copy link
Member

@h-east 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

@machakann machakann commented Mar 19, 2018

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

@mattn
Copy link
Member

@mattn 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 h-east commented Mar 19, 2018

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

テキストを変更

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

@mattn
Copy link
Member

@mattn mattn commented Mar 19, 2018

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

@h-east
Copy link
Member

@h-east h-east commented Mar 19, 2018

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

@mattn
Copy link
Member

@mattn mattn commented Mar 19, 2018

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

@mattn
Copy link
Member

@mattn mattn commented Mar 19, 2018

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

@mattn
Copy link
Member

@mattn mattn commented Mar 19, 2018

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

@h-east
Copy link
Member

@h-east 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 mattn commented Mar 22, 2018

LGTM

@h-east
Copy link
Member

@h-east h-east commented Mar 23, 2018

PRed.
vim/vim#2742

@h-east h-east self-assigned this Mar 23, 2018
@h-east
Copy link
Member

@h-east h-east commented Mar 24, 2018

patch 8.0.1633

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

@h-east h-east closed this Mar 24, 2018
@h-east h-east added the xlose/fixed label Mar 24, 2018
@machakann
Copy link
Author

@machakann machakann commented Mar 24, 2018

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

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

Successfully merging a pull request may close this issue.

None yet
3 participants