Assets.github.com%2fimages%2fgravatars%2fgravatar-user-420

WindowsのIMEでインライン変換を正しく表示できるようにしてみた Edit

  • mochizuki78
  • k0ta0uchi
  • catsnipe
  • kodam
  • M0M0NGA_bot
  • maroon1st
  • yamayama_k5
  • wonderful_panda
  • naoler
  • TONY0922
  • shin0O@github
  • yuyuchu3333
  • yoshi6jp@github
  • hokuto_
  • gemini7
  • K2Da
  • tokida@github
  • syoichi
  • _henge
  • mucho@github
Edit

WindowsのSublime Text 2はインライン変換が正しく表示できません。これを直すプラグインを作りました。
以下のように、カーソル位置にインライン変換が表示されるようになります。

方法

IMESupportをインストールします。現在、Package Controlには登録していないので、コマンドプロンプト等で C:\Users(ユーザー名)\AppData\Roaming\Sublime Text 2\Packages に移動して、 git clone してください。
リポジトリは以下のURLです。
https://github.com/chikatoike/IMESupport

Icon-ok
6 users said this post was useful/correct.


とても助かるプラグインですね。
早速ですが、Windows7 64bitで動作確認してみました。
32bit版Sublime Text 2では正常に動作しましたが、64bit版では動作しませんでした。
いずれもまっさらの状態のBuild2220 Portable Versionで確認しました。

情報ありがとうございます。申し訳ありませんが、私は64bit版のWindowsは持っていないので、よろしければ問題解決に協力して頂けないでしょうか。
64bit版で動かした時に、コンソールに何か出力されていないでしょうか。(例えばPythonの例外発生時のスタックトレースなど)
コンソールは ctrl+@ で表示できます。

64bit版に対応しました。

64bit対応ありがとうございます。動作確認してみました。
Windows8 64bit版では正常に動作しましたが。Windows7 64bit版では動作しませんでした。
(コンソールで例外についても確認もしてみましたが特になさそうでした。)

こちらでも確認してみましたが、動作しました。
環境は Windows 7 64bit 英語版 + Sublime Text 2 64bit Build2220 + Google日本語入力 です。
手違いで英語版のWindowsをインストールしてしまいましたが、Google日本語入力で日本語入力できました。
そちらで動作しない理由はちょっとわかりません。

確認ありがとうございます。
再度確認したところ、Remove Packageを実行し、入れなおすと正常に動作しました。
早急な対応ありがとうございました。

素晴らしいプログラムありがとうございます。
色々試していたところ、上手く動作しないことがありましたのでご報告します。
Windows7 32bit Sublime Text 2 Version2.0.1(Build2217)を使っています。
標準にはない、変則的な画面分割を行ったところ、IMESupportが正しく動作しませんでした。

{
"keys": ["alt+shift+2"],
"command": "set_layout",
"args":
{
"cols": [0.0, 0.5, 1.0],
"rows": [0.0, 0.9, 1.0],
"cells": [[0, 0, 1, 2], [1, 0, 2, 1], [1, 1, 2, 2]]
}
},

その時、ctrl + @ で出るコンソールには以下のエラーが出ていました。

Traceback (most recent call last):
File ".\sublimeplugin.py", line 200, in on_selection_modified
callback.
module_, "on_selection_modified", FAST_EVENT_TIMEOUT)
File ".\sublime_plugin.py", line 154, in run_timed_function
ret = f()
File ".\sublime_plugin.py", line 199, in
run_timed_function(lambda: callback.on_selection_modified(v),
File ".\imesupportplugin.py", line 505, in on_selection_modified
File ".\imesupportplugin.py", line 525, in update
File ".\imesupportplugin.py", line 205, in calc_cursor_position
File ".\imesupportplugin.py", line 270, in calc_offset
File ".\imesupportplugin.py", line 473, in make_list2d
AssertionError

通常の3分割などではエラーは出ないものの、動作がズレているようです。
可能でしたら修正していただけると助かります。よろしくお願いします。

不具合報告ありがとうございます。

標準にはない、変則的な画面分割を行ったところ、IMESupportが正しく動作しませんでした。

こちらでも問題を確認しました。
こんな分割が出来るなんて知りませんでした!
完全に想定していなかった分割方法なので確かに動作しません。
後で修正します。

通常の3分割などではエラーは出ないものの、動作がズレているようです。

これは メニューの View->Layout->Columns: 3 または Rows: 3 を選択したときの分割状態のことでしょうか?
こちらでは正しく動いています。動作がズレているというのはインライン入力の表示位置がズレているということでしょうか?

お答えありがとう御座います。

こんな分割が出来るなんて知りませんでした!
完全に想定していなかった分割方法なので確かに動作しません。

Monitor Fileで開いているタブが邪魔だったんで、小さい窓作ったのです。
ごめんなさい:)

これは メニューの View->Layout->Columns: 3 または Rows: 3 を選択したときの分割状態のことでしょうか?

説明が足りませんでしたね、すみません。View->Layout->Columns: 3 の時でした。
もう少し詳しく動作を見てみたのですが、

・3列ともタブがある場合は正常動作する
・どこか1列でもタブがないと、インライン入力の表示位置が左にズレてしまう

といった感じでした。通常全ての列にタブがあるでしょうし、問題ない…?
後、(関係ないとは思いますが)自分は横に2枚ディスプレイを繋げて使っています。

https://github.com/chikatoike/IMESupport のREADMEの制限事項より

垂直分割時に、左側に1つもタブ(View)が表示されていない場合、右側のViewでは正しい位置に表示されません。これは、Viewがないとウィンドウ左端からの距離が計算出来ないためです。同様に、水平分割時に上側にViewがない場合は下側で正しい位置に表示されません。

タブがないと正しい位置に表示されないのはこのプログラムの制限事項です。
ただ、位置計算する時だけ空のタブを表示するという方法を思いつきました。
うまくいくか分かりませんが、試してみます。

なるほどそうでしたか。制限事項を見落としておりました。失礼しました。
ご無理のない範囲で、実装いただければと思います。

Sublime Text 2 64bit + Windows 7 64bit + ATOK 2012
で動作OKでした。(master[55da95e11257ee9bf3021f37186f77e9314dc117])
既知の不具合もATOKでも問題ありませんでした。
ただ、File→New View into Fileを行うと、入力欄?が左上に移動しますが、
タブ切り替えを行って、また新しいタブに戻りキャレットを動かしてからだと通常通りに動きました。

yanolab@github さん

File→New View into File した時の不具合は Sublime Text 自体の不具合なので完全な対策は難しいのですが、適当に対策してみました。パッケージを更新して試してみてください。

Sign up and follow chikatoike :)

Sign up with GitHub/Twitter

x close