【发布时间】:2016-09-29 04:02:23
【问题描述】:
我不确定表达这个问题的最佳方式,但希望我的例子能说明发生了什么。
我有一些代码,我想在临时缓冲区中插入 bibtex 文件的内容,并一次移动一个条目,使用 bibtex-parse-entry 抓取条目以供以后使用。但是,每当我在此 emacs 会话期间未访问过的 bibtex 文件上运行代码时,bibtex-parse-entry 就会返回 (wrong-type-argument stringp nil) 错误。
一旦我访问了文件,即使我随后关闭了缓冲区,代码也会毫无问题地运行。如果我删除 bibtex-parse-entry 调用,bibtex-kill-entry 也会出现同样的问题。
这是我正在使用的 elisp 代码:
(with-temp-buffer
(insert-file-contents "~/test.bib")
(goto-char (point-min))
(bibtex-mode)
(while (not (eobp))
(let* ((entry (bibtex-parse-entry t)))
(message "i'm here"))
(bibtex-kill-entry)
(bibtex-beginning-of-entry)
)
)
还有一个虚拟的 .bib 文件:
@Article{test,
author = {joe shmo},
title = {lorem ipsum},
journal = {something},
year = {1990},
}
有了这些你应该能够重现我的错误。
我不知道发生了什么,所以我非常感谢任何帮助!
【问题讨论】: