错误的类型参数:stringp,nil with org-map-entries

Wrong type argument: stringp, nil with org-map-entries

我遇到了无法解决的错误。我有一个文件 test.org,其中仅包含一级标题:* test

(with-temp-buffer
  (insert-file-contents "~/test.org")
  (goto-char (point-min))
  (org-map-entries
   (lambda ()
     (compare-strings
      "* test\n" nil nil
      (thing-at-point 'line t) nil nil
      t))
   "LEVEL=1"))

这个returnsWrong type argument: stringp, nilorg-map-entries功能正常,但是和with-temp-buffer一起使用时好像有问题。

临时缓冲区处于基本模式,您在代码中所做的任何事情都不会改变它。 OTOH,org- 函数假定缓冲区处于 Org 模式,并且(有时)barf 如果不是这种情况。

试试这个:

(with-temp-buffer
  (org-mode)
  (insert-file-contents "~/test.org")
  (goto-char (point-min))
  (org-map-entries
   (lambda ()
     (compare-strings
      "* test\n" nil nil
      (thing-at-point 'line t) nil nil
      t))
   "LEVEL=1"))