私はemacsの初心者です。RedHat Linux で emacs-24.1 を使用しており、elisp 式を評価しようとしています。私が emacs に実行させたいのは、emacs 自体を起動せずに elisp 式を評価することです。いろいろ試してる
emacs --eval '(+ 2 3)'
emacs が式を評価しているかどうかはわかりませんが、コンソールに結果が表示されず、emacs ウィンドウが表示されます。次に試したのはこれ
emacsclient --eval '(+ 2 3)'
Emacs クライアントはサーバーを予期しています。サーバーが見つからなかったため、エラーがスローされました (ソケットが見つからない、サーバーを起動できないなど)。そこで、サーバーを起動し(サーバー名はSERVER)、emacsclientを再度実行しました
emacsclient --server-file=SERVER -e '(+ 2 3)'
今回は、emacs が式を評価し、結果をコンソールに出力しました。これは、emacs が既存のサーバーを使用して式を評価しているためです。サーバーが実行されていないときに問題が発生します。
emacsclient --server-file=ANOTHER_SERVER -e '(+ 2 3)' -a emacs
今回は、コンソールでエラーが発生していません。-a (私の.emacsには(server-start)コマンドがあり、サーバー名はANOTHER_SERVERに設定されています)ため、Emacsは新しいウィンドウを起動しています。しかし、emacs はファイルを編集しようとしています (+ 2 3)。モードラインに表示されます。よくわかりません。emacsclient --help でこれが表示されました
-e, --eval Evaluate the FILE arguments as ELisp expressions
emacsのマニュアルにはこう書かれています。
'-e'
'--eval'
Tell Emacs to evaluate some Emacs Lisp code, instead of visiting some files.
When this option is given, the arguments to emacsclient are interpreted as a
list of expressions to evaluate, not as a list of files to visit.
これを進める方法がわかりません。前述したように、私の目標は、emacs を起動せずに elisp 式を評価することです。出来ますか?