Clojure emacs slime + swank каталог вопросов - PullRequest
9 голосов
/ 26 декабря 2009

Я использую emacs с clojure-swank и slime и пытаюсь настроить свою среду разработки. И я столкнулся с проблемой. Когда я запускаю repl, я застреваю в неизвестном каталоге, мешающем мне загрузить мое пространство имен. Потому что repl clojure не может найти нужный файл.

Кто-нибудь знает, как изменить текущий каталог?

PS: я только начал использовать emacs и slime, так что я новичок.

Ответы [ 4 ]

6 голосов
/ 26 декабря 2009

Если вы хотите изменить представление слизи о текущем каталоге, нажмите ,cd<CR> (<CR> = Enter) и введите путь.

Однако это не совсем правильное решение проблемы. Правильное решение включает в себя настройку пути к классам, чтобы вы могли (использовать 'your.namespace). В связи с этим мне интересно, может ли этот очень длинный ответ , который я дал на вопрос о правильной настройке пути к классам, быть полезным ...: -)

Между прочим, я несколько возражаю против решений, включающих add-classpath, так как это в настоящее время помечено как устаревшее и никогда не предполагалось, что на него можно положиться в первую очередь ... Хотя, с другой стороны, оно, безусловно, может отлично работает, и о нем стоит знать, на случай, если он пригодится в качестве быстрого и грязного трюка с инъекцией classpath.

Теперь, если вам нужна действительно хорошая среда разработки на основе SLIME, я бы хотел указать вам на очень приятную функцию clojure-project elisp от Phil Hagelberg, которая устанавливает все соответствующие переменные и запускает SLIME в главном каталоге проект (предоставляется в интерактивном режиме). Он был отправлен группе Clojure, на самом деле вот ссылка на копию этого сообщения в почтовом архиве. Обратите внимание, что есть одна вещь, которая нуждается в исправлении - для swank-clojure-jar-path должен быть установлен полный путь к clojure.jar. В противном случае это фантастический инструмент.

На самом деле я упомянул эту функцию в этом ответе на вопрос об управлении classpath при использовании Clojure и Emacs. Другие ответы также могут быть интересными.

И если вы только начинаете использовать SLIME, посмотрите видео SLIME, на которое ссылается с домашней страницы SLIME , которое теперь доступно по ссылке, размещенной Michiel в Комментарии. Это очень хорошее введение. : -)

6 голосов
/ 28 декабря 2009

Leiningen - это новый инструмент сборки Clojure, который заботится о ваших классовых путях. Вы устанавливаете простой файл проекта в корневом каталоге проекта, чтобы указать основной класс вашего проекта, и он автоматически обнаруживает все файлы JAR в вашем каталоге lib и загружает их для вас.

Теперь я просто набираю "lein swank" в командной строке, а затем M-x slime-connect в Emacs, и все просто работает. (Это можно легко автоматизировать с помощью небольшого Elisp.)

Дополнительная информация в этом сообщении в блоге .

4 голосов
/ 26 декабря 2009

Краткий ответ:
(load-file "full-path-to-definition")

Длинный ответ: Вот как выглядит мой процесс начальной загрузки:

В ~ / .clojure / user.clj (этот файл запускается автоматически при загрузке slime / clojure):
(add-classpath "file://path/to/foo.jar") ; Include these jars in the classpath
(add-classpath "file://path/to/foo2.jar")
(load-file "file://workspace/bootstrap.clj")

В bootstrap.clj:
(compile 'my.package)

Файлы пакетов находятся по адресу /workspace/my/package.clj

В package.clj:
(ns my.package)
(defn foo [] (+ 2 2))

1 голос
/ 01 января 2010

Лучший подход, который я нашел при использовании Emacs, SLIME и swank-clojure, - это использовать функцию (Emacs Lisp) swank-clojure-project. Из его документации:

(swank-clojure-project PATH)

Настройка пути к классам для проекта clojure и запуск нового сеанса SLIME. Убивает существующий SLIME-сеанс, если есть.

Если вы делаете «M-x swank-clojure-project», он в интерактивном режиме запросит у вас каталог вашего проекта; как только вы выбрали его, все jar-файлы в подкаталоге lib, а также папка src и classes будут добавлены в ваш путь к классам. Он также учитывает структуру каталогов Maven / lein, другими словами: обычно он просто работает.

Если вы что-то измените, например, добавьте новый файл jar, просто выполните swank-clojure-project еще раз.

...