Emacs: ac-slime自动补全插件

4

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

(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文件中输入一个单词时,自动完成会弹出一些候选项,但是一秒钟后小型缓冲区会输出:
error in process filter: Reply to canceled synchronous eval request 
tag=slime-result-6-19579 
sexp=(swank:simple-completions "de" (quote "COMMON-LISP-USER"))

弹出窗口卡了一会儿,之后我才能继续我的选择。

我的问题是如何消除这个错误和卡顿?任何帮助都将不胜感激。

1个回答

3

(这段话太长了,不适合作为评论)

我还不知道所有这些是如何工作的,但我遇到了同样的问题,并且总是能够重现它...然后我找到了一个解决方法。

我不知道"回复已取消的同步评估请求"是什么意思,也不知道是否真的有两个同步评估请求。

而且如果确实有两个这样的请求,我也不知道是什么原因导致了它们...

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

如果我从我的.emacs文件中执行以下操作:

(setq ac-auto-show-menu 0.1)

如果我能够可靠地复现你的错误(并且这对我来说也会阻塞一段时间),那么接下来我会进行修改:

如果我稍微修改一下数值:

(setq ac-auto-show-menu 0.3)

那么就不再有问题了。

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


因为该死的设置,我现在不知道该说什么了。实际上,ac-auto-show-menu 设置为0.2/0.3 在这里起作用。感谢@Cedric Martin。 - Boris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接