我需要定義一個函數,它將在沒有不必要的副作用(即打開的緩衝區)的情況下確保文件已準備好可供讀取。確保文件路徑存在以供讀取
這是我到目前爲止有:
(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