问题标签 [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 回答
115 浏览

common-lisp - 切换包时词法绑定丢失

我想要的只是为 swank 加载一个初始化文件,当它在没有 swank 的情况下启动时不会影响我的 lisp...

我首先在从 ccl-init 加载的文件中尝试了#+swank (defun...)(在 ccl 1.10 + windows 上尝试),很快意识到它是在加载 swank 之前获取的(显然)。

我的目标是每次开始 swank 时在 :cl-user 中定义一个简单的函数。我刚刚用一个时髦的 add-hook 来加载我的 init.lisp 文件,因为我想在 cl-user 中定义函数,所以我在 init.lisp 中尝试了这个:

现在,我不记得 let 中的 defun 是否被允许,但 lisp 并没有抱怨,而是告诉我 cur-pck 符号不存在,当我们切换包时,似乎是 cur-pck绑定超出范围。我认为 cur-pck 是一个词法绑定,它应该可以从词法区域内访问,独立于一个包,我错了吗?

为什么要切换套餐?我在想,在某个初始化点从 swank 加载这个文件将定义一些 swank 包中的东西,这就是为什么我想先尝试切换到 cl-user,定义函数符号,然后切换回让 swank 做这件事。

在这一点上,我想我需要有人告诉我我从错误的角度处理问题,我应该更好地选择一个更简单的解决方案。

此外,出于好奇,如果上述方法完全错误,有没有办法在函数或闭包内的另一个包中定义符号?

0 投票
3 回答
559 浏览

vim - 如何重新初始化 swank?

我怎样才能让 swank 忘记所有以前评估过的定义?

我希望它取消定义通过评估定义的所有宏、函数和变量(例如,b评估缓冲区)。并让它恢复到与我重新启动 PC 并重新启动 swank 服务器时相同的状态。

我试过了:

  • slimv -REPL ( ,-) 命令:

    这似乎只是为了清除屏幕(缓冲区)。

  • CL-USER> (swank:restart-server)(来自 REPL 缓冲区):

    服务器重新启动,但它仍然记得我的旧defun定义和其他定义。

  • CL-USER>(slime-restart-inferior-lisp)和 `(slimv-restart-inferior-lisp)

    两者都是未定义的。

0 投票
1 回答
71 浏览

lisp - swank 服务器 *swank-debugger-condition*

我是 Lisp 新手,在 Emacs 中使用 Slime 工作,我经常收到这个错误

我花了很长时间在谷歌上搜索,但找不到对该变量的引用。它是什么?它应该绑定什么?

0 投票
0 回答
52 浏览

recursion - Slimv:评估中止

我正在通过 vim 在 slimv 的帮助下调试以下 mit-scheme 程序。

当我运行命令:!mit-scheme --load "pascal.scm"时,屏幕上会打印一个帕斯卡三角形,所以我无法在我的程序中发现任何错误。但是,当我,d在 slimv 的 REPL 缓冲区中执行并尝试运行该程序时,我得到了:

那么,是什么<unknown reason>阻止了我的程序正常运行?是我的错,还是slimv的bug?

这是相关部分swank.log

0 投票
0 回答
673 浏览

common-lisp - 如何将 *standard-input* 和 *standard-output* 重定向到另一个 PTY、FIFO 或套接字?

我想知道是否可以重定向 ECL 的 Linux stdio,使其不与嵌入的应用程序共享流。

我的问题是主机应用程序出于自己的目的接管了标准输入、标准输出和标准错误。所以,我想有一个单独的控制台来处理 lisp 噪音,并在 SLIME/SWANK 崩溃回到顶层时进行恢复。目前 SWANK hiccups 将CL-USER> 提示放入应用程序调试日志中,C opperation (read) signalled an errorstdout 的失败被重定向,stdin 很可能被父进程关闭或使用。

我知道你可以setf *standand-output*等到一个新的流,但我还没有找到一种方法来附加一个终端,比如屏幕或 xterm 或套接字。我需要底层的 Linux/C 文件描述符,然后我可以制作一个 PTY。

如果有某种方法可以将标准流附加到我可以使用 telnet 连接到的套接字服务器上,那就更好了。

更新

根据评论中的建议,我尝试了以下代码:

它并没有完成这项工作。问题是,虽然一些 IO 被重定向 SWANK,但似乎仍然有办法获取真正的流。我想这需要一些研究才能弄清楚 SWANK 是如何做到的。哦,便利的高价!

更新 2

我的错。没有*standard-error*,只有*error-output*。你能告诉我我对 Lisp 很陌生吗?

现在,一切都被重定向了。不过,SLIME 现在不会和 SWANK 说话了,有点违背了目的……

更新 3

胜利!在连接 SLIME 之前,您需要在终端中运行类似以下的 shell 脚本来创建您的顶级 shell:

原因,我猜不出来。但幸运的是它仍然有效。

顺便说一句,不要阻止任何想要发布更好答案的人

我确信有人可以制作一个套接字服务器或屏幕分离的 PTY,无论是否有人在看它们,都可以让流保持快乐。那将是一个更经典的解决方案。

0 投票
1 回答
442 浏览

common-lisp - 如何将本地源代码中定义的 ASDF 系统加载到远程 lisp 中?我使用 SBCL、Slime 和 Swank

我的笔记本电脑上有一个简单的 ASDF 系统。我可以做“MX slime-load-system”,它会加载。我可以调用由其中一个包导出的函数。

当我在本地运行另一个 Emacs 实例并使用 slime-connect 连接到远程 Swank 并加载系统时,我得到:

我想要实现的是将系统加载到远程 lisp、在本地编辑代码以及在远程 lisp 中编译/加载它的能力。

如果我将源代码同步到远程系统上的 ~/common-lisp/ ,则 slime-load-system 可以工作。很好,但是感觉不对,这个额外的步骤。

如何在没有 rsyncing 的情况下使其工作?

0 投票
1 回答
183 浏览

lisp - 如何使用 telnet 在低级别与 Swank 服务器交互?

我正在尝试从命令行使用 Swank 服务器(没有特定的生产目的,只是想通过一些 hacky 想法来理解事物以备后用),我无法弄清楚我可以从telnet会话中输入什么来获取任何可用的答案;例如,我该如何评估(+ 1 1)

上一个问题告诉我们:

如果您熟悉 swank 协议,确实可以与 swank 服务器通信,该协议似乎没有充分记录(参见例如:https ://github.com/astine/swank-client/blob/master/swank-description .markdown)。但是,这会通过网络公开 TCP 套接字,这可能是不安全的。有一次我也尝试过,但我对 IPC 的速度并不满意。

该链接实际上给出了一些提示,但不幸的是没有示例。我无法得到任何结果。

这是我尝试过的;在单独启动服务器后

我试过这样的事情:

并收到以下错误消息:

在那种情况下,我应该输入什么字符串?

0 投票
0 回答
241 浏览

lisp - 连接到远程 swank:找不到模块 swank-io-package::swank-trace-dialog

所以,我正在使用

在本地生成myapp,并将生成的二进制文件上传到服务器。

如此处所指出的,该函数myapp:main执行以下操作(以及服务器的其他几个初始化操作):

我还在本地机器上进行端口转发:

我可以在我的本地机器上运行slime-connect它,myapp我从同一台机器连接到它。


但是,当我尝试slime-connect在本地计算机上远程运行时,我收到错误消息localhost8080myapp

  1. 如果我选择[*ABORT],emacs 会给我error in process filter: No catch for tag: slime-result-2-212, (error "Synchronous Lisp Evaluation aborted")(在 minibuffer 中),没有 SLIME REPL。

  2. 选择[ABORT]也给出了几乎相同的error in process filter: Synchronous Lisp Evaluation aborted

此外,如果我也尝试评估框架中的某些内容,我会得到error in process filter: Invalid message protocol.

PS:我正在使用 AWS,以防有关安全组的详细信息是相关的。

0 投票
0 回答
96 浏览

emacs - 如何在没有转储的情况下使用 clisp 运行粘液?

概括

在 cygwin Emacs 上使用 clisp 作为劣质 lisp 时,swank 总是转储。

细节

  • 2019-08-30 的 cygwin
    GNU Emacs 26.3 (build 1, x86_64-pc-cygwin) 上的 emacs
  • 粘液
    20200219.2239
    从 melpa 安装粘液后,我没有使用自定义。
  • 夹子
  • 华丽的消息
  • 剪辑转储
0 投票
1 回答
77 浏览

emacs - 在 Emacs 中使用 SLIME 时:如何重置 swank-loader.lisp 的路径?

删除发行版安装的 SLIME 后,我的 MELPA(稳定)安装的 SLIME 版本仍然坚持访问旧的系统范围 swank-loader.lisp。

如何清除系统并将路径重置为 swank-loader.lisp