我目前正在将功能性添加到现有的J2EE网络应用程序,在Tomcat容器,我正在写我的增加使用。我的设置是简单的:我只想补充呼吁,以静态的方法产生的质量的技术资源,并代码的所有辛勤工作和一侧。在建造过程包括在编制和代码(lein uberjar)和随后编制的java代码,罐子在类路径。

在webapp init,我们呼吁有产生类触发了一种炫耀的服务器 (swank/start-repl).我想要能够连接我Aquamacs'泥到,服务器和工作以交互方式从那里(最多一点上,我不会尝试什么,需要java侧重新编译).但我有一个情况,我不太理解。如果我做的 \M-x slime-connect, 我得到一个REPL迅速(通知后,有没有劣口齿不清的过程中,我认为这是确定的,因为逊色些进程之外运行emacs的控制)。我可以评估的形式完美的,我甚至可以检查的东西喜欢 my.own.namespace/my-var.然而,如果我去拜访一文件已经编制和代码,我似乎无法使泥认识到它作为其来源。考虑一个简单和文件:

(ns my.namespace
  (:gen-class
   :name my.namespace
   :methods [#^{:static true} [testFunc [] void]]))

(def *secret* "shhhh")

(defn -testFunc []
  (println (str "our secret is: " secret)))

假设,这是编制和包括在uberjar载的网络应用程序,我可以eval/检查 my.namespace/*secret*.但是,如果我尝试eval内的代码缓冲区,泥认为我是对的 user namespace(甚至可以有意义!).但现在我左边有一个单一的工作的选择-我必须评估一个接一个,所有形式的文件! \C-c \C-l (装载的源文件)不会做什么-显然是刚刚返回的零和产出没有别的。编制似乎一切都做到这一点-它汇编,显示了错误,如果它找到它们,但不会改变我的名字空间。和奇怪的是 \C-~ (sync包和目录),其使用共同的口齿不清它不只是我想要什么,但这里它冻结和REPL。

总有选择的切换到REPL、打字 (in-ns 'my.namespace), 然后正常工作。但是,仅仅是不够实用时和文件都在不断增多(如空间代码的缓冲区不会自动改变!)

我的问题是,那么,我是否缺乏基本的指令/配置,或者如果有一个明显的原因,这种行为发生这样的。

有帮助吗?

解决方案 3

我刚刚发现,除去的罪魁祸首对此问题: slime-redirect-inferior-output, 从泥repl。el正在从一个钩子我的设置。事实证明,它没有发挥良好,没有一个劣质-list-process(阅读,swank服务器开始从内less).

所以一个快速的解决办法破解的是只是删除 error 从这一职能,就像 .现在挂钩进行,并将名称空间是自动计算的。如预期。谢谢你的建议,尽管如此-他们带我到这解决方案。

其他提示

我可能是误解你的问题,但是你不能(在访问这个假设的缓冲区在emacs),打 C-c C-k 汇编的缓冲区,在你的前题的实例(什么泥连接)?

然后,在泥缓冲器,换来这名字空间的用 (in-ns 'my.namespace).那么你应该有访问为什么你编的那名字空间。

换名字空间的自动编制从来没有被默认为swank-题,虽然它可能是一个可选的泥要素发生作用。但C-c M-p换repl到当前的缓冲器的名称空间有总的工作对我来说,我从来没有听说过任何人具有与它的麻烦。

你上运行稳定的最新版本和模式和泥repl?你有swank-。el安装?(你不需要它。) 这听起来像这可能是由于不匹配的版本的工作基本是在封闭的情况下进行库。如果这不是问题,这可能是一个Aquamacs的错误;炫耀-题的目的是与GNU Emacs。它也可能是一个错误,在泥如果你正在运行,从主干,而不是最新的于释放。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top