-
Notifications
You must be signed in to change notification settings - Fork 11
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
IMEのON/OFFをsyntaxで制御する #13
Comments
本体もいじる案を提案したいです。 自分の提案する案は、「VimスクリプトでInsertEnterの時にCommentの中にいたらIMEをonする」という案です。
しかし現状この挙動通りにはいかなくて、単純に また逆に「InsertEnterの時にCommentの外にいたらIMEをoffにする」 |
tyruさんの提案はハイブリッドってところですね。 私の最初の想定ではsyntaxにIME可/不可を設定できるようにして、 tyru案のほうが本体をいじる手間は少なくてステキそうなんですが、何か他に案はあるでしょうか? もっとも環境によってIMEのON/OFFの制御は超むずかったりしますけどw |
ふと思ったのですが、iminsert の変更と実際のIMの状態の変更のタイミングがずれていること自体がバグだったりしないでしょうか。 |
いやそれは意図した動作です。 なのでIME制御用のeval funcを追加するのが確実な気がします。 |
なんかiminsertを即時適用しても良い気がしてきた。
みたいな。 |
@tyru さん: 私の手元のWindowsだとそのコードで、コメントの中だけ自動的にIMEがONになる(意図どおりに動く)んですが…動かないといった環境を教えてもらえますか? Vimのソースコードを確認してたら、src/edit.cのedit()の中でautocmd InsertEnterを実行したあとでiminsertの値を実際のIMEのON/OFFに適用するってなってました。私は勘違いでコレが逆になってて動かないだろうなと予測していたんですが、この順番ならInsertEnterで設定したiminsertは正しく反映されます。仮に反映できないとしたら、IME制御がうまくいかないOSとかUI環境があるという話で、また別の問題になります。 あと、もともとの提案はIMEをONにできないようにしたい、という提案とも読める。となるとimdisableでの制御ができるか。 |
ちょっとやってみたのだけれど augroup LimitIME
autocmd!
autocmd InsertEnter * call s:LimitIME()
autocmd CursorMovedI * call s:LimitIME()
augroup END
function! s:LimitIME()
let disable = 1
for id in synstack(line('.'), col('.'))
let attr = synIDattr(synIDtrans(id), 'name')
if attr ==# 'Comment' || attr ==# 'String'
let disable = 0
break
endif
endfor
if &l:imdisable != disable
let &l:imdisable = disable
endif
endfunction
といった状況。再現環境はWindowsの香り屋版。imdisableの実装内容をチェックしなきゃダメっぽい。 |
推測だけど、CursorModeIはiminsertも当然働かないハズ…だよなぁ? |
@koronさん すみません、自分の環境(Ubuntu 11.04, Vim 7.3.322)でも正しく動きました。 試してみたら、onするだけでなく、こんな風にoffにするのもできますね。
|
自分の上のコメントで出した例のようにonとoff両方制御したいです。 |
あ、まだcloseしないでください。 最悪のケースでもwon't fixという分類ができてからcloseしたいです。 |
了解です。 |
これは変わらないが、そこで変えたいという要求は今のところないので本issueは won't fix として閉じます。 |
ちょっと面白い提案があったので、議論、検討用に転載します。
プログラマ的には「わかる」要求。
The text was updated successfully, but these errors were encountered: