EmacsLispのファイルパス連結
EmacsLispでパスを連結する方法
別に
(concat "/home" "/" "homuhomu")
とかでも事足りてしまうんだけどやっぱり納得いかんよね。
file-name-as-directoryを使いましょう。
後ろに/を付けてくれる。
ELISP> (file-name-as-directory "/home") "/home/" ELISP> (file-name-as-directory "/home/") "/home/"
これ使えばこうなる。
(concat (filename-as-directory "/home") "homuhomu")
こうすればなお便利ね
(defun my-file-path-join (&rest paths) (reduce #'(lambda (x y) (concat (file-name-as-directory x) y)) paths)) ELISP> (my-file-path-join "/home" "homu" "homu" "homu" "homu") "/home/homu/homu/homu/homu"