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

Как настроить Clojurescript REPL с emacs?

Я пытаюсь настроить среду для Clojurescript. Проблема, с которой я сталкиваюсь, не знает, как ее настроить, чтобы я мог подключиться к CRPL Clojurescript REPL из emacs, поэтому я могу оценивать формы прямо из редактора и показывать их в браузере.

Вещи, которые я пробовал:

Я пробовал использовать Cemerick piggieback и комбинировать на nREPL. Я не знаю, как его настроить из документации. Я смог заставить его работать после выяснения, что мне нужно сделать файл index.html в корне папки проекта. За исключением того, что сервер не обслуживает мои активы.

Я попытался настроить ниже lisp с помощью bash script из вики Clojurescript. Тем не менее, всякий раз, когда я пытаюсь запустить нижнюю lisp -программу, я получаю "Неверный аргумент типа: stringp, nil".

Здесь мой идеальный рабочий процесс:

У меня есть папка/ресурсы/общая папка проекта с моими активами и html файлами. Я могу запустить веб-сервер, который каким-то образом обслуживает эти файлы, либо по телефону, либо используя простой HTTP-сервер python. Я мог бы подключиться к REPL из emacs и оценить формы в нем.

4b9b3361

Ответ 1

Cemerick на помощь снова: Austin (https://github.com/cemerick/austin) - это именно то, что вам нужно.

Остин предлагает вам два варианта: либо REPL, где JS оценивается в браузере ( "проект REPL" ), либо более полный, интегрированный REPL с подключением к браузеру. Похоже, что последнее - это то, что вам нужно, и вам нужно немного усложнить его документы: https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample

Чтобы получить работу REPL, связанную с браузером, пример Chas достаточно прост, чтобы следовать, и сводится к следующему:

  • Добавьте небольшое промежуточное программное обеспечение или шаблонную магию, чтобы добавить элемент JS script на вашу HTML-страницу, и что script должен содержать вывод (cemerick.austin.repls/browser-connected-repl-js)
  • Запустите nREPL, запустите свой сервер звонков, а затем
    (def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
    для создания среды REPL.
  • Поверните сеанс nREPL с Clojure на ClojureScript REPL с помощью
    (cemerick.austin.repls/cljs-repl repl-env)
  • Подключитесь к используемому серверному приложению с браузером, и вы должны быть подключены.
    (.alert js/window "Hi!") должен доказать это.
  • Использование стандартных команд Emacs nREPL будет работать как ожидалось, компиляция ClojureScript в JavaScript и отправка его в браузер для оценки.

Основное различие между Piggieback и Austin - это первый и второй шаги: атом используется промежуточным программным обеспечением для добавления встроенного блока JavaScript, который соединяется с nREPL. Поскольку URL-адрес HTTP определяется во время выполнения, сервер Ring и клиентский JavaScript должны работать совместно.

FWIW Я создал функцию в моем пространстве имен user, чтобы ускорить подключение CLJS REPL:

(defn cljs-browser-repl
  "Fire up a browser-connected ClojureScript REPL"
  []
  (let [repl-env (reset! cemerick.austin.repls/browser-repl-env
                         (cemerick.austin/repl-env))]
    (cemerick.austin.repls/cljs-repl repl-env)))