1

ここで尋ねられ、答えられたように。「lein swank」を使用して、Aquamacs で clojure を実行できました。

スライム/クロージュアを実行する前に、「lein swank」の実行を自動化する必要があります。

  • Q : これを自動的に行う方法はありますか? これは、slime/clojure (Mx slime-connect) が呼び出されたときに、コマンド「lein swank」を自動的に実行する方法を意味します。
  • Q : 'lein swank' を実行するための elisp コードを作成する必要がある場合、どのようにすればよいですか?

追加した

Jürgen Hötzel の回答に基づいて、elisp を次のように変更しました。

(defun lein-swank ()
(相互の作用)
(let ((default-directory (locate-dominating-file default-directory "/Users/smcho/bin/leiningen")))
  (when (not default-directory)
    (エラー「ライニンゲン プロジェクトではありません。」))
  ;; .dir-locals.el を使用して、slime-port をカスタマイズできます。
  (let ((proc (start-process "lein-swank" nil "/Users/smcho/bin/leiningen/bin/lein" "swank" (number-to-string 4005))))
    (proc時
    (process-put proc :output nil)
    (set-process-sentinel proc (ラムダ (proc イベント)
                     (メッセージ "%s%s: `%S'"
                          (process-get proc :output)
                          proc (replace-regexp-in-string "\n" "" イベント))))
    (set-process-filter proc
                (ラムダ (proc 出力)
                  ;; 接続されるまで出力の最後の行を記録します (エラーメッセージの可能性があります)
                  (process-put proc :output (concat (process-get proc :output) 出力))
                  (when (string-match "Connection open on" 出力)
                (slime-connect "localhost" 4005)
                ;; 出力をさらに処理する必要はありません
                (set-process-filter proc nil))))
    (メッセージ「Swank サーバーを開始しています...」)))))

しかし、このエラーが発生しました。

このディレクトリに project.clj が見つかりません。lein-swank: 「コード 1 で異常終了しました」.

私が見つけたのは、「lein swank」を実行するには pwd を ~/bin/leiningen に変更する必要があるということでした。PATH 文字列内に lein バイナリを配置するだけでは実行されません。

4

1 に答える 1

1

私はこの仕事の要点を作りました:

http://gist.github.com/419364

対話型コマンド「Mx lein-swank」を使用するだけで、現在のディレクトリにコマンドが生成され、そこに接続されます。

lein-swankにいくつかの改良を加えました:

  1. lein-swank-commandがカスタマイズ可能になりました: binディレクトリがPATH環境に含まれていない場合は、Leiningen を使用できます。

  2. インタラクティブな引数としてディレクトリを追加: 現在のディレクトリの主要な場所にproject.cljが見つからない場合は、場所を指定できます。

于 2010-07-28T20:22:11.690 に答える