Не удается запустить `lein` REPL в Emacs

В Emacs при использовании clojure-mode я должен иметь возможность запускать REPL с C-c C-z. Однако всякий раз, когда я пытаюсь, я получаю сообщение об ошибке:

Searching for program: no such file or directory: lein

У меня lein установлен в /usr/local/bin (через brew), а /usr/local/bin находится в моем PATH (даже Emacs так говорит, через eval-expression (getenv "PATH")).

Что мне не хватает?


person jemmons    schedule 02.12.2012    source источник
comment
Здесь задали вопрос, подобный вашему: stackoverflow.com/questions/13243048/. Может быть, ответ может помочь вам. ;)   -  person Giuliani Sanches    schedule 03.12.2012


Ответы (2)


Ах! Переменная окружения PATH не является окончательным решением всех путей поиска emacs. Также есть «exec-путь». Очевидно, он делает в основном то же самое, но не совсем.

Во всяком случае, добавляя:

(add-to-list 'exec-path "/usr/local/bin")

К моему .emacs.d/init.el (или .emacs, если вы так считаете) все прояснилось для меня. Документ, указанный выше, предлагает что-то более полное, например:

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))

Сначала я бы попробовал (более простой) add-to-list. Но ЮММВ.

person jemmons    schedule 02.12.2012

У меня была такая же проблема, и я начал исследовать, что не так. Вскоре я обнаружил, что мой exec-path выглядит так (упрощенный пример):

("/usr/local/bin /bin /sbin").

Это был список с одной длинной строкой вместо списка отдельных путей. Моя переменная env PATH выглядела точно так же. Очевидно, проблема исходила из моей оболочки.

Я использую рыбную скорлупу. Разделитель переменной PATH — это просто пробел. Пакет exec-path-from-shell, который я использую, не может его проанализировать. Я исправил это, добавив это в свой .emacs.d/init.el:

(setq exec-path (split-string (car exec-path)))

Обновление: в конце концов это был устаревший пакет exec-path-from-shell. Используйте версию 1.8. Хорошо работает с рыбой (и tcsh).

person Nek    schedule 03.01.2015