问题标签 [swank]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4049 浏览

node.js - node.js - 评估实时进程

是否有人使用现有的 node.js REPL 为自己设置了类似的东西?我没有想到一个快速的方法来做到这一点。

我今天这样做的方式是使用 emacs,这个: https ://github.com/ivan4th/swank-js

该模块由以下部分组成:

  1. Emacs 的 SLIME-js 插件,与 js2-mode 结合使用,您可以简单地在函数 def 的某处发出 CMx - 然后关闭函数的字符串到 ..

  2. 用 Node.js 编写的 Swank-js 服务器(是的,您可以从本地计算机直接评估到远程进程) - 它接收您评估过的函数的字符串并实际评估它

  3. 一个完整的部分,可让您使用 BROWSER 连接到该服务器上的另一个端口,然后让您在该浏览器上操作 DOM(这非常棒但不相关)

我的解决方案在 emacs 端使用 SLIME-js,并且我在 app.js 文件中需要('swank-js')

现在..关于我的解决方案或其他可能的问题,我有几个问题和疑问:

Q1:这是不是太过分了?有人有什么秘密方法可以将 nano 中的东西评估到他的实时过程中吗?

Q2:我不得不改变 swank-js 的 EVALing 方式。它使用了某种黑魔法,如下所示:

据我了解,它只是将全局变量复制到新的上下文中,并且在 eval 时,不会更改原始函数定义 - SOOO .. 我只是使用普通的“eval”并且它可以工作。

您对此有何评论?

Q3:为了重新评估一个函数,它需要是一个 GLOBAL 函数 - 将所有函数定义为全局(类似clojure)是不好的做法吗?你认为还有另一种方法可以做到这一点吗?

0 投票
3 回答
2769 浏览

emacs - 在使用 leiningen 和 swank/slime 在 emacs 中运行 clojure 测试时停止无限循环

在某些类型的代码中,相对容易导致无限循环而不会破坏堆栈。当使用 clojure-test 测试这种性质的代码时,有没有办法在不重新启动 swank 服务器的情况下中止当前正在运行的测试?

目前我的工作流程涉及

使用 emacs 连接到 swank slime-connect,然后切换到测试,使用 执行C-c C-,,测试运行直到无限循环,然后返回,但一个 cpu 仍在测试中运行。我发现阻止这种情况的唯一方法是重新启动 lein swank,但这似乎是一个相对常见的问题?有人有更好的解决方案吗?

0 投票
2 回答
1104 浏览

clojure - 如何在 SLIME 中捕获代理的标准输出/日志输出?

我向代理发送任务,但看不到我放入函数的任何打印语句的输出。如何跟踪代理上的代码执行?

编辑:原来我确实在控制台中得到了输出,但在 SLIME 中没有。现在的问题是,如何在 SLIME 中查看输出?

0 投票
1 回答
413 浏览

google-app-engine - 如何自动启动 jetty/appengine-magic 和 swank?

在我的 Clojure/appengine-magic 项目中,我目前是这样启动的:

tlog.core 有:

或者,我可以使用,而不是 ae/start,我认为:

我想把所有这些放在一个命令后面。

由于命名空间/路径问题,所有通过-main使用或编写 leiningen 插件来处理此问题的尝试都失败了。lein run

那么怎么做呢?

0 投票
2 回答
97 浏览

macros - 为什么我在新的 slime 会话中看不到我的宏创建函数?(clojure)

在我的 clojure 代码中,我有一些通过调用自定义宏创建的函数。通常,宏会采用某种数据结构并从中创建一个方法。

这是一个人为的例子:

这将创建一个名为view-data. (我的数据库查询是数据驱动的,所以我可以创建一个具有指示性名称的函数来调用特定查询)

我的问题是,当我运行mvn clojure:swank目标并从 emacs 连接到 slime 会话时,这些功能不可见。我必须访问该文件并自己编译它C-c C-k才能创建函数。

maven 输出表明文件本身编译得很好,但是 slime 会话不知道这些函数。

任何想法为什么会发生这种情况?

0 投票
5 回答
2695 浏览

lisp - #+# 是什么意思。在 lisp 中是什么意思?

谷歌几乎是不可能的,因此我的理解仅限于阅读粘液源代码的上下文线索:也许它是普通 lisp 中对象系统的一部分?像“自我”这样的东西?

片段:

也许这会让它更容易被谷歌搜索:磅加磅//哈希加哈希符号//octothorp plus octothorp

0 投票
1 回答
1192 浏览

lisp - 如何定义 swank 服务器应该监听的地址?

启动 swank 服务器时没有设置绑定地址的参数:

我该怎么做?

0 投票
1 回答
1276 浏览

clojure - 将 lein 项目从 clojure 1.2.1 升级到 1.3.0-beta1

我有一个使用 clojure 1.2.1 的 leiningen 项目。我想向需要 clojure 1.3.0-beta1 的包添加依赖项。所以我决定将我的项目升级到较新的版本。

老实说,我不确定这涉及到什么,但我做了以下事情。

在我的 project.clj 中,我将依赖项从 [org.clojure/clojure "1.2.1] 更改为 [org.clojure/clojure "1.3.0"]

我使用 swank 所以我将我的 swank clojure 依赖项更改为 [swank-clojure "1.3.2"]。

然后我跑了

莱因部门

最后,我手动编辑了我的 /usr/bin/lein 文件以更改 CLOJURE_JAR 变量以指向较新的 clojure jar。

当我开始用'lein swank' swank 时。它开始正常,我现在收到以下警告消息,如下所示..

警告:default-javac-options未声明为动态的,因此不可动态重新绑定,> 但其名称暗示了其他方式。请注明 ^:dynamic default-javac-options或 >更改名称。

我认为这与clojure 1.3.0有关。

然后我启动 Aquamacs 并运行 slime-connect。REPL 开始正常,但是当调用 clojure-version 如果得到“1.2.1”。

; SLIME 20100404 用户>(clojure 版本)“1.2.1”

还有什么我需要做的吗?

0 投票
2 回答
336 浏览

emacs - 如何将 swank 服务器输出重定向到 emacs 缓冲区?

我想将我的 swank 服务器输出重定向到 emacs 缓冲区。我把它放在 ~/.swank.lisp 中,但这不起作用-

(setf swank:*globally-redirect-io* t)

我使用 Clojure 盒子。

谢谢。

0 投票
1 回答
250 浏览

emacs - Emacs 与 Slime 和 Swank 用于非 leiningen 项目

我发现这个网站解释了如何将 emacs 与 leiningen、swank 和 slime 一起使用。有没有办法在非 leiningen 项目中使用 slime + swank,即我如何连接到 slime/swank repl 来运行临时 Clojure 脚本,同时我按照此处演示的方式编写它?