xyzzy ファイラの標準の圧縮形式を ZIP にする

xyzzy の二画面ファイラで圧縮ファイルを作ろうとしたとき、拡張子を入力しないと LHA で圧縮され拡張子 lzh が付与される。

毎回 .zip と打つのは面倒だし、LHA はサポートが終了しており、なおかつ脆弱性が残されたままなので変更したい。

ファイラの動作は lisp/filer.l で定義されており、この中の filer-get-archive-name という関数を .xyzzy で上書きすることで動作を変更する。

具体的には lisp/filer.l の filer-get-archive-name の関数定義を丸ごと .xyzzy にコピーしてきて一部を書き換える。

;; ファイラのデフォルト圧縮形式をZIPにする (lisp/filer.l を上書き)
(in-package "editor")
(defun filer-get-archive-name ()
   ;   :   
   ;   :
   ; (ここは filer.l そのまま)
   ;   :
   ;   :
		      (t (concat file ".zip"))) ;; ここを .zip に書き換える
		(merge-pathnames (cdr (assoc 'base data))
				 (filer-get-directory)))))))
(in-package "user")

M-x load-file で .xyzzy を読み込みなおすと変更が反映される。