gpt4 book ai didi

Emacs lua 模式问题 : (void-function interactively-called-p)

转载 作者:行者123 更新时间:2023-12-01 13:37:07 25 4
gpt4 key购买 nike

我正在尝试为 emacs 21.4.1 安装 lua-mode(版本 20110428),但遇到了问题。在我的 .emacs 文件中我有:

(add-to-list 'load-path "~/.emacs.d/lua-mode/")
...
(setq auto-mode-alist (cons '("\\.lua$" . lua-mode) auto-mode-alist))
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)

我使用了这里的安装说明:http://lua-mode.luaforge.net/此外,在我的 .emacs.d/目录中,我有 lua-mode/,其中包含 lua-mode.el。所有这些文件都具有正确的权限。

除了现在,当我使用 emacs 打开新文件“test.lua”时,我在暂存缓冲区中收到以下消息:

“文件模式规范错误:(void-function called-interactively-p)”

我正在运行 RHEL5。我在网上看过,但没有找到太多帮助。有没有人有什么建议?我不知道任何 LISP(因此很难调试 lua-mode.el),除了一些快捷方式外,我对 emacs 了解不多。

谢谢。

最佳答案

您使用的 Emacs 版本没有带 1 个参数的“called-interactively-p”函数版本(该函数的早期版本不带参数)。您可以通过将此解决方法(发布于此处:http://paste.lisp.org/display/115598/raw)放入您的 Emacs 初始化文件中来解决此问题:

(condition-case nil (called-interactively-p 'interactive)
(error
; Save reference to called-interactively-p in
; inglorion-system-called-interactively-p
(fset 'inglorion-system-called-interactively-p
(symbol-function 'called-interactively-p))
; Define called-interactively-p so that it discards
; its arguments and calls inglorion-system-called-interactively-p
(fset 'called-interactively-p
(lambda (&rest args)
(inglorion-system-called-interactively-p)))))

但是,当我这样做并尝试使用 Emacs 22 进行测试时,由于某些功能不存在,我还遇到了其他错误,因此如果您想使用 lua 模式,您可能必须升级您的 Emacs 版本。

对于 Emacs 23 和 24,“lua-mode.el”似乎可以使用现有的 lua 文件(我不是 lua 程序员所以我无法正确测试它)但是当你试图创建一个新的 lua 文件时会中断文件。它实际上是在您尝试打开一个新的 lua 文件时发生的“lua-mode.el”代码中的一个错误(如果您尝试打开一个现有的 lua 文件则不会发生)。问题是第 1218 行的“remove-text-properties”调用(在“lua-unmark-multiline-literals”函数中)正在调用起始值为“1”的“remove-text-properties”函数和“0”的结束值(它是“0”,因为新文件的缓冲区大小为“0”。您可以通过更改第 1218 行来解决此问题:

    (remove-text-properties (or begin 1) (or end (buffer-size)) '(syntax-table ()))

到:

    (remove-text-properties (or begin 1)
(or end
(if (> (buffer-size) 0)
(buffer-size)
(or begin 1)))
'(syntax-table ()))

你应该让“lua-mode.el”的开发者知道这个错误,并且可能还请求支持早期的 Emacs 版本。

关于Emacs lua 模式问题 : (void-function interactively-called-p),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com