我需要定义一个函数,该函数将在没有不必要的副作用(即打开的缓冲区)的情况下确保文件存在以供读取。
这是我到目前为止所拥有的:
(defun ensure-existence (file)
(if (not (file-exists-p file))
(kill-buffer
(save-buffer
(find-file-noselect file))))
当目录存在时(似乎)可以正常工作。不幸的是,我不能确定情况是否如此(因为变量可能会改变等)。有没有办法make-directory
融入所有这些,或者更好的是,有没有更清洁的解决方案?
我理想的用例是这样的:
(ensure-existence "new/path/to/new/file.txt"
(func1 arg1)
(func2 arg2a arg2b)
(...))
这将需要这样的签名:
(defun ensure-existence (file &rest body) ...)
但我真的不知道该怎么做。:/