ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

将emacs缓冲区发送到任意Python进程

2019-06-30 21:45:19  阅读:194  来源: 互联网

标签:python emacs read-eval-print-loop swank


我喜欢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特定,有a Javascript backend看起来非常像我想要的…但搜索几乎没有发现,除了一些模糊(可能是真的)声称SLIME不能很好地与非-Lisp语言

简而言之:

>是否存在将代码从emacs缓冲区发送到现有Python进程的项目?
>如果没有,你会怎么建议我写这样的东西(不熟悉elisp) – SWANK? IPython的服务器代码?简单的TCP服务器从头开始?

解决方法:

comint为这样的东西提供了大部分基础设施.有很多很好的例子,比如thisthis

它允许您运行命令,提供comint-send-string以轻松实现send-region类型命令.

dbr/remoterepl on Github是我在问题中描述的粗略的概念验证.

它没有任何抛光,但它主要工作 – 您在目标解释器中导入replify.py模块,然后在将愚蠢的硬编码路径修复为client.py后评估emacs-remote-repl.el

标签:python,emacs,read-eval-print-loop,swank
来源: https://codeday.me/bug/20190630/1340337.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有