Posted 2020-06-28 19:55:59 GMT
論理パスを設定しておくと便利なこともあるので、良く使うlispファイル置き場のディレクトリ等に“lisp:”なんていう論理パスを設定したりしています。
“~/lisp” であれば下記のように設定可能です。
(setf (logical-pathname-translations "LISP")
`(("*" ,(merge-pathnames
(make-pathname :name :wild :directory '(:relative "LISP") :case :common)
(user-homedir-pathname)))))
(load "lisp:foo")
で、“~/lisp/foo.lisp”がロードできたりするのが便利です。
quicklispなども論理パスを設定しておけば、
(load "quicklisp:setup")
でロードできたりしますが、まあ便利な時は便利でしょう。
ちなみに初期化ファイルを読み込まない状態で、論理パスをロードする仕組みがCommon Lispには、load-logical-pathname-translations
として用意されていますが、処理系によって記述方法はまちまちです。
そんな日々でしたが、普段から論理パスを使っているとエディタでファイルを開く際にも使いたくなります。
論理パスでファイルを開けたりしないもんかなと、試しにLispWorksのエディタのFind File
で論理パスで指定してみたところ、普通に開けてしまいました。
素直に開けてしまうのが逆に不思議だったので、Find File
のソースを眺めてみましたが、文字列がprobe-file
に渡されるので、ここで実ファイルにマッピングされる様子。
当然ながら、Common Lisp製のエディタはCommon Lispのパス処理の関数を使うわけで、意図的かどうかは扨措き、エディタも論理パスを処理できちゃうみたいです。
ちなみに、SymbolicsのZmacsではどうなのかなと思い、論理パスを設定して試してみましたが、Find File
で普通に論理パスが使えました。
こちらは様々なOSが混在した環境で論理パスを設定していた時代に実際に使われていたと思うので、元からサポートしているのでしょう。
論理パスは、物理的にはばらばらに存在するファイルをツリー状にまとめたりがLisp内で簡単にできます。
色々制限はあるのですが、使い方次第では便利に使えるかもしれません。
真のLispエディタでは論理パスが使える。
■
HTML generated by 3bmd in LispWorks Personal Edition 7.1.2