Clojure 1.2 выпущен!Как получить swank-clojure, чтобы использовать это? - PullRequest
3 голосов
/ 21 августа 2010

Я только что установил новую установку emacs, установил ELPA и установил swank-clojure с использованием ELPA. Хотя Clojure 1.2 был выпущен, когда я нажал «M-x slime», он все равно скачал для меня Clojure 1.1 вместо 1.2

Как мне заставить его использовать 1.2 теперь, когда он доступен? Нужно ли делать это вручную? Нужно ли ждать обновления слизи / swank для использования 1.2?

Обновление : Спасибо за рекомендации по использованию leiningen, но я хочу, чтобы emacs просто запустил сам REPL. Эта проблема возникает из-за того, что пакет swank-clojure в ELPA не обновляется?

Ответы [ 4 ]

5 голосов
/ 21 августа 2010

В Leiningen 1.3 легко создать отдельный сеанс swank:

$ lein install swank-clojure 1.3.0-SNAPSHOT
$ ~/.lein/bin/swank-clojure

Вы можете добавить ~ / .lein / bin к вашему $ PATH, чтобы сделать это проще.

Тогда внутри Emacs:

M-x slime-connect

Запуск swank из Emacs можно выполнить с помощью M-x lein-swank , если вы находитесь в каталоге проекта. Однако автоматическая загрузка и установка Clojure и других зависимостей через swank-clojure.el подвержена ошибкам и не рекомендуется.

3 голосов
/ 21 августа 2010

Я полагаю, что с такой настройкой, которую вы описываете, Mx slime поместит все в ~/.clojure и ~/.swank-clojure на пути к классам.Вы можете настроить это, установив переменную swank-clojure-classpath (я настроил ее на использование только ~/.clojure; именно туда я поместил базовый набор jar-файлов, полезных для запуска одноразовых экспериментальных REPL.

Как тольковам нужно больше материала на пути к классам, вышеприведенное неадекватно.Есть два варианта для управления этими более сложными случаями:

Вариант 1: запустить Swank, затем подключить

Самый простой подход заключается виспользуйте Leiningen . Поместите это в project.clj:

(defproject repl-base "1.0.0-SNAPSHOT"
  :description "A project to start Swank in."
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[swank-clojure "1.2.1"]])

Затем используйте lein swank в каталоге вашего проекта, чтобы запустить сервер swank, и используйте Mx slime-connect для подключения к нему из Emacs.

В качестве другой возможности, cljr Дэвида Эдгара Либке, по-видимому, запустит для вас автономные экземпляры Swank, обратитесь к README за подробностями.

Вариант 2: запускать Swank из Emacs

Теперь, если честно, я склонен запускать Swank из Emacs сам - это может быть немного сложнее в настройке (и поэтомувозможно, не рекомендуется в начале), но довольно удобно позже.См. мой ответ на более старый вопрос об одной версии функции, которую я использую для запуска экземпляров Swank, специфичных для Clojure, с правильной настройкой пути к классам для проектов в стиле Leiningen.

1 голос
/ 21 августа 2010

Я использую leiningen для подключения emacs slime к экземпляру clojure. В проекте вы всегда получаете пару зависимостей, которые удобно размещаются на пути к классам.

Он использует небольшой файл clojure для описания зависимостей, например, :

(defproject myprojecy "0.1.0-SNAPSHOT"
   :description "A project."
   :dependencies [[org.clojure/clojure "1.2.0-beta1"]
                 [org.clojure/clojure-contrib "1.2.0-beta1"]]
   :dev-dependencies [[swank-clojure "1.2.1"]])

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

Запуск lein swank запускает программу, а ответ в swank:

ptimac:cljhack pti$ lein swank
user=> Connection opened on local port  4005
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=4005]>

теперь вы можете подключаться в emacs, используя M-x slime-connect, и принимать значения по умолчанию.

0 голосов
/ 23 января 2011

Вам просто нужно установить переменную swank-clojure-classpath, прежде чем вы нажмете M-x slime

Скажите, если у вас есть clojure.jar, clojure-contrib.jar и swank-clojure.jar в каталоге c: \ jars

В скретч-буфер вставьте эту

(setq swank-clojure-classpath '("c:/jars/clojure.jar" "c:/jars/cloure-contrib.jar" 
"c:/jars/swank-clojure.jar"))

Нажмите C-x C-e и M-x slime, это должно сделать это.

Для получения более подробной информации

https://github.com/jochu/swank-clojure/blob/master/swank-clojure.el#L32-34

http://en.wikibooks.org/wiki/Clojure_Programming/FAQ#Where_does_swank-clojure_.28SLIME.29_look_for_Clojure.27s_jars.3F

...