xyzzyのファイラをFenrirで移動する

前に作ってたけどエラーが出るので、ここには一応書かなかったけど。どうせ誰も見てはいないだろうという安易な気分でメモ。適当に誤魔化してエラーは見なかったことにしているので、本当は問題があるかも。

Fenrirからディレクトリを選んで、適当なCmdに割り当てるとxyzzyのファイラでそのディレクトリを表示する。個人的にファイラとxyzzyを分離しても操作できるようにしている。そうしたら、ファイラを開いた状態でも移動しても、ファイランの表示が被らないようになった気がしたので。

(defvar *my-file-open-directory* nil)

(defun my-file-open-directory ()
  ; コマンドラインではフラグだけを立てて
  ; 実際の作業はmy-file-open-directoryに任せる。
  (setq *my-file-open-directory* t))

(defun fenrir-filer (arg)
  (interactive)
  (when (and (file-directory-p arg)
			 *my-file-open-directory*)
	(setq *my-file-open-directory* nil)
	(open-filer)
	(filer-chdir arg)
	(plain-error "open-directory: done とか書いてみたけど、本当はエラーが出るから仕方なく目立たないようにしただけ")
	;	(error "open-directory: done")
	))
(add-hook '*before-find-file-hook* 'fenrir-filer)
;plain-errorをしないと「hogeはディレクトリです」というエラーが出る。
;それでやりたい人は、邪魔なエラー表示を抑えるように共通設定でエラーの表示をマイルドにするといいかも。

Fenrirの設定は

[.\\\;
xyzzyFiler|C:\xyzzy\xyzzycli.exe -f my-file-open-directory "%P"
]

こんな感じ。

フラグ立てるやり方が、色々と被らなくていいかも。と思ってGrepするときの奴からパクリ。

■追記
ファイラの設定の話も一応メモ

*filer-modal*
Type: Variable
Package: editor
File: filer.l

ファイラの動作を指定します。

モーダルの場合には、ファイラはエディタとは同期的に動作します。
ファイラ起動中はエディタでの編集は不能です。
モードレスの場合には、ファイラはエディタとは非同期に動作します。
ファイラ起動中にエディタでの編集が可能です。

  t   モーダルで動作させます
  nil モードレスで動作させます

たしか之か何かをnilにしたらファイラが分離して動く感じ。