4

下位シェルからプログラムで emacs lisp 関数を呼び出すにはどうすればよいですか?

たとえば、私は、emacs が認識して自動拡張を試みるいくつかの文字を使用するシェルにいるので、このコマンドを実行(setq comint-input-autoexpand nil)して、現在のシェルに適用したいと考えています。

シェルにコマンドのテキストを入力し、その上で何かを実行することeval-regionでこれを行うことができますが、シェルがこのコマンド自体を呼び出せるようにしたいと考えています。


回答してくれた人々に感謝しますが、私の質問が不明確なようです。elisp式を入力して選択し、「eval-region」を呼び出すことで目的を達成できますが、これには手動入力が必要です。私が欲しいのは、これを自動化して、シェルが emacs にコマンドを送信して独自の設定を変更できるようにする方法です。

「emacsclient」の提案は正しい方向にあるように見えますが、残念ながら Windows はそのオプションを完全にサポートしていないのではないかと思います。外部の「シェル」コマンド。

私が欲しいのは、emacs に「この elisp 式はあなたのためです」というシグナルを送るある種のエスケープシーケンスです。emacsへのソケットを開き、この方法でコマンドを送信する方法があると思いますが、コマンドを適用するバッファを選択するという問題がまだあります。繰り返しますが、これはおそらく Windows ではより困難/不可能なので、ここではキー シーケンスにバインドされたコマンドに依存します。

4

2 に答える 2

2

emacsclient を使用してそれを行うことができます。(server-start)を使用するか.emacs、バックグラウンド プロセスとして--daemon.

次のように、シェルで elisp コードを評価できます。

emacsclient --eval '(setq comint-input-autoexpand nil)'
于 2013-01-23T16:22:43.870 に答える
2

M-x eval-expressionデフォルトで M-: (Alt+コロン、つまり Alt+Shift+セミコロン) にバインドされている を探しているようです。式は、呼び出されたときのコンテキストで評価さeval-expressionれるため、式がバッファーローカル変数を設定すると、現在のバッファーに設定されます。

于 2013-01-23T00:24:26.433 に答える