我喜欢 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后端 看起来很像我想要的...但是搜索几乎找不到,除了某些模糊(可能是正确的)声称粘液与非LISP语言无法正常工作

简而言之:

  • 是否存在将代码从EMACS缓冲区发送到现有Python流程的项目?
  • 如果没有,您将如何推荐我写这样的东西(不太熟悉ELISP) - 士气? ipython的服务器代码?简单的TCP服务器从头开始?
有帮助吗?

解决方案

comint 为这样的东西提供大多数基础架构。有很多好的例子,例如 这个 或者 这个

它允许您运行命令,提供东西 comint-send-string 轻松实施 send-region 类型命令。

dbr/remoterepl在github上 是我在问题中描述的原始概念概念。

它缺乏任何一种抛光 replify.py 目标解释器中的模块,然后评估 emacs-remote-repl.el 修复了愚蠢的硬编码路径后 client.py

其他提示

shell-command 给你想要的东西?您可以编写包装脚本或调整 #!sys.path 适当。

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