(2012-12-12:编辑以澄清问题
我正在努力让这段代码正常运行。我们的想法是将org-map-entries应用于由“with-temp-file”创建的新文件,并仍在“with-temp-file sexp:
中(let ((temp-file (expand-file-name "test-tmp-sandbox.org" dir)))
(with-temp-file temp-file
(insert-file (expand-file-name "my-org-file.org" dir))
(org-mode)
(org-map-entries '(org-entry-put nil "MY-READ-ONLY" ?t) t 'file)))
它不起作用。
我有以下解决方法:
(let ((temp-file (expand-file-name "test-tmp-sandbox.org" dir)))
(with-temp-file temp-file
(insert-file (expand-file-name "my-org-file.org" dir)))
(find-file temp-file)
(org-map-entries '(org-entry-put nil "MY-READ-ONLY" ?t) t 'file)
)
其中:
知道第一段代码出了什么问题吗?
答案 0 :(得分:1)
你没有说“什么不行”。总是描述症状:你的期望与你实际看到的一样。
将您的代码包裹在(macroexpand '...)
中,您将看到错误:temp-file
未定义。
(let
((temp-file temp-file) ; TEMP-FILE on the right is undefined
(temp-buffer
(get-buffer-create
(generate-new-buffer-name " *temp file*"))))
(unwind-protect
(prog1
(with-current-buffer temp-buffer
(insert-file
(expand-file-name "my-org-file.org" dir))
(org-mode)
(org-map-entries
'(org-entry-put nil "MY-READ-ONLY" 116)
t 'file))
(with-current-buffer temp-buffer
(write-region nil nil temp-file nil 0)))
(and
(buffer-name temp-buffer)
(kill-buffer temp-buffer))))
<强>更新强>
不查看org-map-entries
是什么或做什么(没时间;抱歉),我建议:with-temp-file
在完成之前不会写文件。如果org-map-entries
期望文件已经存在(即写入),那么这就解释了为什么你的第一个代码无法工作。
再次,如果我所说的还不够,那么查看org-map-entries
真正做到和期望的内容可能会让你更接近一个好的答案。