gpt4 book ai didi

带有 slime-fancy 的 clojure 和 common lisp 的 emacs 设置 (slime-autodoc)

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:15 26 4
gpt4 key购买 nike

我为 clojure 和普通 lisp 设置了 emacs,但我还想要 (slime-setup '(slime-fancy)) 用于普通 lisp。如果我将该行添加到 init.el,clojure 将无法工作:它会给我 repl,但在我运行任何代码后它会挂起。

我的配置

对于 Clojure:

  • 我通过 ELPA 设置了 clojure-mode、slime、slime-repl
  • 我在项目目录中运行 $ lein swank
  • 然后 M-x slime-connect 来破解 clojure

对于普通的 lisp,我将它放在 init.el 中的 ELPA 代码之后:

(add-to-list 'load-path "~/.elisp/slime")
(require 'slime)
(add-to-list 'slime-lisp-implementations '(sbcl ("/opt/local/bin/sbcl") :coding-system utf-8-unix))
;; (slime-setup '(slime-fancy))

所以如果我取消最后一行的注释,Clojure 就会被破坏。但是 slime-fancy 是一个非常重要的元包,用于破解常见的 lisp。


有没有一种方法可以让它们同时工作,而无需更改配置并在我需要切换语言时重新启动?


更新

我发现加载了 slime-fancy 的 slime-autodoc 是挂起的原因。

(slime-setup '(slime-fancy))
(setq slime-use-autodoc-mode nil)

此配置允许运行常见的 lisp 和 clojure SLIME。甚至同时。但是没有 slime-autodoc。

我还发现我使用的是 CVS 版本的 SLIME,因为我在 ELPA 代码之后手动执行 (add-to-list 'load-path "~/.elisp/slime")。那不能解决问题。也许有一个来自某个神奇日期的版本可以与 clojure 一起使用?这里有人说 CVS 版本适合他:http://www.youtube.com/watch?v=lf_xI3fZdIg&feature=player_detailpage#t=221s

最佳答案

这是一个解决方案。 (使用钩子(Hook))
这很丑陋但很方便。

(add-hook 'slime-connected-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(setq slime-use-autodoc-mode nil)
(setq slime-use-autodoc-mode t))
))

(add-hook 'slime-mode-hook
(lambda ()
(if (eq major-mode 'clojure-mode)
(slime-autodoc-mode 0)
(slime-autodoc-mode 1))))

更新如果问题仍然存在于 slime-repl 缓冲区,请尝试以下代码:

(add-hook 'slime-repl-mode-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(progn (setq slime-use-autodoc-mode nil)
(slime-autodoc-mode 0))
(progn (setq slime-use-autodoc-mode t)
(slime-autodoc-mode 1)))))

关于带有 slime-fancy 的 clojure 和 common lisp 的 emacs 设置 (slime-autodoc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com