[emacs][Tuareg模式]符号';s函数定义为void:dolist

[emacs][Tuareg模式]符号';s函数定义为void:dolist,emacs,ocaml,tuareg,Emacs,Ocaml,Tuareg,我尝试在Inria网站上为Ocaml安装Tuareg模式作为建议。 每当我尝试启动它时,都会出现以下错误: 符号的函数定义为void:dolist 和艾德布德芬 Debugger entered--Lisp error: (void-function dolist) apply(debug error (void-function dolist)) edebug(error (void-function dolist)) (dolist (buf (buffer-list)) (sa

我尝试在Inria网站上为Ocaml安装Tuareg模式作为建议。 每当我尝试启动它时,都会出现以下错误:

符号的函数定义为void:dolist

和艾德布德芬

Debugger entered--Lisp error: (void-function dolist)
  apply(debug error (void-function dolist))
  edebug(error (void-function dolist))
  (dolist (buf (buffer-list)) (save-current-buffer (set-buffer buf) (if (derived-mode-p (quote tuareg-mode)) (progn (abbrev-mode (if val 1 -1))))))
  (lambda (var val) (set-default var val) (dolist (buf (buffer-list)) (save-current-buffer (set-buffer buf) (if (derived-mode-p (quote tuareg-mode)) (progn (abbrev-mode (if val 1 -$
  custom-initialize-reset(tuareg-use-abbrev-mode t)
  custom-declare-variable(tuareg-use-abbrev-mode t "*Non-nil means electrically indent lines starting with leading keywords.\nLeading keywords are such as `end', `done', `else' etc$
  eval-buffer(#<buffer  *load*> nil "/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg-mode/tuareg.el" nil t)  ; Reading at buffer position 13589
  load-with-code-conversion("/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg-mode/tuareg.el" "/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg-mode/tuareg.el" nil t)
  command-execute(tuareg-mode record)
  execute-extended-command(nil "tuareg-mode")
  call-interactively(execute-extended-command nil nil)
  recursive-edit()
  edebug--recursive-edit(before)
  edebug--display(nil 0 before)
  edebug-debugger(0 before nil)
  edebug-before(0)
  (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml code" t))
  (lambda nil (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml code" t)))()
  edebug-enter(edebug-anon0 nil (lambda nil (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml code" t))))
  edebug-enter(edebug-anon0 nil (lambda nil (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml code" t))))
  eval((edebug-enter (quote edebug-anon0) nil (function (lambda nil (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml code" t)))$
  eval-expression((edebug-enter (quote edebug-anon0) nil (function (lambda nil (edebug-after (edebug-before 0) 1 (autoload (quote tuareg-mode) "tuareg" "Major mode for editing Caml$
  edebug-defun()
  call-interactively(edebug-defun record nil)
  command-execute(edebug-defun record)
  execute-extended-command(nil "edebug-defun")
  call-interactively(execute-extended-command nil nil)
调试器已输入--Lisp错误:(void函数dolist)
应用(调试错误(无效函数dolist))
edebug(错误(无效函数列表))
(dolist(buf(缓冲区列表))(保存当前缓冲区(设置缓冲区buf)(if(派生模式-p(引用图阿雷格模式)))(progn(缩写模式)(if val 1-1‘‘‘‘‘‘‘)’)
(lambda(var val)(设置默认var val)(dolist(buf(缓冲区列表))(保存当前缓冲区(设置缓冲区buf)(if(派生模式-p(引用图阿雷格模式)))(progn(缩写模式)(if val 1-$
自定义初始化重置(tuareg使用abbrev模式t)
自定义声明变量(tuareg use abbrev mode t“*非nil表示以前导关键字开头的行的电缩进。\n前导关键字包括'end'、'done'、'else'等$
评估缓冲区(#nil)/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg mode/tuareg.el“nil t);在缓冲区位置13589处读取
使用代码转换加载(“/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg mode/tuareg.el”“/nfs/ring/users/2013/phibonacci/.emacs.d/tuareg mode/tuareg.el”nil t)
命令执行(图阿雷格模式记录)
执行扩展命令(无“图阿雷格模式”)
交互调用(执行扩展命令nil nil)
递归-编辑()
edebug——递归编辑(之前)
edebug--显示(之前为零)
edebug调试器(零之前为0)
之前的edebug(0)
(0之前的edebug之后)1(自动加载(引用图阿雷格模式)“图阿雷格”主要模式,用于编辑Caml代码“t))
(lambda nil(0之前的edebug之后的edebug)1(自动加载(引用图阿雷格模式)“图阿雷格”主要模式,用于编辑Caml代码“t”)()
edebug输入(edebug-anon0 nil(lambda nil(edebug之后(edebug之前0)1(自动加载(引用图阿雷格模式)“图阿雷格”主要模式,用于编辑Caml代码“t)))
edebug输入(edebug-anon0 nil(lambda nil(edebug之后(edebug之前0)1(自动加载(引用图阿雷格模式)“图阿雷格”主要模式,用于编辑Caml代码“t)))
eval((edebug enter(引号edebug-anon0)nil(函数lambda nil(edebug之后(edebug之前0)1(自动加载(引号tuareg模式)“tuareg”“编辑Caml代码”t的主要模式)))$
计算表达式((edebug输入(引用edebug-anon0)nil(函数)lambda nil(edebug之后(edebug之前0)1(自动加载(引用tuareg模式)“tuareg”用于编辑Caml的主要模式$
edebug-defun()
交互调用(edebug defun record nil)
命令执行(edebug defun记录)
执行扩展命令(nil“edebug defun”)
交互调用(执行扩展命令nil nil)
“/nfs/ring/users/2013/phibonacci”是我的主目录

我遵循以下步骤:(仅将~/.elisp/tuareg模式替换为我自己的路径~/.emacs.d/tuareg模式)

emacs 24.3.1(2013年)/

dolist
来自通用lisp Emacs库。如果tuareg使用
dolist
而没有
(编译时求值…(require'cl)…)
这是一个bug。作为一种解决方法,您可以执行
(require'cl)
在你的.emacs中。这不是纯粹主义者emacs社区推荐的,但它很常见。

IIRC
dolist
有时在emacs-21前后被添加到标准Elisp中,所以你的设置确实有问题。

你从MELPA安装了软件包吗?我刚才安装了,它工作正常。我有完全相同的错误。Alr好的,尝试更新到Emacs 24.3.4。我没有此计算机的root访问权限。只要安装了一些基本的东西,如gcc,就可以从源代码构建Emacs。OP获得此错误的函数声明为
:在
自定义
表单中设置
关键字。我90%确定问题没有说明
dolist
不可用,但此表单扩展不正确,解释器正在尝试
eval
表单,而不首先处理宏。这必须与不同版本的Emacs如何处理
(lambda()…)
表单有关。我不明白这是如何发生的:回溯显示Emacs是“eval”调用
dolist
调用,在这种情况下,它肯定应该扩展宏。