Clojure emacs slime + вопрос о каталоге swank

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

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

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


person MrHus    schedule 26.12.2009    source источник


Ответы (4)


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

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

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

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

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

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

person Michał Marczyk    schedule 26.12.2009
comment
Я собираюсь попробовать решение функции clojure-project. Но в какой файл добавить код? - person MrHus; 27.12.2009
comment
Ссылка на видео с домашней страницы SLIME мертва. Видео по-прежнему можно найти здесь: guba.com/watch/3000054867 - person Michiel Borkent; 27.12.2009
comment
О, я никогда не замечал ... Спасибо, Мишель. Отредактирую соответственно. @MrHus: вам нужно добавить его в какой-то файл, который загружается при запуске Emacs, например ~/.emacs (на * nix) / _emacs (в Windows; я считаю, что вы помещаете это в каталог своего профиля, например C:\Documents and Settings\yourusername\_emacs, но я полностью конечно, погуглите, если это не сработает). Только не забудьте исправить swank-clojure-jar-path. Между прочим, судя по тому, что вы задаете этот вопрос, вам стоит поискать emacs-starter-kit Фила Хагельберга; также есть соответствующий скринкаст на peepcode.com. - person Michał Marczyk; 27.12.2009

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

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

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

person Paul Legato    schedule 27.12.2009
comment
Это действительно хорошее решение. Теперь я могу продолжать работать с Textmate. Спасибо. - person MrHus; 28.12.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))

person G__    schedule 26.12.2009

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

(ПУТЬ swank-clojure-project)

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

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

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

person Stefan Tilkov    schedule 01.01.2010