最終更新日 2024-09-25

入力補完用途のフェイクのhmPy.py

Visual StudioなどでhmPy用途のIronPythonでの開発をする際の入力補完問題

hmPyに用意された各種オブジェクト・フィールド・メソッドは、秀丸からのみ利用可能です。
IronPythonのライブラリとして提供されているわけではありなせん。

裏を返せば、ソースの記述の際に、このままでは入力補完がままならず、
書きづらいという問題があります。

そこで、 簡易的な対策として、「入力補完向け」と割り切った「hmPy.py」を提供します。

ダウンロード

更新日 2024/03/21
hmPy.fake.zip

hmPy.py

この「hmPy.py」のライブラリは、本番(秀丸マクロ実行中内で) import するライブラリではありません。
自身でhmPy用のpython(IronPython)プログラムを作成する場合には、
このフェイクのhmPy.pyファイルを適当にコピーしてインポートすると良いでしょう。

ironpythonは、Visual Studio では、ユーザーの独自作成のライブラリのモジュールをすぐに認識しないことが多いため、

from hmPy import hm
    

の部分を記述したら、一度ソリューション(プロジェクト)を閉じて、改めてソリューションを開きましょう

フェイク(モック)のhmPy.pyの使い方
# coding: utf-8

try:
    in_hidemaru = hm
except:
    from hmPy import hm

    # 秀丸プロセスではなく、普通のIronPythonでの実行となるので、
    # 秀丸内でしか存在しない値を、ダミーとして自分で入れておく
    # 適当に利用する変数等の値を自分で入れておく
    hm.Macro.Var["x"] = 33
    hm.Macro.Var["date"] = "17/09/26(火)"
    hm.Macro.Var["lineno"] = 33
    hm.Edit.TotalText = "あああああああ"

try:
    hm.debuginfo(hm.version)
     
    ret = hm.Macro.Eval(r'''
        message "OK";
    ''')

     # 秀丸本体が無いので内部実装はただのハッシュマップとなっている
    hm.Macro.Var["$aaa"] = "あいうえお";
     
    hm.debuginfo(hm.Macro.Var["$aaa"]);
     
    date = hm.Macro.Var['date']
    hm.version = 3 # エラーとなる
    hm.debuginfo(hm.version)
    
except err:
    hm.debuginfo(err)

IronPythonでは、監視モニターで出る値が、少し特殊なオブジェクトの中に格納される形となります。
注意しましょう。