2016年2月22日月曜日

サクラエディタをHSPエディタに改造する(その2 ラベルなど一覧+タグジャンプ)

お待たせしました、セルディアです。

前回のサクラエディタHSP改造の続きです。

ラベル・命令・関数一覧を表示する


ソースコード内にあるラベル、命令や関数の一覧を表示できます。
また、そのラベルなどの名前をクリックすると、その行にスクロールしてカーソルを合わせてくれます。

(1) 以下の内容のルールファイルを適当なディレクトリに作成する

--------------------------HSP_temp.DL------------------------
;CommentChar=
#deffunc /// function
#defcfunc /// function
#modfunc /// function
#modcfunc /// function
*/ /// Except
* /// function
;comment /// function
---------------------------ここまで---------------------------

(今回はファイル名を「HSP_temp.DL」、ディレクトリを「C:\Program Files (x86)\sakura\keyword\」に作っています)

(2) 上のツールバーから「設定」→「タイプ別設定一覧」を選ぶ


(3) 前回の手順で作った「HSP」を選択し、「設定変更」を押す


(4) アウトライン解析方法から「ルールファイル」を選択し、(1)で作成したルールファイルを指定する。
  OKを押す


以上で手順は完了です。

ラベルなど一覧は、下の図のところをクリックするか、F11で出せます。


私の場合、こんなふうに右側にラベルなど一覧を出しています。
一覧中のラベルなどをクリックすると、その部分にジャンプできます。


さらに、ラベルなど一覧はファイルに記述されている順に表示されるのですが、一覧をさらにわかりやすくするために、コメント行を表示できるようにしました。
頭に「;comment」と付けた行が、ラベルなど一覧にも表示されます。
(完全に自分用機能なので、いらなければ無視してください…)



複数ファイルでもラベル・命令・関数の行に飛ぶ


プログラムの規模が大きくなってくると、処理に合わせて複数のファイルにプログラムを分けて記述する必要が出てくるかと思います。
その場合、上記のラベルなど一覧表示では、編集中のファイルの一覧しか出せないため、もっと便利にするために、簡単にラベルなどが定義されている場所に飛べるようにしましょう。

今回の手順で、ラベルなどにカーソルを合わせてF12キーを押すと、そのラベルなどが定義されている場所へジャンプできるようになります。同じディレクトリに置かれている他のHSPファイルにもジャンプすることができます。
Shift + F12キーでは、ジャンプする前の位置へ戻ることができます。

ただ、ラベルなどの定義場所にジャンプするためには、タグファイルが必要です。今回はタグファイルの作成キーをCtrl + F12キーに割り当てます。ソースコードを保存後、適宜タグファイルを作成する必要があります。

おまけで、サクラエディタの補完入力も使えるようにします。ラベル名などを入力中に、途中まで入力したところで補完入力キー(Ctrl + スペースキー)を押すと、残りの文字を自動で入力してくれます。複数候補がある場合は、一覧が出て十字キーなどで選択できます。

(1) PPAマクロを動かすためのDLLをダウンロードする

PPAのDLL配布サイト
http://ht-deko.com/junkbox.html#PPA

(サクラエディタのインストール場所に入れます。標準(64bit OS)の場合「C:\Program Files (x86)\sakura」フォルダ内です)

(2) ctagsをダウンロードする

CTAGS日本語対応版
http://hp.vector.co.jp/authors/VA025040/ctags/ctags_j.html

(サクラエディタのインストール場所「C:\Program Files (x86)\sakura」フォルダ内に置いた前提で進めます)

(3) 補完入力用の実行ファイルをダウンロードする

https://sites.google.com/site/seldiacotton/file/hokan.zip

(ctagsと同様、サクラエディタのインストール場所「C:\Program Files (x86)\sakura」フォルダ内に置いた前提で進めます)

(4) 以下の内容のファイルを作成して、サクラエディタのマクロフォルダ内に保存する

--------------------------maketag.ppa------------------------
var
  fileName : String; // 編集中のファイル名
  charPos : Integer; // 探索位置
  lengthOfName : Integer; // ファイル名の長さ
  charInName : String; // 比較用の1文字
  result : Integer; // 比較結果
  appPath : String; // 起動パス
  lengthOfPath : Integer; // 起動パスの長さ
  backSlashPos : Integer; // バックスラッシュの位置
begin
  fileName := S_GetFileName();
  lengthOfName := Length(fileName);
  backSlashPos := 0;
  // 後方から'\\'を探す
  for charPos := lengthOfName downto 0 do
    begin
      charInName := Copy(fileName, charPos, 1);
      result := CompareStr(charInName,'\');
      if result = 0 then
        begin
          // 見つかったら位置を覚えて抜ける
          backSlashPos := charPos;
          Break;
        end;
    end;
  // 起動パスを生成して起動
  lengthOfPath := backSlashPos;
  appPath := Copy(fileName, 0, lengthOfPath);
  Exec('C:\Program Files (x86)\sakura\ctags.exe', '-f "' + appPath + 'tags" --langdef=hspd --langmap=hspd:.hsp --regex-hspd="/^[ \t]*(\#deffunc[ \t]+|\#module[ \t]+|\#define[ \t]+|\#const[ \t]+|\#enum[ \t]+|\#defcfunc[ \t]+|\#modfunc[ \t]+|\#modcfunc[ \t]+|\*[ \t]*|\;[ \t]*tag[ \t]*)(global[ \t]+)?([a-zA-Z0-9_]+)/\3/" --excmd=number ' + appPath + '*.hsp' , True);
  Exec('C:\Program Files (x86)\sakura\hokan.exe', appPath + 'tags' , True);
end;
---------------------------ここまで---------------------------

※注意 サクラエディタのインストール場所が標準と違う場合は、「C:\Program Files (x86)\sakura」と書かれている部分をインストール場所に合わせてください。
 特に32bit OSの場合は「C:\Program Files\sakura」になっているはずなので必須です!

(前回の手順中で、マクロフォルダの設定をしています)


(5) 作成したマクロを登録する

「共通設定」マクロタブ
① 適当にマクロ番号を選択する(今回は3番を選択)
② 名前に「タグファイル作成」、Fileに先ほど作成したファイル名(maketag.ppa)を入力する
③ 設定ボタンを押して反映する


(5) キーに割り当てる

今回は「Ctrl + F12」に割り当てます。

① 「キー割り当て」タブに移動する
② 「Ctrl」チェックを付ける
③ 「Ctrl+12」を選択する


④ 種別から「外部マクロ」を選択する
⑤ 「タグファイル作成」を選択する
⑥ 「割付」ボタンを押す


(6) 補完入力の設定を行う

これが少し厄介で、補完入力用のファイルは編集中のファイルと同じ場所に作成されるのですが、設定では相対ディレクトリで指定することができません。
そのため、プロジェクトごとに補完入力用ファイルを切り替えねばなりません。

「タイプ別設定」支援タブ

単語ファイルに次のように入力する
<編集中のHSPファイルのディレクトリ>\hokan.txt

HSPの場合は「英大文字小文字を同一視」にチェックを付けていいかと思います


以上で設定は完了です。

残りの目標はまた次回へ。

1 件のコメント:

  1. すみません、ctagsをダウンロードしてきて中のexeを置こうとしたら、すでにsakuraエディタのインストールフォルダ内にctags.exeがあったのですがどうしたらいいんでしょう・・・
    それと補完入力用の実行ファイルがダウンロードできなくなっています。

    返信削除