[英]How to reload python modules on python-shell-send-buffer in Emacs?
[英]Send emacs buffer to arbitrary Python process
我喜歡python-send-buffer
命令,但是我經常使用嵌入在應用程序中的Python,或者通過自定義包管理系統啟動Python(以啟動具有某些依賴性的Python)。換句話說,我不能只運行“ python“並獲得一個有用的Python實例( python-send-buffer
依賴的東西)
我想要實現的是:
magic_emacs_python_server.py
模塊(根據需要附加到sys.path
) magic-emacs-python-send-buffer
這將評估遠程Python實例中的緩沖區。
看起來它應該非常簡單 - Python模塊在線程中偵聽套接字。 它在主線程中進行求值,並返回結果的repr()
(或者可能捕獲stdout / stderr,或者兩者都可以)。 emacs模塊只是將文本發送到套接字,等待響應中的字符串,並將其顯示在緩沖區中。
聽起來很簡單這樣的事情必須已經存在...... IPython有ipy_vimserver
,但這是錯誤的方法。 還有swank
,雖然它看起來非常特定於Lisp,但是有一個Javascript后端看起來非常像我想要的...但搜索幾乎沒有發現,除了一些模糊(可能是真的)聲稱SLIME不能正常工作使用非Lisp語言
簡而言之:
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.