Sublime TextはMac・Windows・Linuxで使用できるテキストエディターで、とりわけ開発者に人気のテキストエディターです。
「IMESupport」プラグインはWindowsで全角入力時にインライン入力したい場合に必要なプラグインです。
Sublime Text 3でIMESupporutをインストールし、ユーザ設定の“ある項目”で小数点を設定すると、起動時にエラーになり、インライン入力が出来なくなります。
そのエラーの原因、そしてエラーの解決法について書いていきます。
使用しているバージョン
OSとSublime Textのバージョンを記載します。
- OS ⇒ Windows 7 64ビット Service Pack 1
- Sublime Text ⇒ 3 Build 3126
インライン入力とは?
↑の画像がインライン入力をしているところを撮ったスクリーンショットです。
Windowsの場合、IMESupportプラグインをインストールしていないと、上の画像のようなインライン入力は出来ません。
インストールしていない場合の入力は下のようになります。
ユーザ設定のある項目とは?
Sublime Textで「基本設定」 ⇒ 「基本設定」 ⇒ 「ユーザ」を選択すると、設定画面が開き、そこで「ある項目」が確認出来ます。
ある設定項目とは「line_padding_top」です。
エラーの内容
エラーの内容は以下です。
Traceback (most recent call last): File "{インストールフォルダー}¥sublime_plugin.py", line 389, in run_callback expr() File "{インストールフォルダー}¥sublime_plugin.py", line 522, in <lambda> run_callback('on_activated', callback, lambda: callback.on_activated(v)) File "C:¥Users¥{ユーザー名}¥AppData¥Roaming¥Sublime Text 3¥Packages¥IMESupport¥imesupportplugin.py", line 494, in on_activated self.update(view) File "C:¥Users¥{ユーザー名}¥AppData¥Roaming¥Sublime Text 3¥Packages¥IMESupport¥imesupportplugin.py", line 521, in update set_pos(window.hwnd(), pos) File "C:¥Users¥{ユーザー名}¥AppData¥Roaming¥Sublime Text 3¥Packages¥IMESupport¥imesupportplugin.py", line 576, in set_pos set_pos_st3(hwnd, pos) File "C:¥Users¥{ユーザー名}¥AppData¥Roaming¥Sublime Text 3¥Packages¥IMESupport¥imesupportplugin.py", line 585, in set_pos_st3 globalhook.set_inline_position(hwnd, *pos) File "C:¥Users¥{ユーザー名}¥AppData¥Roaming¥Sublime Text 3¥Packages¥IMESupport¥imesupport¥globalhook.py", line 44, in set_inline_position hwnd, WM_IMESUPPORT_SET_INLINE_POSITION, x << 16 | y, font_height) ctypes.ArgumentError: argument 4: <class 'TypeError'>: Don't know how to convert parameter 4
「{インストールフォルダー}」の箇所は、適宜読み替えてください。
設定項目の「line_padding_top」に「3.5」のように小数点を設定すると、上にあるようにエラーが発生します。
小数点を設定することで、IMESupportで使用しているプログラム(Pythonのライブラリー?)がエラーを出力する仕組みになっており、エラー発生個所の関数「ctypes.windll.user32.PostMessageW」の引数の4番目「font_height」が小数点値になり、PostMessageWの処理でエラーになってしまいます。
エラーの解決法
エラーの解決方法は「line_padding_top」に小数点を設定しないことです。
自分の環境で小数点ではなく、整数を設定したところ、起動時のエラーは発生せず、問題なくインライン入力が出来るようになりました。
Leave a reply