【发布时间】:2010-07-28 19:40:31
【问题描述】:
按照here 的提问和回答。我可以使用 'lein swank' 在 Aquamacs 上运行 clojure。
我需要在运行 slime/clojure 之前自动运行“lein swank”。
- 问:有没有办法自动做到这一点?我的意思是如何在调用 slime/clojure (M-x slime-connect) 时自动运行命令“lein swank”。
- 问:如果我必须想出 elisp 代码来运行“lein swank”,我该怎么做?
添加
根据 Jürgen Hötzel 的回答,我将省略号修改如下。
(德芬莱因斯万克() (交互的) (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 字符串中不会使其运行。
【问题讨论】:
-
"project.clj" 必须在当前缓冲区的默认目录(当前目录)或支配(父目录)中找到。您的修改不再搜索“project.clj”。只需在启动 emacs 之前确保 PATH 包含您的“lein”可执行文件。