秀丸エディタで現在開いてるファイルを一時保存&あとで復旧するマクロ
普段秀丸エディタで多数のファイル(タブ)を開いているが、作業によってこれら「開いているファイルたち(セット)」がごっそりと変わる。一般的に作業 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 だとしたらこうなる。
diretory
→c:\data\hidemaru\macro
currentmacrofilename
→c:\data\hidemaru\macro\menu_desktop.mac
慣れないとわかりづらいが「どの環境の秀丸エディタ」でも汎用的に動くようなマクロにしたいなら、こういう書き方を心がける必要がある。
メニュー系
- mousemenuarray でメニューをつくってる
- menuarray ← キャレット位置にメニューを表示
- mousemenuarray ← マウスカーソル位置にメニューを表示
- 今回は(私の好みで)ツールバーからの起動を前提としているので mousemenuarray にしている
メニュー UI は「この中から選んだ項目を実行するよ」という手軽さがあるので、習得すると便利。
書き方は煩雑だが、
- 0番目から n-1 番目までの項目をつくって、
- menuarray で n 個分つくるよと指定して、
で、あとは
- 「どの項目が選択されたら」の条件分岐を result の値で見ている
という感じ。
デスクトップ保存系
- savedesktop で、指定ファイル名で「現在開いてる状態を保存」
- restoredesktop で、指定ファイルを読み込んで復元