それはあなたが物事をどのように設定したいかに依存します。間違いなく、プロセスに関するマニュアルの部分は読む価値があります。'comintパッケージのコードを読むことから始めるのが良いでしょう。
公開したい機能のかなり限定されたセットをリストしましたが、これは直接接続によって解決できます。'net-utils(Mx find-library net-utils RET)で提供されているものを調べることで、役立つユーティリティ関数を見つけることができます。
接続しようとしているアプリケーションにインタプリタ言語がある場合は、アプリ側でカスタムパーサーを作成するのではなく、それに接続します。
アプリからEmacsを起動する
あなたはアプリからEmacsを起動しているので(他の方法(この仕事を簡単にしたかもしれません)とは対照的に)、これはおそらく私がすることです:
- 小さなperlスクリプトを記述して、ソケットを開き、読み取り/書き込みを行います
- インタプリタで'(read(eval(print)))ループを設定し(またはカスタムループを書き込み)、ソケット/ポートに接続します
- ソケットを指定する関数呼び出し(--evalまたは--execute)でEmacsを起動します
- perlスクリプトをサブプロセスおよびポートとして開始します( perform-lispまたはperform-tclがどのように実行するかを参照してください)
その時点で、Emacsからのすべてがperlサブプロセス('comint-send-string)に送信され、REPLに渡され、そこで目的の効果が得られる可能性があります。同様に、文字列を送信するだけでコマンドをemacsに送り返し、comint-output-filter-functionsでスタックした関数でコマンドを解析することができます。
次に、2つの小さなライブラリを作成します。1つはAPPインタプリタ言語で、もう1つはEmacsで、意味のある機能を実行します。emacsライブラリは、ファイルの内容に応じて、メジャー(またはマイナー)モードとしてパッケージ化する必要があります。それらがアプリでのみ使用される場合、メジャーモード、(たとえば)C ++ファイルの場合、おそらくc ++モードを活用したいのであれば、マイナーモードの方が適しています。
私は、elispではなくperlで小さなperlスクリプトを記述します。単純に、comintと対話する方法を知っています。小さなperlスクリプトをelispのチャンクに置き換えることができ、それでもcomintを使用する利点がある場合、それは追加のボーナスになります。
Tcl / Tkのセットアップはほぼ同じですが、接続関連のものだけがTkのsendコマンドによって処理されます。それは本当にうまくいきます。
Emacsからアプリを起動する
代わりに、Emacsからアプリを起動できる場合は、上記が引き続き適用されます。小さなperlスクリプトを削除して、'comintインターフェイスを介して対話できるのはあなただけです。ソケットは必要ありません。
- 'replループが必要です(アプリがstdin/stdoutをインタープリターに関連付けたままにできない場合
- ライブラリは同じままです
これははるかに簡単ですが、ユーザーフローによってその方向に進むことができる場合にのみ機能します。(私はあなたがこれをあなたの使用以上のもののために書いているという予感があります。)
そうは言っても、この方法で開発/テストする方が簡単かもしれません(Emacsから起動)。後で拡張機能としてソケット通信を追加できます。どちらがよりやる気を起こさせるか...