stryhのchangelog

Sublime Text 3で『IMESupport』プラグイン使用時、ユーザ設定で小数点を設定するとエラーになる

Sublime Text 3で『IMESupport』プラグイン使用時、ユーザ設定で小数点を設定するとエラーになる

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

インライン入力とは?

インライン入力 - Sublime Text 3で『IMESupport』プラグイン使用時、ユーザ設定で小数点を設定するとエラーになる
↑の画像がインライン入力をしているところを撮ったスクリーンショットです。

Windowsの場合、IMESupportプラグインをインストールしていないと、上の画像のようなインライン入力は出来ません。
インストールしていない場合の入力は下のようになります。
IMESupport未インストール - Sublime Text 3で『IMESupport』プラグイン使用時、ユーザ設定で小数点を設定するとエラーになる

ユーザ設定のある項目とは?

Sublime Textで「基本設定」 ⇒ 「基本設定」 ⇒ 「ユーザ」を選択すると、設定画面が開き、そこで「ある項目」が確認出来ます。
ある設定項目 - Sublime Text 3で『IMESupport』プラグイン使用時、ユーザ設定で小数点を設定するとエラーになる
ある設定項目とは「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」に小数点を設定しないことです。
自分の環境で小数点ではなく、整数を設定したところ、起動時のエラーは発生せず、問題なくインライン入力が出来るようになりました。

Sublime Text公式ページ

URL :
TRACKBACK URL :

Leave a reply

*
*
* (公開されません)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Return Top