|
> こちらで何回か試してみた限りでは、うまく再現できず、わからないです。
> もし再現方法がわかったら教えてもらえると助かります。
再現方法の詳細についてです。まず、プロジェクトファイル HmBook.hmbook は以下
のように
ターゲットファイルを相対パスで指定しています。
//type=project
"Project.ps1",name="Project.ps1"
"HmBook.hmbook",name="HmBook.hmbook"
"CSharp.list",name="CSharp.list"
"C#",group,expand
"CSharp\Namespace.cs",name="Namespace"
"Properties",group,expand
"CSharp\Properties\AssemblyInfo.cs",name="AssemblyInfo"
"Basic",group,expand
"CSharp\Basic\Namespace.cs",name="Namespace"
"Objects",group,expand
"CSharp\Basic\Objects\Namespace.cs",name="Namespace"
"CSharp\Basic\Objects\InvalidObjectException.cs",name="InvalidObjectExc
eption"
"CSharp\Basic\Objects\NullableUtility.cs",name="NullableUtility"
"CSharp\Basic\Objects\NullUtility.cs",name="NullUtility"
"Cloning",group,expand
"CSharp\Basic\Objects\Cloning\Namespace.cs",name="Namespace"
"CSharp\Basic\Objects\Cloning\CloneDepth.cs",name="CloneDepth"
"CSharp\Basic\Objects\Cloning\CloneOption.cs",name="CloneOption"
"CSharp\Basic\Objects\Cloning\Cloner.cs",name="Cloner"
"CSharp\Basic\Objects\Cloning\ICloneable.cs",name="ICloneable"
"CSharp\Basic\Objects\Cloning\CloneException.cs",name="CloneException"
"CSharp\Basic\Objects\Cloning\InvalidCloneOptionException.cs",name="In
validCloneOptionException"
次に、このプロジェクトファイルを自動的に読み込む秀丸マクロ Edit.mac は以下の
通りです。
debuginfo 2 ;
setcompatiblemode
(
0x00000003
| 0x0000000C
| 0x00020000
| 0x00080000
| 0x00100000
| 0x00200000
| 0x00400000
| 0x00800000
| 0x04000000
| 0x08000000
)
;
#hmExplorerPane = loaddll( ( hidemarudir + @"\HmExplorerPane.dll" ) ) ;
if ( #hmExplorerPane ) {
if (
! dllfunc(
#hmExplorerPane ,
@"LoadProject" ,
hidemaruhandle( 0 ) ,
( currentmacrodirectory + @"\HmBook.hmbook" )
)
) {
debuginfo ( @"プロジェクトを読み込めません。" + "\U0000000A" ) ;
}
freedll #hmExplorerPane ;
} else {
debuginfo ( @"ファイルマネージャ枠を初期化できません。" + "\U0000000A"
) ;
}
endmacro ;
そして、通常は以下のバッチファイル Edit.cmd を使って秀丸エディタの起動と同時
に上記の
マクロを実行してプロジェクトを開きます。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET ErrorLevelOfCmd=0
REM このバッチファイルのパスを取得する。
SET ThisFilePath=
IF /I "%~$Path:0" EQU "" (
IF /I "%~x0" EQU "" (
FOR %%I IN ("%~n0.cmd") DO (
SET ThisFilePath=%%~f$Path:I
)
) ELSE (
SET ThisFilePath=%~f0
)
) ELSE (
SET ThisFilePath=%~f$Path:0
)
REM このディレクトリのパスを取得する。
SET ThisDirectoryPath=
FOR %%I IN ("!ThisFilePath!") DO (
SET ThisDirectoryPath=%%~dpI
)
REM このバッチファイルのベース名を取得する。
SET ThisBaseName=
FOR %%I IN ("!ThisFilePath!") DO (
SET ThisBaseName=%%~nI
)
REM 秀丸マクロのパスの取得と存在チェック。
SET AppFilePath=
FOR %%I IN ("!ThisDirectoryPath!\.\!ThisBaseName!.mac") DO (
SET AppFilePath=%%~fI
)
IF NOT EXIST "!AppFilePath!" (
(ECHO 秀丸マクロ "!AppFilePath!" が存在しません。) 1>&2
SET ErrorLevelOfCmd=-1
GOTO EndOfCmd
)
REM Whereのパスの取得と存在チェック。
SET Where=!SystemRoot!\System32\where.exe
IF NOT EXIST "!Where!" (
(ECHO Whereの実行ファイル "!Where!" が存在しません。) 1>&2
SET ErrorLevelOfCmd=-2
GOTO EndOfCmd
)
REM Whereで秀丸エディタのパスを取得する。
SET HostAppPath=
FOR /F "usebackq tokens=1 delims=" %%I IN (`CALL "!Where!" "hidemaru"
`) DO (
SET HostAppPath=%%~I
GOTO EndOfHostAppPathLoop
)
:EndOfHostAppPathLoop
SET HostAppExists=0
IF DEFINED HostAppPath (
IF /I "!HostAppPath!" NEQ "" (
IF EXIST "!HostAppPath!" (
SET HostAppExists=1
)
)
)
IF /I "!HostAppExists!" EQU "0" (
(ECHO 秀丸エディタがパスの通ったディレクトリにインストールされてい
ません。) 1>&2
SET ErrorLevelOfCmd=-3
GOTO EndOfCmd
)
REM 秀丸エディタを起動しマクロを実行する。
START "" "!HostAppPath!" /x?"!AppFilePath!"
SET ErrorLevelOfCmd=!ERRORLEVEL!
:EndOfCmd
EXIT /B !ErrorLevelOfCmd!
症状を再現させるような使い方についてですが、まず秀丸エディタをタブモードに設
定の上で
HmBook.hmbook に登録してあるファイルを予めいくつか開いた状態で「デスクトップ
保存」を
実行し、秀丸エディタを一旦全終了させます。
↓
Edit.cmd を実行します。秀丸エディタが起動してプロジェクトが開いた状態となり
ますが、
まだファイルは何も開かれていません。この時点ではプロジェクトに登録したファイ
ルは
ダブルクリックでのみ開く状態です。
↓
「デスクトップ復元」を実行します。先ほど予め開いていたタブが復元されます。こ
の時点になると、
プロジェクトに登録したファイルがシングルクリックだけで開いたり、シングルクリ
ックで選択して
ダブルクリックで開いたりと動作が不安定になっています。
|
|