プラグインから「タブ幅」と「論理行で表示する」の設定

  1. 「Mery」の開発、ありがとうございます。

    現在プラグインの「MeryRowCol.dll」を公開していますが機能拡張を考えています。

    1:「タブ幅」は「Mery.ini」から読み取っていますが、「Mery」を起動中にタブ幅を変更しても直ぐには反映されません。

    その対応として、「タブ幅」をプラグインから設定できる機能を使いたいです。「Mery」側は指定された数値に「タブ幅」を設定します。「プラグイン」側は設定値を記憶して、記憶したタブ幅で処理を行います。

    2:「論理行で表示する」の状態は「MEID_VIEW_LINE_NUMBERS_LOGICAL = 3111」を指定すれば、チェックの状態を取得できます。

    「論理行で表示する」のチェックとアンチェックをプラグインから行うことは可能でしょうか?該当しそうな「nCmdID」を試しましたが見つかりませんでした。

    要望の元になったのは
    1:文書によりタブ幅を変更する(変更する機会が多い)
    2:プログラムの文書では「論理行」で、それ以外では「表示行」を設定する
    という内容です。
    「MeryRowCol.dll」から両方の変更が出来れば設定手順が簡単になるのではと考えています。

    よろしくお願いします。

     |  大石剛司  |  返信
  2. こんにちは。開発お疲れさまです。

    > 1:文書によりタブ幅を変更する(変更する機会が多い)

    通常、タブ幅は全体で共通の設定ですが、プラグインからであれば、文書ごとにタブ幅を変更することができます。

    Editor_Info(FEditorHandle, MI_SET_INDENT_SIZE, 8);
    

    ただし、この方法で変更したタブ幅はその文書だけに適用される一時的な設定であり、オプション画面などの共通設定には反映されません。

    現在のタブ幅は、次のように MI_GET_INDENT_SIZE で取得できます。

    LSize := Editor_Info(FEditorHandle, MI_GET_INDENT_SIZE, 0);
    

    一度も変更されていない場合 (オプション画面の共通設定が適用されている場合) は、-1 が返ります。

    > 2:プログラムの文書では「論理行」で、それ以外では「表示行」を設定する

    MEID_VIEW_LINE_NUMBERS_LOGICAL でチェック状態の取得まではできているとのことなので、あとは Editor_ExecCommand を使えば制御できます。

    たとえば、次のような関数を用意します。

    procedure SetLineNumbersLogicalChecked(AChecked: Boolean);
    var
      LChecked: BOOL;
    begin
      LChecked := False;
      Editor_QueryStatus(FEditorHandle, MEID_VIEW_LINE_NUMBERS_LOGICAL, @LChecked);
      if AChecked <> LChecked then
        Editor_ExecCommand(FEditorHandle, MEID_VIEW_LINE_NUMBERS_LOGICAL);
    end;
    

    これで、次のように呼び出せば OK です。

    SetLineNumbersLogicalChecked(True); // [行番号を論理行で表示] をオン
    

    このようにすれば、チェック状態に関係なく、明示的にオン/オフを切り替えることができます。

     |  Kuro  |  返信
スポンサーリンク