Как выбрать / переключить профили 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 '())))

Теперь это работает. Спасибо за Джикай Лю!

Другие вопросы по тегам