Emacs:用于自动完成的 ac-slime

标签 emacs autocomplete common-lisp slime

我正在尝试为 *.lisp 文件添加自动完成功能。我的粘液设置是:

(add-to-list 'load-path "~/.emacs.d/plugins/slime/")
(setq slime-lisp-implementations
      '((sbcl ("/opt/sbcl/bin/sbcl" "--core" "/opt/sbcl/lib/sbcl/sbcl.core")
              :coding-system utf-8-unix
              :env ("SBCL_HOME=/opt/sbcl/lib/sbcl"))
        (ccl ("/opt/ccl/lx86cl64")
             :coding-system utf-8-unix)))
(require 'slime-autoloads)
(slime-setup '(slime-fancy))

而 ac-slime 设置是:
(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'slime-repl-mode))

每次我在 *.lisp 文件中输入一个单词时,自动完成会弹出一些候选词,但在第二个 minibuffer 输出之后
error in process filter: Reply to canceled synchronous eval request 
tag=slime-result-6-19579 
sexp=(swank:simple-completions "de" (quote "COMMON-LISP-USER"))

并且弹出窗口卡住了一段时间。之后我可以继续我的选择。

我的问题是如何消除这个错误并卡住?任何帮助表示赞赏。

最佳答案

(评论太长了)

我还不知道这一切是如何工作的,但我遇到了同样的问题,我总是可以重现它......我找到了一个解决方法。

我不知道“回复取消的同步 eval 请求”是什么意思,也不知道是否真的有两个同步 eval 请求。

如果有两个这样的请求,我不知道是什么导致了它们......

然而通过更改自动完成菜单和弹出窗口出现之前的计时器,我已经能够解决这个问题。

如果我对此进行评估(从我的 .emacs 文件中说):

(setq ac-auto-show-menu 0.1)

然后我可以可靠地重现您的错误(并且它也会阻止我一段时间)。

如果我稍微修改一下值:
(setq ac-auto-show-menu 0.3)

然后就没有问题了。

这是一个糟糕的解决方法,我仍然认为有一个严重的(虽然可能很容易修复)潜在的错误隐藏在某处。

关于Emacs:用于自动完成的 ac-slime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11241460/

相关文章:

emacs - 在 Emacs *shell* 中获得 256 种颜色

在 COMMON LISP 中使用先序和中序重建树

java - 以 Clojure 格式(java.util.Formatter)、cl 格式(Common Lisp 格式)以编程方式控制填充?

emacs - org-mode,代码示例为 html

lambda - 下划线(_)在elisp中是什么意思?

Jquery 自动完成多个关键字、突出显示和部分匹配

java - 在 Java Web 应用程序中使用静态方法和变量

c++ - Vim 转到 std 库方法/函数定义

macros - 非递归符号-macrolet

emacs - 如何用链接或引用替换 Emacs 中的一段文本?