ESS生成"变量绑定深度超过max-specpdl-size"

时间:2015-06-09 15:35:18

标签: r emacs ess

我正在尝试ESS(Emacs Speaks Statistics)。

问题是:由于以下错误,在任何缓冲区上禁用了Ctrl-P和向上箭头:

  

变量绑定深度超过max-specpdl-size

触发器是.emacs.el

中的以下行
(require 'ess-site)

此行需要to load ESS。如果我删除这一行,那么问题就不会发生,但显然我不能使用ESS。

注意:

  • "(setq max-lisp-eval-depth 10000)"没有解决问题。
  • "(setq max-specpdl-size 32000)"产生不同的错误:

      

    Lisp嵌套超过`max-lisp-eval-depth'

  • 当以上两个设置有效时,我会收到max-lisp-eval-depth的错误。

  • 此问题在M-x R RET 之前发生。例如,它恰好在emacs启动后发生在 scratch 缓冲区上。
  • 我没有找到任何其他关键问题。 (例如,Ctrl-F和向下箭头正在工作。)
  • 删除 ESS 缓冲区无法解决问题。
  • ESS 缓冲区上的初始消息如下。 (我不知道它是否有用。)

      

    [ess-site.el]:ess-customize-alist = nil
      [ess-site.el 2 ]:ess-customize-alist = nil
      (S):ess-s-versions-create为M-x defuns for

         

    (R):ess-r-versions-create为

    制作M-x defuns

环境:

  • 的emacs-ESS-15.03.1-1.3.noarch
  • 的emacs-24.3-17.2.10.x86_64
  • R-基3.1.1-2.1.9.x86_64
  • openSUSE 13.2(Harlequin)(x86_64)

2 个答案:

答案 0 :(得分:1)

你可以尝试

(setq max-specpdl-size 32000)

M-x describe-variable max-specpdl-size了解一些信息

我在使用python-mode和rope时遇到过这个问题,但从未使用过ESS。

答案 1 :(得分:0)

解决方案:更改某些设置的顺序。

我的.emacs.el有平滑滚动设置(A)

import glob
import os
import re

pattern = re.compile(r'''(\[.+\])(".*")( .+)''')

for src_name in glob.glob(os.path.join(source_dir, '*.log')):
    base = os.path.basename(src_name)
    dest_name = os.path.join(dest_dir, base)
    with open(src_name, 'rt') as infile, open(dest_name, 'wt') as outfile:
        for line in infile:
            groups = pattern.search(line).groups()
            outfile.write(groups[0]+groups[2]+'\n')

和初始文件(B)

(require 'smooth-scrolling)
(setq smooth-scroll-margin 5)

(A)应在(B)之前加载。 (B)在我之前的.emacs.el(A)之前加载,这导致了问题。 (我不知道我在问题中描述的错误的确切原因。)