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

Projects
None yet
3 participants
@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

This comment has been minimized.

machakann commented Mar 18, 2018

issue1159

@h-east

This comment has been minimized.

Member

h-east commented Mar 18, 2018

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

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 19, 2018

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

@h-east

This comment has been minimized.

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

This comment has been minimized.

machakann commented Mar 19, 2018

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

@mattn

This comment has been minimized.

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

This comment has been minimized.

Member

h-east commented Mar 19, 2018

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

テキストを変更

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 19, 2018

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

@h-east

This comment has been minimized.

Member

h-east commented Mar 19, 2018

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 19, 2018

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 19, 2018

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 19, 2018

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

@h-east

This comment has been minimized.

Member

h-east commented Mar 22, 2018

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

@mattn

This comment has been minimized.

Member

mattn commented Mar 22, 2018

LGTM

@h-east

This comment has been minimized.

Member

h-east commented Mar 23, 2018

PRed.
vim/vim#2742

@h-east h-east self-assigned this Mar 23, 2018

@h-east

This comment has been minimized.

Member

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

This comment has been minimized.

machakann commented Mar 24, 2018

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

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