LINUX.ORG.RU

Emacs, Slime, Clojure, CLASSPATH - не получается нормально подружить


0

0

День добрый. Возник вопрос при прикручивании clojure к slime
(setq slime-lisp-implementations '(clojure («clj-cmd») :init swank-clojure-init))
Здесь clj-cmd - строка, означающая команду из PATH. При попытке подставить сгенерированную строку http://pastebin.ca/1806753, например так
(setq slime-lisp-implementations '(clojure (clj-cmd) :init swank-clojure-init))
emacs начинает ругаться - wrong type argument stringp, clj-cmd.

Собственно чего надо - чтобы clojure нормально воспринимала CLASSPATH. Судя по всему CLASSPATH не воспринимается нормально именно emacs.
Например, выполнение этого скрипта (собственно это команда, которая запускает clojure) http://pastebin.ca/1807970 в emacs и в консоли приводит к разным результатам - в консоли вызов (System/getProperty «java.class.path») выдает правильный результат, а в emacs только ту часть, что выдает ls /opt/clojure/*.jar. Можно, конечно то, что надо прописать после «$CLASSPATH» или написать но это выглядит некрасиво. А написать длинную конструкцию для slime-lisp-implementations тоже не получается - не воспринимаются пробелы.

Как лучше выкрутиться?

★★★★

вот рабочий конфиг - http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-clojure.el, а вот clj-cmd

#!/bin/sh -e

CP=$HOME/emacs/clojure/clojure-contrib.jar:$HOME/emacs/clojure/clojure.jar:$HOME/emacs/clojure/jline.jar:$CLASSPATH
JAVA_OPTS="-Xmx1g -Xms1g -server -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseCompressedOops -XX:+DoEscapeAnalysis -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=256M -XX:-UseGCOverheadLimit"
if [ -z "$CLJ_CMD" ]; then
    if [ -z "$1" ]; then 
    	java $JAVA_OPTS -cp $CP jline.ConsoleRunner clojure.main
    else
        scriptname=$1
        shift
    	java $JAVA_OPTS -cp $CP clojure.main $scriptname $*
    fi
else
    $CLJ_CMD
fi
ott ★★★★★
()
Ответ на: комментарий от lester_dev

1) все равно не понятно - не распознает части CLASSPATH только emacs. всем остальным побоку на манифест.
2) Создал я в каталоге, что входит в CLASSPATH META-INF/MANIFEST.MF такой текст:
Manifest-Version: 1.0
Class-Path: /home/miha/MY_Projects/java/ - емакс продолжает не видеть

cab ★★★★
() автор топика
Ответ на: комментарий от ott

Алексей, что выдает сложуре из под емакса после ввода этой команды (System/getProperty «java.class.path») Видит ли все пути в CLASSPATH?

cab ★★★★
() автор топика

Алексей, спасибо. Все заработало

cab ★★★★
() автор топика
Ответ на: комментарий от zahardzhan

1) При выполнении этого (System/getProperty «java.class.path») у тебя CLASSPATH правильно отображается?
2) Пакетный менеджер для разных программ мне не нравится - у меня уже есть один. Нечего городить огород ни под питон, ни под емакс. ИМХО.

cab ★★★★
() автор топика
Ответ на: комментарий от cab

Да, класпас всё отображает так как надо. Запустил проект Clojure «nameless», вот что выдает

user> (System/getProperty "java.class.path")
"/home/haru/src/nameless/test/:/home/haru/src/nameless/src/:/home/haru/src/nameless/classes/:/home/haru/src/nameless/lib/ant-1.6.2.jar:/home/haru/src/nameless/lib/ant-launcher-1.6.2.jar:/home/haru/src/nameless/lib/autodoc-0.7.0.jar:/home/haru/src/nameless/lib/clojure-1.2.0-master-20100211.230155-10.jar:/home/haru/src/nameless/lib/clojure-contrib-1.2.0-master-20100122.191106-1.jar:/home/haru/src/nameless/lib/enlive-1.0.0-20091229.021828-6.jar:/home/haru/src/nameless/lib/swank-clojure-1.1.0.jar:/home/haru/src/nameless/lib/tagsoup-1.2.jar"

Пакетный менеджер для разных программ мне не нравится - у меня уже есть один. Нечего городить огород ни под питон, ни под емакс. ИМХО.

Поверь мне, настраивать эмакс и кложу установкой всего того же софта через гит и вручную собирать потом кложу еще - это такой гемор, что проще таки один раз воспользоваться пакетным менеджером и забыть. В нём, кстати есть еще много полезных прибабахов, не только кложа.

Можешь глянуть мои конфиги к эмаксу на гитхабе (за основу я брал конфиги алекса отта) http://github.com/zahardzhan/share/tree/master/emacs http://github.com/zahardzhan/share/tree/master/emacs.d/

zahardzhan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.