问题标签 [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.
clojure - 嵌入式 swank-clojure repl 可以访问它嵌入的程序吗?
我正在尝试将 swank-clojure repl 嵌入到我的应用程序中,以便在应用程序运行时进行连接以解决问题。但是,我在启动 repl 后无法弄清楚如何访问封闭环境。
嵌入 swank-clojure REPL 很简单:
运行程序..然后在emacs中结束:
这工作正常,我已连接。现在,我希望这会起作用:
所以这不能作为将当前环境传递给嵌入式 REPL 的一种方式。
嵌入式 REPL 有没有办法与我正在运行的程序进行交互?
如果不是,有什么理由嵌入 REPL?
如果有什么不同,我正在尝试将其作为 JAR 运行。
该线程似乎相关,但我无法从中获得任何信息:
emacs - 使用 elisp 运行“lein swank”(调用 clojure 服务器)
正如这里所问和回答的那样。我可以使用 'lein swank' 在 Aquamacs 上运行 clojure。
在运行 slime/clojure 之前,我需要自动运行“lein swank”。
- 问:有没有办法自动做到这一点?我的意思是当调用 slime/clojure (Mx slime-connect) 时如何自动运行命令“lein swank”。
- 问:如果我必须想出 elisp 代码来运行“lein swank”,我该怎么做?
添加
根据 Jürgen Hötzel 的回答,我将 elisp 修改如下。
但是,我得到了这个错误。
我发现我应该将 pwd 更改为 ~/bin/leiningen 以运行“lein swank”。只需将 lein 二进制文件放入 PATH 字符串中并不会使其运行。
clojure - 'lein swank' 等价于其他带有 emacs/slime 的 Lisp/Scheme 实现
我一直在使用 emacs/slime 来编码 lisp,但是使用 Clojure 我发现了 'lein swank'。我必须说它非常有用,因为我可以连接到运行 clojure 的服务器。
其他 Lisp 实现怎么样?哪些 Lisp 实现在 Clojure 中提供了相当于“lein swank”的功能?我的意思是,是否有任何其他提供服务器连接的 Lisp 实现,以便我使用“Mx slime-connect”,而不仅仅是“Mx slime”?
emacs - “swank-clojure”到底做了什么,我们有“swank-SOMETHING_ELSE”吗?
我肤浅的理解是“swank-clojure”使“Mx slime-connect”成为可能。我的意思是,它提供了与 clojure 服务器的连接,例如“lein swank”。我的理解正确吗?如果不是,swank的目的是什么?
那么,对于其他类似 lisp 的实现,是否有任何“swank-SOMETHING_ELSE”?例如,swank-clisp?
我是否需要 'swank-clojure' 才能将 SLIME/Clojure 与 'Mx slime' 一起使用?
添加
我发现这个链接非常有用。
sbcl - 是否有一种简单的方法可以通过 MCLIDE/swank 将多个 sbcl 线程的跟踪写入标准输出?
使用 SBCL,我正在编写一个小型服务器,我想跟踪服务器线程,但是当我使用 mclide/swank 时,我看不到服务器线程的任何输出。
? (需要'sb-posix)无?(sb-thread:make-thread (lambda () (format t "hi from the thread")))
?
当我直接从 sbcl 尝试相同的事情时,我看到了我的期望:
- (需要'sb-posix);从加载系统定义;/opt/local/var/macports/software/sbcl/1.0.39_0+html+threads/opt/local/lib/sbcl/sb-grovel/sb-grovel.asd;进入 # ; 将 # 注册为 SB-GROVEL ("SB-POSIX" "SB-GROVEL" "ASDF")
- (sb-thread:make-thread (lambda () (format t "hi from the thread"))) hi from the thread# *
swank 是否有从非前台线程捕获标准输出的问题?如果我使用粘液,这种东西会起作用吗?
emacs - clojure swank 服务器打开公共端口?
(这个问题被否决了,我觉得很奇怪。我怎么得罪了?)
我是否认为运行 swank 服务器通常会向世界打开端口 4005,而不是绑定到仅限本地主机的连接?
因此,任何在咖啡馆进行黑客攻击的人不仅允许路人在他们的计算机上执行任意代码,而且还为他们提供了一个很好的界面来执行此操作。
看来,当我使用 'mvn clojure:swank' 或 'lein swank' 或 (swank.swank/start-server "/tmp/yo") 运行 swank 服务器时
然后我得到类似的东西(感谢迈克!):
事实上,我可以从同一网络上另一台机器上运行的 emacs 进行连接。
如果我手动启动服务器,它会产生以下输出
然而:
产生:
这似乎更像我所期待的。
这样做有什么好的理由吗?
关于如何以更传统的方式启动它的任何想法可以被说服只接受来自本地进程的连接?
emacs - 如何使用 Swank 和 SLIME 在 Emacs 中评估缓冲区和/或指令?
我已经在 Emacs 中成功安装了 clojure-mode、slime、slime-repl。我用“lein swank”启动了一个 swank 服务器,并用“slime-connect”将粘液挂在它上面。我可以使用 SLIME REPL 来评估 REPL 中的 Clojure 表达式。
如何评估单个 s-exp 或整个文件(也就是我想用 Emacs 运行 Clojure 文件并在专用框架或 repl 中查看输出)在 SLIME REPL 中显示答案?
例如,我在项目目录中的 .clj 文件中定义了一个简单的绑定:
现在我想让 SLIME 在 repl 中评估这个表达式,所以如果在 repl 中我写:
我想获得 1. 我该怎么做?
clojure - 如何修复 clojure & slime 中的回溯
我是一个试图设置 emacs 和 slime 的 clojure noob。似乎没有一种真正的方法可以做到这一点,所以我关注了一些博客文章以及 swank-clojure 和 leiningen README。
大多数情况下它都有效。我的问题是,如果我尝试从回溯中选择 restart 0 [QUIT],我会得到
'进程过滤器错误:参数数量错误:nil,0'
(我还在“Mx slime-connect”上看到关于 slime 和 swank 版本不匹配的警告,但谷歌搜索表明这是意料之中的)。
这是 Debian Lenny。我通过 'git clone git://git.boinkor.net/slime.git' 得到了粘液。Clojure 和 clojure-contrib 是 1.2.0,swank-clojure 是 1.2.1。
有人见过这个吗?或者,是否有所有部件兼容版本的最新列表?非常感谢。
编辑:
看起来很可能是这个问题。我在该线程中关注了与 OP 相同的博客文章。
编辑:
是的。使用ELPA获取 slime 和 slime-repl 包修复了它。
emacs - 如何让“cake repl”在 OSX 上工作?(我在线程“main”java.lang.NoClassDefFoundError:clojure/main 中得到异常)
我试图让 clojure/emacs/swank/cake 一起工作。根据汇编我需要'cake repl'来启动repl,但我不断收到NoClassDefFoundError。知道如何解决吗?
这是我在命令行中得到的:
更多信息:
python - 将 emacs 缓冲区发送到任意 Python 进程
我喜欢这个python-send-buffer
命令,但是我经常使用嵌入在应用程序中的 Python,或者通过自定义包管理系统启动 Python(以启动具有某些依赖项的 Python)。换句话说,我不能只运行“python”并获得一个有用的 Python 实例(python-send-buffer
依赖的东西)
我想要实现的是:
- 在任何 Python 解释器(或允许您评估 Python 代码的应用程序)中,导入一个
magic_emacs_python_server.py
模块(根据需要附加sys.path
) - 在 emacs 中,运行
magic-emacs-python-send-buffer
这将评估远程 Python 实例中的缓冲区。
看起来它应该很简单——Python 模块在一个线程中监听一个套接字。它在主线程中进行评估,并返回repr()
结果(或者可能捕获 stdout/stderr,或者两者兼而有之)。emacs 模块只会将文本发送到套接字,等待字符串作为响应,并将其显示在缓冲区中。
听起来很简单,这样的东西一定已经存在了...... IPython 有ipy_vimserver
,但这是错误的方法。还有swank
,虽然它看起来非常特定于 Lisp,但有一个 Javascript 后端看起来很像我想要的......但搜索几乎没有发现,除了一些模糊(可能是真的)声称 SLIME 不能很好地工作非 Lisp 语言
简而言之:
- 是否存在将代码从 emacs 缓冲区发送到现有 Python 进程的项目?
- 如果没有,你会如何推荐我写这样的东西(不是很熟悉 elisp) - SWANK?IPython的服务器代码?从头开始的简单 TCP 服务器?