簡體   English   中英

將emacs緩沖區發送到任意Python進程

[英]Send emacs buffer to arbitrary Python process

我喜歡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服務器從頭開始?

comint為這樣的東西提供了大部分基礎設施。 有很多很好的例子,比如這個或者這個

它允許您運行命令,提供comint-send-string以輕松實現send-region類型命令。

Github上的dbr / remoterepl是我在問題中描述的粗略概念驗證。

它沒有任何拋光,但它主要工作 - 您在目標解釋器中導入replify.py模塊,然后在將愚蠢的硬編碼路徑修復為client.py后評估emacs-remote-repl.el

shell-command不能為您提供所需內容嗎? 您可以編寫包裝腳本或調整#! sys.path適當。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM