Posted at

サクラエディタの保存時にタグジャンプ用のtagsファイルを自動生成する

More than 3 years have passed since last update.

vimであれば保存時に自動的にtagsファイルを作るようなプラグインがありますが、サクラエディタの場合は無さそうだったのでマクロで何とかしてみました。


1. サクラエディタ本体を最新版に

古いのでも動くとは思いますが、まずは最新版に更新。

使っていない人もこの機会に。

http://sourceforge.net/projects/sakura-editor/files/sakura2/


2. ctagのWindows版を配置

以下のURLからWin32版(バイナリのみ)をダウンロードして展開し、sakura.exeと同一ディレクトリにctags.exeを配置します。

http://hp.vector.co.jp/authors/VA025040/ctags/


3. 保存した際、自動的にタグファイルを生成するためのマクロを配置

サクラエディタのディレクトリの下に macrosディレクトリを作成して、以下の内容を saveWithTags.jsとして保存します。

幾つかの項目は環境に合わせて変更を。


  • sakuraDirectory:サクラエディタ本体が配置されているディレクトリの絶対パス

  • targetDirectories:タグ生成対象のディレクトリリスト(円マークのエスケープを忘れずに)

  • options:基本的に変更する必要は無いが、特殊な拡張子の場合は-h--language-forceを追加


saveWithTags.js

//  サクラエディタ本体のディレクトリ(この直下にsakura.exe, ctags.exeが必要)

var sakuraDirectory = "D:\\UtilitySoft\\sakura";

// 対象のディレクトリ
var targetDirectories = ["D:\\temp\\dummy", "D:\\temp\\dummy2"];

// ctags用オプション
var options = "--excmd=number --append --exclude=tags";

var ctagPath = sakuraDirectory + "\\ctags.exe";

var WshShell = new ActiveXObject("WScript.Shell");

if(typeof(Editor) != "undefined") {
for(var i = 0; i < targetDirectories.length; i++) {
if(Editor.GetSaveFilename().indexOf(targetDirectories[i]) != -1) {
Editor.FileSave();
var tagFileOption = "-f " + targetDirectories[i] + "\\tags";
WshShell.Run([ctagPath, options, tagFileOption, Editor.GetSaveFilename()].join(" "), 0);
}
}
} else {
for(var i = 0; i < targetDirectories.length; i++) {
var tagFileOption = "-f " + targetDirectories[i] + "\\tags";
WshShell.Run([ctagPath, "--recurse", options, tagFileOption, targetDirectories[i]].join(" "), 0);
}
}



4. 保存した際にマクロを実行するように設定

サクラエディタを起動して、設定(O) → 共通設定(C) → マクロを開き、「マクロ一覧」に手順3で作成したmacrosディレクトリを指定します。

リストから空いている番号の欄を選択し、以下の値を入力します。


  • 名前(N):saveWithTags

  • File:saveWithTags.js

  • 「ファイル保存前(S)」にチェック

「設定(A)」を押して保存してから 設定画面を閉じます。

#これを忘れるとOKボタンを押して設定画面を閉じても保存されない


5. サクラエディタを再起動

既に開いているウィンドウには反映されない気がするので、念のため。


6. 全ファイルに対するタグ生成を実行

ここまでの手順で保存時に自動的にタグファイルが作られるようになりました。

とはいえ既存ファイルを全て保存しなおすのは手間のため、全ファイルに対するタグ生成を行います。

このマクロファイルはサクラエディタ外から呼ばれた場合、全targetDirectoriesの全ファイルに対してタグ生成を行うため、コマンドプロンプトで以下のコマンドを実行するとtagsをまとめて作ることができます。

cscript D:\UtilitySoft\sakura\macros\saveWithTags.js

SVNのフックスクリプト辺りに仕込んでおくとSVN Update時にも自動実行できそうですね。

幸せなタグジャンプライフを!