Как выбрать / переключить профили Leiningen с помощью Emacs nREPL?
У меня есть профиль: dev, настроенный в моем файле проекта leiningen. Это определяет настройки: init и:init-ns для моего сеанса repl. Если я запускаю nrepl в emacs (Mx nrepl-jack-in) с курсором на ключевое слово: dev в моем project.clj, запускается repl и используются настройки: init и:init-ns. Если у меня есть курсор в другом месте, начальное пространство имен отличается (тестовые ns, а не пользовательские), и: init не был оценен.
Я предполагаю, что это какая-то особенность(сейчас я склонен думать, что это случайное ошибочное поведение), но кто-нибудь может объяснить это или указать мне на документы, которые это делают? Кроме того, есть ли способ изменить профиль после запуска repl?
Спасибо
3 ответа
Вопреки тому, что сказал commenter @user7610, нет cider-jack-in-with-profile
функция в сидре. В этом отношении запрос на сидр № 544 вводит в заблуждение.
Если вы хотите, чтобы сидр загружался самостоятельно special-snowflake
профиль сделать это в Emacs:
M-x set-variable cider-lein-parameters
напримерwith-profile +my-special-snowflake repl :headless
или установить переменную в интерактивном режиме (чтобы вы могли видеть ее текущее значение перед ее изменением):
C-h, v cider-lein-parameters
а затем нажмите или нажмите Enter на "настроить" и установите его там, например,with-profile +my-special-snowflake repl :headless
и применить его
Это приведет к следующему cider-jack-in
загрузить my-special-snowflake
профиль в дополнение к base
профиль (который необходим для запуска nrepl и, следовательно, сидра).
Попробуй это:
(defun start-cider-repl-with-profile ()
(interactive)
(letrec ((profile (read-string "Enter profile name: "))
(lein-params (concat "with-profile +" profile " repl :headless")))
(message "lein-params set to: %s" lein-params)
(set-variable 'cider-lein-parameters lein-params)
(cider-jack-in)))
Тест на CIDER 0.16.0 (Рига)
Я просто ищу ту же функцию и обнаружил эту открытую проблему в clojure-emacs/nrepl.el "Добавить аргумент в nrepl-jack-in, чтобы разрешить спецификацию профилей" https://github.com/clojure-emacs/nrepl.el/issues/327
это все еще открыто
Я пытаюсь использовать функцию автора Jiacai Liu на моем компьютере (GNU Emacs 26.2 (сборка 1, x86_64-apple-darwin18.2.0, NS appkit-1671.20 Версия 10.14.3 (сборка 18D109)) от 2019-04-13) . Я получаю сообщение об ошибке:
eval-region: Wrong number of arguments: (1 . 1), 0
И тогда я пытаюсь elisp функционировать как:
(defun start-cider-repl-with-profile ()
(interactive)
(letrec ((profile (read-string "Enter profile name: "))
(lein-params (concat "with-profile +" profile " repl :headless")))
(message "lein-params set to: %s" lein-params)
(set-variable 'cider-lein-parameters lein-params)
(cider-jack-in '())))
Теперь это работает. Спасибо за Джикай Лю!