Подтвердить что ты не робот

Не удается запустить "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")).

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

4b9b3361

Ответ 1

Ах! Переменная среды PATH не является конечным и всевозможными способами поиска emacs. Там также "exec-path". По-видимому, это в основном то же самое, но не точно.

В любом случае добавив:

(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. Но YMMV.

Ответ 2

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

("/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).