正如这里所问和回答的那样。我可以使用 'lein swank' 在 Aquamacs 上运行 clojure。
在运行 slime/clojure 之前,我需要自动运行“lein swank”。
- 问:有没有办法自动做到这一点?我的意思是当调用 slime/clojure (Mx slime-connect) 时如何自动运行命令“lein swank”。
- 问:如果我必须想出 elisp 代码来运行“lein swank”,我该怎么做?
添加
根据 Jürgen Hötzel 的回答,我将 elisp 修改如下。
(德芬莱因斯万克()
(交互的)
(let ((default-directory (locate-domination-file default-directory "/Users/smcho/bin/leiningen")))
(当(不是默认目录)
(错误“不在 Leiningen 项目中。”))
;; 你可以使用 .dir-locals.el 自定义 slime-port
(let ((proc (start-process "lein-swank" nil "/Users/smcho/bin/leiningen/bin/lein" "swank" (number-to-string 4005))))
(当 proc
(处理-放置过程:输出零)
(set-process-sentinel proc (lambda (proc event)
(消息“%s%s:‘%S’”
(过程获取过程:输出)
proc (replace-regexp-in-string "\n" "" 事件))))
(set-process-filter proc
(λ(过程输出)
;; 记录最后一行输出直到连接(可能的错误消息)
(过程-放置过程:输出(连接(过程-获取过程:输出)输出))
(当(字符串匹配“连接打开”输出时)
(粘液连接“本地主机”4005)
;; 无需进一步处理输出
(set-process-filter proc nil))))
(消息“正在启动 swank 服务器...”)))))
但是,我得到了这个错误。
在此目录中找不到 project.clj。lein-swank: `"异常退出,代码为 1"'。
我发现我应该将 pwd 更改为 ~/bin/leiningen 以运行“lein swank”。只需将 lein 二进制文件放入 PATH 字符串中并不会使其运行。