秀丸エディタで現在開いてるファイルを一時保存&あとで復旧するマクロ

普段秀丸エディタで多数のファイル(タブ)を開いているが、作業によってこれら「開いているファイルたち(セット)」がごっそりと変わる。一般的に作業 A のセットと作業 B のセットは大きく異なると思う。これらを簡単に切り替えられるようにしたい。

方法は色々ありそうだが、とりあえず 現在のセットを一時保存しておいて、後で呼び出す という簡単なケースを考え、形にしてみた。

使い方

  • 1: 下記マクロを導入する
  • 2: 下記マクロを実行する

実行するとメニューが表示される。Save で保存、Load で読込。Edit this はプログラミング用。

なお Save 時は「そのマクロファイルがあるフォルダ」に desktop.hmdesk が生成される。これは秀丸エディタの仕組みで、「デスクトップ保存」機能で保存した時の実体。Load 時はこれを読み込んでいる。

マクロスクリプト

menu_desktop.mac

// (2019/11/06 18:58:54 追記) directory → currentmacrodirectory に修正しました。
// directory だと「今秀丸エディタで開いてるファイル」のパスに保存されちゃう……
$hmdesk_path = currentmacrodirectory+ "\\desktop.hmdesk";

$items[0] = "Save";
$items[1] = "Load";
$items[2] = "Edit this";
mousemenuarray $items, 3;
if(result==0){
    endmacro;
}
#selected_idx = result-1;
if(#selected_idx==0){
    savedesktop $hmdesk_path;
    endmacro;
}
if(#selected_idx==1){
    restoredesktop $hmdesk_path;
    endmacro;
}
$path = hidemarudir+"\\hidemaru.exe " + currentmacrofilename;
run $path;
endmacro;

解説

実践的な秀丸マクロ講座……というと言い過ぎだが、ちょっと詳しく書いてみる。

ファイル名やファイルパスなど

  • 使うファイルは desktop.hmdesk
    • directory ← このマクロファイルがあるフォルダパス
  • 手軽にいじれるよう、Edit this を選ぶと「このマクロファイル自身を秀丸エディタで開く」ようにしてある
    • hidemarudir+"\\hidemaru.exe ← 秀丸エディタのフルパス
    • currentmacrofilename ← このマクロファイルのフルパス

たとえば c:\data\hidemaru\macro\menu_desktop.mac だとしたらこうなる。

  • diretoryc:\data\hidemaru\macro
  • currentmacrofilenamec:\data\hidemaru\macro\menu_desktop.mac

慣れないとわかりづらいが「どの環境の秀丸エディタ」でも汎用的に動くようなマクロにしたいなら、こういう書き方を心がける必要がある。

メニュー系

  • mousemenuarray でメニューをつくってる
    • menuarray ← キャレット位置にメニューを表示
    • mousemenuarray ← マウスカーソル位置にメニューを表示
    • 今回は(私の好みで)ツールバーからの起動を前提としているので mousemenuarray にしている

メニュー UI は「この中から選んだ項目を実行するよ」という手軽さがあるので、習得すると便利。

書き方は煩雑だが、

  • 0番目から n-1 番目までの項目をつくって、
  • menuarray で n 個分つくるよと指定して、

で、あとは

  • 「どの項目が選択されたら」の条件分岐を result の値で見ている

という感じ。

デスクトップ保存系

  • savedesktop で、指定ファイル名で「現在開いてる状態を保存」
  • restoredesktop で、指定ファイルを読み込んで復元