Pymacs 0.25手册在Section 3.4.2中具有以下代码段

(pymacs-exec "import re")
(setq matcher (pymacs-eval "re.compile('PATTERN').match"))
(pymacs-call matcher "PATTERN123")


在具有Python 2.7.3的Ubuntu 12.04(32位)上的Emacs24.2中,前两个语句执行良好,但是第三个语句抛出以下错误:

pymacs-report-error: Python: Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Pymacs.py", line 268, in loop
    value = eval(text)
  File "<string>", line 1
    (lambda (&rest arguments) (pymacs-apply (quote (pymacs-python . 5)) arguments))(".")


我对Elisp并不了解很多,但是lambda语句本身的评估结果在C-x C-e中没有任何错误,因此我不知道出了什么问题。另外,查看Pymacs.py,看起来该代码正试图直接评估elisp代码。请帮忙?

最佳答案

由于pymacs-call语句返回一个lambda函数,因此使用(funcall matcher "PATTERN123")调用它可以按预期工作。手册中的示例代码可能有误。

10-07 19:09