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

インサートモードでの変更時に TextChanged (not TextChangedI) が発生する #1160

Closed
mattn opened this issue Mar 19, 2018 · 6 comments

Comments

@mattn
Copy link
Member

mattn commented Mar 19, 2018

#1159 より派生。理由があるなら close します。

#1159 のパッチを当てて(当てないと本来の動作でない為)、以下を実行

au TextChanged * echom 'changed'

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

(1) vim -u NONE -N

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

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

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

テキストの変更は isomething<esc> で行う。

@machakann
Copy link

Vim 8.0.1616 (#1159 パッチ済み) on Windows 10 64bit で再現しました。

ついでに試してみたところ、 #1159 の原因と目されているコミットの一つ前の Vim 8.0.1493 (#1159 パッチ無し) でも再現します。

@machakann
Copy link

matchparen.vim の読み込みを止めるとどちらの場合も (1) の動作になります。

vimrc

let g:loaded_matchparen = 1

@mattn
Copy link
Member Author

mattn commented Mar 19, 2018

わかりました。その様ですね。

vim -u NONE -N は nocompatible なので matchparen.vim が読み込まれる → テキストの変更時に TextChangedI が発生し、同じトリガで changed が出てしまう。

vim (.vimrc なし) は compatible なので matchparen.vim が読み込まれない → changed は出ない

という事ですね。前者の方が発生して良いのか少しグレーですけど。

@mattn
Copy link
Member Author

mattn commented Mar 19, 2018

たぶん動作としては matchparen が TextChangedI,TextChanged で待っており、そのバブリングで TextChanged が誘発、changed という事だと思いますが、それだと TextChangedI だけバブリングして欲しい。

@mattn mattn changed the title -u NONE -N とそうでない場合で TextChanged の動作が異なる インサートモードでの変更時に TextChanged (not TextChangedI) が発生する Mar 19, 2018
@mattn
Copy link
Member Author

mattn commented Mar 19, 2018

タイトル変えました。

@mattn
Copy link
Member Author

mattn commented Mar 19, 2018

あ、失礼しました。僕が誤解してました。ESC で戻ってるので TextChanged は発生しますね。

これは仕様ですね。

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