Я использую emacs с clojure-чванством и слизью и пытаюсь установить свою среду разработки. И я столкнулся с проблемой. Когда я запускаю repl, я застреваю в неизвестном каталоге, предотвращающем меня для загрузки моего пространства имен. Поскольку clojure repl не может найти правильный файл.
Кто-либо знает, как изменить текущий каталог?
PS: я только что начал использовать emacs и слизь, таким образом, я - новичок.
Если вы хотите изменить понятие слизи текущего каталога, нажмите ,cd
(
= Enter) и введите путь.
Однако, на самом деле это не является правильным решением проблемы. Правильное решение заключается в том, чтобы настроить путь к клас-спату так, чтобы вы могли (использовать 'your.namespace'). С этой целью, мне интересно, может ли этот очень длинный ответ, который я дал на вопрос о правильной настройке classpath, быть полезным... :-)
Кстати, я несколько возражаю против решений, включающих add-classpath
, так как в настоящее время он помечен как устаревший и на него никогда не полагались.... Хотя, с другой стороны, он, безусловно, может работать отлично, и стоит знать о том, что он может пригодиться в качестве быстрого и грязного инъекционного трюкача для класспата.
Теперь, если вам нужна действительно хорошая среда разработки на основе SLIME, я хотел бы указать вам на очень хорошую clojure-project
elisp-функцию Фила Хагельберга, которая устанавливает все соответствующие переменные и запускает SLIME в главном каталоге проекта (поставляется интерактивно). Он был размещен в группе Clojure, на самом деле вот ссылка на копию этого сообщения из почтового архива. Обратите внимание, что там есть одна вещь, которая нуждается в исправлении -- swank-clojure-jar-путь
должен быть установлен на полный путь к clojure.jar
. Иначе это фантастический инструмент.
На самом деле я упоминал об этой функции в ответе на вопрос об управлении клас-спатом при использовании Clojure и Emacs. Другие ответы также могут быть интересны.
И если вы только начинаете использовать SLIME, посмотрите видео SLIME, со ссылкой с домашней страницы SLIME , которая теперь доступна по ссылке, размещенной Мичиэлем в комментариях. Это очень хорошее вступление. :-)
Краткий ответ:
(загрузить файл «полный путь-определение»)
Длинный ответ: Вот как выглядит мой процесс начальной загрузки:
В ~ / .clojure / user.clj (этот файл запускается автоматически при загрузке slime / clojure):
(add-classpath "file: // path / to /foo.jar "); Включите эти jar-файлы в путь к классам
(add-classpath "file: //path/to/foo2.jar")
(load-file "file: //workspace/bootstrap.clj")
В bootstrap.clj:
(compile 'my.package)
Файл (ы) пакета находится по адресу /workspace/my/package.clj
In package.clj:
(ns my.package)
(defn foo [] (+ 2 2))
Leiningen - это новый инструмент для сборки Clojure, который беспокоится за вас о класспатинге. Вы настраиваете простой файл проекта в корневом каталоге проекта, чтобы указать основной класс вашего проекта, и он автоматически обнаруживает все JARs в вашем каталоге lib и загружает их за вас.
Я теперь просто набираю "lein swank" в командной строке, а затем M-x slime-connect в Emacs, и все просто работает. (Это можно легко автоматизировать с помощью небольшого Elisp.)
Больше информации в этом посте блога.
.Лучший подход, который я нашел при использовании Emacs, SLIME и swank-clojure, - это использование функции swank-clojure-project (Emacs Lisp). Из его документации:
(swank-clojure-project PATH)
Настроить путь к классам для проекта clojure и запустить новый сеанс SLIME. Убивает существующий сеанс SLIME, если он есть.
Если вы выполните «M-x swank-clojure-project», он интерактивно запросит у вас каталог вашего проекта; как только вы выберете его, все jar-файлы в подкаталоге lib, а также папка src и classes будут добавлены в ваш путь к классам. Он также будет учитывать структуру каталогов Maven / lein, другими словами: обычно он просто работает.
Если вы что-то измените, например добавьте новый файл jar, просто снова выполните swank-clojure-project.