#includeしているところにキャレットを合わせ(行にカーソルを移動させる)、
実行することで、#includeしているファイルを開いてくれます。
また、#additionしているファイルも同様に開いてくれます。
下のスクリプトをCtrl+F9で実行ファイルにし、
HSPのインストールフォルダ(hsed3.exeがあるフォルダ)に、作った実行ファイルを置いてください。
そうしたら、HSPスクリプトエディタの外部ツールに登録して使ってください。
(登録時に「ポップアップメニューに表示」にチェックを入れると便利)
良ければ、感想やバグ報告お願いします。
改造も自由にしてください。
要望も可能な範囲で受け付けます。
#packopt name "hsed_open_include_file" #packopt hide 1 #packopt xsize 1 #packopt ysize 1 #include "hsedsdk.as" #include "mod_regexp.as" // 指定したファイルが存在すれば開く #module #deffunc openIncludeFile str filePath exist filePath if strsize==-1 : return exist dir_exe+"\\hsed3.exe" if strsize==-1{ ; なければ既定のプログラム exec filePath,16 }else{ ; hsed3.exeがあれば、それで開く exec dir_exe+"\\hsed3.exe \""+filePath+"\"" } end #global hsed_exist: if stat==0: dialog "エディタが起動していません。",1,"エラー": end // エディタ起動確認 // 現在行のテキストを取得 ; アクティブタブのFootyのID取得 dim footyId hsed_getactfootyid footyId ; キャレット行取得 dim selLine hsed_capture sendmsg hIF@hsedsdk, _HSED_GETCARETLINE@hsedsdk, footyId selLine = stat ; 全体のテキスト取得 sdim text hsed_gettext text, footyId ; キャレット行のテキスト取得 sdim sTargetLine notesel text noteget sTargetLine, selLine // ファイルを開く ; ファイル名取得 sdim includeFilePath,256 includeFilePath = submatch(sTargetLine, "(?:#(?:include)|(?:addition))\\s+\"(.*?)\"") if includeFilePath!=""{ // 絶対パス (そのまま) openIncludeFile includeFilePath // ソースフォルダのパス(現在タブのファイルのディレクトリ情報)を取得 dim tabId hsed_gettabid tabId, footyId sdim sourceDir,256 hsed_getpath sourceDir, tabId sourceDir = getpath(sourceDir,32) ; 無題でなければ if sourceDir!=""{ // ソースフォルダからの相対パス&直下のファイル openIncludeFile sourceDir+"\\"+includeFilePath } // commonフォルダを検索 openIncludeFile dir_exe+"\\common\\"+getpath(includeFilePath,8) // 直下 openIncludeFile dir_exe+"\\common\\"+includeFilePath // 相対 } end
【メモ】
#includeのファイルの検索順。
数字の順にファイルを検索します。(HSP ver3.51で検証)
▼用語
・ソースフォルダ = include元のファイルがあるフォルダ
・commonフォルダ = HSPインストールフォルダ内にある"common"フォルダ
▼検証結果
ファイル名のみ 例:"test.as"
1.ソースフォルダ内
2.commonフォルダ内
相対パス "test\\test.as"
1.ソースフォルダからの相対パス
2.commonフォルダ内 ※1
3.commonフォルダからの相対パス
絶対パス "C:\\test.as"
1.絶対パス (そのまま)
2.commonフォルダ内 ※1
※1 = ファイルパスに含まれるファイルを検索 ("C:\\test.as"なら"test.as")