LispWorksのIDEを使っていると、ちょっとディレクトリ作りたいときや、ちょっとファイルを削除したいときに、diredを期待してC-xdを押してしまいます。あまりにも同じミスを何度もするので、LispWorksからWindowsのファイラーが起動するようにしました。
外部プロセスの起動
秀丸ファイラーClassicとWZ Editor 7の例です。
(defun Hidemaru-filer() (let ((pathopt (format nil "/select,~A" (namestring (current-pathname))))) (sys:call-system (list "c:\\Program Files\\HmFilerClassic\\HmFilerClassic.exe" pathopt) :wait nil ))) (defun WZ-filer() (let ((pathopt (format nil "~A" (namestring (get-working-directory))))) (sys:call-system (list "C:\\Program Files (x86)\\WZ EDITOR 7\\wzeditor.exe" "@txfile" pathopt) :wait nil )))
少しはまった所は、WZ Editor 7の方は引数のディレクトリーを開いた状態で立ち上がるのでget-working-directory、秀丸ファイラーClassicは引数のディレクトリまたはファイルを選択した状態(画面上は指定したファイルが存在するフォルダーを開く)で立ち上がるのでcurrent-pathnameを使っています。
エディタへの登録
エディタから関数を呼び出すにはeditor:defcommandを、キーに割り当てるにはeditor:bind-keyを使います。
(editor:defcommand "Filer" (p) (WZ-filer)) (editor:bind-key "Filer" '#(#\control-\x #\d) :global)
これらの設定を.lispworksに追加すれば、C-xdで無事ファイラーが立ち上がります。