4

私はこのpython-send-bufferコマンドが好きですが、アプリケーションに組み込まれた 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 サーバー?
4

2 に答える 2

2

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

コマンドを実行できるようにし、タイプコマンドcomint-send-stringを簡単に実装するためのものを提供します。send-region

Githubのdbr/remotereplは、私が質問で説明したことの大まかな概念実証です。

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

于 2012-04-03T15:52:26.530 に答える
1

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

于 2011-01-27T16:52:08.460 に答える