Emacs tramp 导致堆栈溢出

Emacs tramp causes stack overflow

我使用的是 emacs 24.4.2 版。出于某种原因,我根本无法使用流浪汉。任何这样做的尝试,即尝试键入 /sudo:: 都会导致应用程序小幅挂起,然后在消息缓冲区中出现以下错误:

expand-file-name: Lisp nesting exceeds `max-lisp-eval-depth'

我该怎么做才能修复该错误或正确诊断它?

更新:调试显示问题的根源是ido。目前设置如下:

  (setq ido-everywhere t)
  (ido-mode t)
  (setq ido-enable-flex-matching t)

debug-on-error 设置为非 nil。查看调用 expand-file-name 的函数产生了错误。然后尝试 M-x debug-on-entry F,其中 F 是该函数,并使用 d 单步执行调试器以查看会发生什么。在另一个 window 中查看定义该函数的代码,同时使用调试器。

您也可以首先尝试查看在没有初始化文件的情况下启动 Emacs 时是否会出现相同的错误行为:emacs -Q。如果不是,则递归地平分您的 init 文件以找出它的哪一部分引入了问题。

我的 crystal 球在对我窃窃私语,你以这样一种方式建议一个函数,它最终会直接或间接地调用自己。