質問

私は好き python-send-buffer コマンド、ただし、アプリケーションに埋め込まれた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バックエンド 私が望むものと非常に似ているように見えます...しかし、検索は、スライムが非リスプ言語でうまく機能しないという漠然とした(おそらく本当の)主張以外にほとんど何も見つけられません

要するに:

  • EMACSバッファーから既存のPythonプロセスにコードを送信するプロジェクトは存在しますか?
  • そうでない場合、私はそのようなことを書くことをどのように勧めますか(Elispにあまりよく知らない) - スワンク? IPythonのサーバーコード?ゼロからシンプルなTCPサーバー?
役に立ちましたか?

解決

COMINT このようなものにほとんどのインフラストラクチャを提供します。のような良い例がたくさんあります これ また これ

それはあなたがコマンドを実行することを可能にし、物事を提供します comint-send-string 簡単に実装する send-region タイプコマンド。

GitHubのDBR/Remoterepl 私が質問で説明したことの粗野な概念の証明です。

それはあらゆる種類のポリッシュがありませんが、それはほとんど機能します - あなたは replify.py ターゲットインタープリターのモジュール、次に評価します emacs-remote-repl.el 愚かなハードコードされたパスを修正した後 client.py

他のヒント

そうではありません shell-command あなたが探しているものをあなたに与えますか?ラッパースクリプトを書くか、調整することができます #!sys.path 適切に。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top