我需要定义一个函数,它将在没有不必要的副作用(即打开的缓冲区)的情况下确保文件已准备好可供读取。确保文件路径存在以供读取
这是我到目前为止有:
(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) ...)
,但我真的不知道该怎么做。 :/
这是所有a Stack Exchange mode为Emacs新链接:sx.el
,通过:-)
我不确定我是否理解签名'(file&rest body)'部分;我建议你就此提出一个单独的问题。 – sds 2013-05-07 13:22:54
@sds嗯......为什么? 'body'将是'file'后的所有内容。因此''(确保存在“foo.txt”(消息“文件存在”)(消息“不,实际上,它确实相信我”))'会设置'file =>“foo.txt”和' body =>'((message“...”)(message“...”))'然后可以用'mapc'和'eval'评估。 – 2013-06-01 14:31:38
'&body'用于宏而不是函数。 – sds 2013-06-02 01:33:34