1

正如这里所问和回答的那样。我可以使用 '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 字符串中并不会使其运行。

4

1 回答 1

1

我为这份工作做了一个要点:

http://gist.github.com/419364

只需使用交互式命令“Mx lein-swank”,它将在当前目录中生成命令并连接到它。

我对lein-swank做了一些改进:

  1. lein-swank-command现在是可定制的:如果 Leiningen 的bin目录不是您的PATH环境的一部分,您可以使用它。

  2. 添加目录作为交互式参数:如果在当前目录的主要位置找不到project.clj ,您可以指定一个位置。

于 2010-07-28T20:22:11.690 回答