我创建了一个新项目lein.我core.clj在emacs中打开.我确保跑M-x clojure-mode,并且M-x nrepl-enable-on-existing-clojure-buffers.
然后我跑,M-x nrepl-jack-in并在我得到的迷你缓冲区
启动nREPL服务器...
然后是一条消息,例如:
连接的.如果你优化一切,你一定会感到不快. - 唐纳德克努特
我看到缓冲区名称是*nrepl*,但缓冲区不包含Clojure Repl,而是完全空白.
如果我输入任何东西(意思是任何东西),我得到:
错误的类型参数:integer-or-marker-p,nil
如果我切换回我的core.clj缓冲区,并点击C-c C-l,我得到迷你缓冲区中缓冲区中最后一个函数的命名空间名称.如果我将光标放在函数定义的末尾并点击C-x C-e,我得到:
CompilerException java.lang.RuntimeException:无法在此上下文中解析符号:x,编译:(NO_SOURCE_PATH:1:1)
我尝试使用没有依赖项的新lein目录,lein new project-name并尝试上述相同的步骤并得到相同的结果.
我还能检查什么和/或我做错了什么?
编辑:附加信息
当我在空*nrepl*缓冲区中C-x C-e键入内容并尝试按下我键入的内容时,在迷你缓冲区中我收到消息:
没有Lisp子进程; 看变量`inferior-lisp-buffer'
另外,我正在运行:
GNU Emacs 24.3.1
Leiningen 2.1.2 on Java 1.6.0_27 OpenJDK 64位服务器VM
我正在运行Lein 2和苹果酒0.7.0.我制作了一个使用ring/run-jetty启动的示例环应用程序.
(ns nimbus-admin.handler
(:require [compojure.core :refer :all]
[compojure.handler :as handler]
[clojure.tools.nrepl.server :as nrepl-server]
[cider.nrepl :refer (cider-nrepl-handler)]
[ring.adapter.jetty :as ring]
[clojure.tools.trace :refer [trace]]
[ring.util.response :refer [resource-response response redirect content-type]]
[compojure.route :as route])
(:gen-class))
(defroutes app-routes
(GET "/blah" req "blah")
(route/resources "/")
(route/not-found (trace "not-found" "Not Found")))
(def app (handler/site app-routes))
(defn start-nrepl-server []
(nrepl-server/start-server :port 7888 :handler cider-nrepl-handler))
(defn start-jetty [ip port]
(ring/run-jetty app {:port port :ip ip}))
(defn -main
([] (-main 8080 "0.0.0.0"))
([port ip & args]
(let [port …Run Code Online (Sandbox Code Playgroud) 我检查了lein和clojure 1.8 socket repl的repl,看起来没有一个支持用户名/密码.如果我打开repl到外部连接,如何使其安全?或者需要使用ssh登录主机,然后从该主机连接到repl?
如何连接到可以通过例如SSH访问的远程服务器上运行的REPL会话?
你知道当你在bash中点击向上箭头时它会填写你输入的最后一个命令吗?在nrepl有什么办法吗?
到目前为止,我一直在进行反向搜索(C-r),输入相关行的前几个字符,查找行(s)(C-k),跳转到缓冲区的末尾(M->)并查找被杀死的行(C-y).有更简单的方法吗?
你如何优雅地关闭emacs中的nrepl?
swank-clojure用逗号关闭然后sayoonara,这对nrepl不起作用.
我正在lein repl一个项目中运行,它成功启动并创建了文件 target/repl-port。
使用 VIM 7.4.86 版,我可以使用如下命令:
:Connect nrepl://localhost:57644
Vim 然后成功连接到 repl,一切都很好。
但是,我的理解是 vim-fireplace 能够使用 target/repl-port 文件自行建立此连接。那不会发生。我确实看到了关于 lein 2.3 更改为使用 target/repl/repl-port 的评论(我在这个项目中使用了 lein 2.0.0 - 这是我无法控制的要求)所以我试图在这个位置创建一个符号链接,但是这也没有被接受。
我正在使用以下版本的 vim-fireplace:
github.com/tpope/vim-fireplace
在最新的提交中,目前是:
f1b8096b3fe00cd9594c8a2bf0819efc154e9843
(Date: Wed Oct 23 21:25:53 2013 -0700)
Run Code Online (Sandbox Code Playgroud)
我希望自动化这个连接。我对 VIMscript 不太了解,所以我希望可能有某种方法可以追踪问题,而不必深入研究来源。
我有一个相当标准的Quil文件,我正在使用Emacs和nrepl进行编辑.
(defn setup []
(qc/smooth)
(qc/frame-rate 24)
(qc/background 200))
(defn draw []
(draw-world))
(qc/defsketch run
:title "Circles!"
:setup setup
:draw draw
:size [800 600]
:renderer :opengl)
Run Code Online (Sandbox Code Playgroud)
首先,我C-c C-l用来加载文件; 这会创建一个草图窗口.然后我编辑我的draw-world功能,比如用不同的颜色绘制.我的问题是:
如何使用此新功能更新当前的Quil窗口?
*C-x C-e似乎不起作用.
我正在使用emacs和nrepl.我该怎么做:
退出nrepl(目前我只是杀了缓冲区)
重新加载我正在使用的所有内容nrepl.
我试图解决的问题是,当我加载一个ns表单并且它有错误时,我无法加载正确的代码,因为它一直给我以前的错误.
我一直在开发C#应用程序.商业IDE和工具提供了非常好的代码完成功能.我现在正在学习clojure,我真的很想念熟悉的工作流程.
所以,关于emacs.我安装了nrepl,ac-nrepl和clojure-mode.repl中自动完成工作正常.它也适用于当前缓冲区中的符号.但不适用于:
是否有任何现有的包完全涵盖案例1和2?
我的与clojure相关的配置:
;;;;;;;;;;;;;;;
;;; clojure ;;;
;;;;;;;;;;;;;;;
(require 'nrepl)
;; Configure nrepl.el
(setq nrepl-hide-special-buffers t)
(setq nrepl-popup-stacktraces-in-repl t)
(setq nrepl-history-file "~/.emacs.d/nrepl-history")
;; Some default eldoc facilities
(add-hook 'nrepl-connected-hook
(defun pnh-clojure-mode-eldoc-hook ()
(add-hook 'clojure-mode-hook 'turn-on-eldoc-mode)
(add-hook 'nrepl-interaction-mode-hook 'nrepl-turn-on-eldoc-mode)
(nrepl-enable-on-existing-clojure-buffers)))
;; Repl mode hook
(add-hook 'nrepl-mode-hook 'subword-mode)
;; Auto completion for NREPL
(require 'ac-nrepl)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'nrepl-mode))
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'clojure-nrepl-mode-hook 'ac-nrepl-setup)
(define-key clojure-mode-map (kbd "C-<ret>") 'nrepl-eval-expression-at-point)
;(global-set-key (kbd …Run Code Online (Sandbox Code Playgroud) 在Java 1.7.0_21 Java HotSpot(TM)64位服务器VM上运行Leiningen 2.3.4
我无法连接到nREPL服务器.
我使用了一个新项目lein new luminus,然后为drawbridge([com.cemerick/drawbridge "0.0.6"])添加了一个依赖项.
我加了一个处理器路线如下REPL(基于https://devcenter.heroku.com/articles/debugging-clojure):
(def drawbridge-handler
(-> (cemerick.drawbridge/ring-handler)
(wrap-keyword-params)
(wrap-nested-params)
(wrap-params)
(wrap-session)))
(defn wrap-drawbridge [handler]
(fn [req]
(if (= "/repl" (:uri req))
(drawbridge-handler req)
(handler req))))
Run Code Online (Sandbox Code Playgroud)
并添加wrap-drawbridge到我的中间件.
然后我使用启动服务器
lein ring server-headless
连接似乎运行良好,因为执行GET请求会http:localhost:3000/repl产生响应:["[\n","\n]"]
但我无法连接到REPL:
> lein repl :connect 0.0.0.0:3000/repl
Connecting to nREPL at 0.0.0.0:3000/repl
Run Code Online (Sandbox Code Playgroud)
并且,过了一段时间:
SocketException The transport's socket appears to have lost its connection to the nREPL server
clojure.tools.nrepl.transport/bencode/fn--4287/fn--4288 (transport.clj:95)
clojure.tools.nrepl.transport/bencode/fn--4287 (transport.clj:95) …Run Code Online (Sandbox Code Playgroud) 我刚刚开始尝试使用以下模板制作一个简单的 cljs 应用程序:
lein new figwheel someproject -- --reagent
我希望在 cider 中使用 REPL 进行 cljs 开发,就像我通常在普通 clj 项目中使用的方式一样,所以我做了一些研究并最终得到了这里:
https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl
我通读了说明,并验证了所有正确的依赖项都在 project.clj 中(无需更改任何内容,看起来模板添加了我需要的所有内容)。上面链接中的最后一步表明我需要将以下代码添加到我的 emacs 配置中:
(require 'cider)
(setq cider-cljs-lein-repl
"(do (require 'figwheel-sidecar.repl-api)
(figwheel-sidecar.repl-api/start-figwheel!)
(figwheel-sidecar.repl-api/cljs-repl))")
Run Code Online (Sandbox Code Playgroud)
现在 - 我是一个 emacs 新手,所以我使用的设置仍然是我第一次从“ Clojure for the Brave and True ”中学到的:
https://github.com/flyingmachine/emacs-for-clojure
我试图首先将上面的代码片段放入 中~/.emacs.d/init.el,但是每当我尝试时M-x cider-jack-in ...,都没有cider-jack-in-clojurescript选择。我还尝试将代码片段放在 中~/.emacs.d/customizations/setup-clojure.el,这看起来更合乎逻辑,但结果相同。
我真的很想能够启动并运行这个 REPL,所以任何帮助将不胜感激。
偶尔我想在其他软件的repl中戳一个结果.有没有一种方便的方法将repl中运行的函数的结果复制到系统剪贴板?我知道我可以spit将结果输出到文件中.我正在使用mac os x.