Как настроить ClojureScript REPL с emacs?
Я пытаюсь настроить среду для Clojurescript. Проблема в том, что я не знаю, как настроить его, чтобы я мог подключиться к ClojureScript Browser REPL из emacs, поэтому я могу оценивать формы прямо из редактора и отображать их в браузере.
вещи, которые я пробовал:
Я попытался использовать cemerick's piggieback и piggybacking на nREPL. Я не знаю, как настроить его из документации. Я смог заставить его работать после выяснения Мне нужно было составить список.HTML-файл в корневой папке проекта. Только сервер не обслуживает мои активы.
Я попытался настроить inferior-lisp с помощью скрипта bash из ClojureScript wiki. Однако всякий раз, когда я пытаюсь запустить программу inferior-lisp, я получаю "неправильный аргумент типа: stringp, nil".
вот мой идеальный рабочий процесс:
У меня есть папка проекта/ресурсы/общая папка, в которой есть мои активы и html-файлы. Я могу запустить веб-сервер, который обслуживает эти файлы каким-то образом, либо по кольцу, либо с помощью простого http-сервера python. Я мог бы подключиться к REPL из emacs и оценить формы в нем.
3 ответов
Джемерик снова спешит на помощь: Остин (https://github.com/cemerick/austin) это именно то, что вам нужно.
Austin дает вам два варианта: либо REPL, где JS оценивается в браузере ("project REPL"), либо более полный, интегрированный браузер-подключенный REPL. Похоже, что последнее-это то, что вам нужно, и вам нужно копать немного сложнее для своих документов: https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample
чтобы заставить браузер-подключенный REPL работать, пример Chas довольно прост, чтобы следовать, и сводится к:
- добавьте немного middleware или template magic, чтобы добавить элемент сценария JS на вашу HTML-страницу, и этот скрипт должен содержать вывод
(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)
- подключитесь к все еще работающему приложению Ring server с помощью браузера, и вы должны быть подключены.
(.alert js/window "Hi!")
должны доказать это. - использование стандартных команд Emacs nREPL будет работать, как ожидалось, компиляция ClojureScript в JavaScript и отправка его в браузер для оценка.
основное различие между Piggieback и Austin - это первый и второй шаги: atom используется промежуточным программным обеспечением для добавления встроенного блока JavaScript, который подключается обратно к nREPL. Поскольку URL HTTP определяется во время выполнения, Кольцевой сервер и клиентский 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)))
У меня были аналогичные проблемы после выполнения учебника поhttps://github.com/clojure/clojurescript/wiki/Quick-Start
что помогло мне было последнее предложение на https://groups.google.com/forum#!тема/clojure / _JWvqc3fENQ
замена мета-тега в индексе.HTML с помощью
<meta content="text/html;charset=UTF-8" http-equiv="content-type">
С главная Figwheel, настройка live-перезагрузки, подключенного к браузеру REPL стала намного проще. Figwheel.main компилирует ваш источник Clojurescript по мере его изменения и позволяет оценивать код в браузере.
-
определите свои зависимости в
deps.edn
.:paths
указывает папки для поиска исходного кода.{:deps {org.clojure/clojure {:mvn/version "1.9.0"} org.clojure/clojurescript {:mvn/version "1.10.339"} com.bhauman/figwheel-main {:mvn/version "0.1.9"}} :paths ["src"]}
-
определите точку входа приложения в
dev.cljs.edn
. Здесь" dev " становится сборкой имя.{:main example.core}
-
создайте код ClojureScript в
src/example/core.cljs
.(ns example.core) (let [msg "Change msg in src/example/core.cljs and see what happens!"] (js/alert msg))
-
запустите REPL.
- использовать Emacs:
- выполнить
M-x cider-jack-in-clojurescript
- выберите
figwheel-main
в качестве цели сборки - Set
:dev
в качестве имени сборки.
- выполнить
- С терминала:
- выполнить
clojure -m figwheel.main -b dev -r
.-b dev
устанавливает сборку и-r
запускает REPL на нагрузка.
- выполнить
- использовать Emacs:
для получения дополнительной информации, обратитесь к разделу хорошо сделанная документация Figwheel.