このようなシェルコマンドを呼び出すときに、*Shell Command Output*
バッファをポップアップしないようにemacsに指示するにはどうすればよいですか?* shellコマンドの出力*バッファをバックグラウンドでどのように保つことができますか?
(shell-command MY_COMMAND)
現在、emacsは現在のウィンドウを2つに分割して、(ほとんど関係ない)出力バッファを表示します。私には、私がそれが好きなら後で見ることができれば十分です。
このようなシェルコマンドを呼び出すときに、*Shell Command Output*
バッファをポップアップしないようにemacsに指示するにはどうすればよいですか?* shellコマンドの出力*バッファをバックグラウンドでどのように保つことができますか?
(shell-command MY_COMMAND)
現在、emacsは現在のウィンドウを2つに分割して、(ほとんど関係ない)出力バッファを表示します。私には、私がそれが好きなら後で見ることができれば十分です。
たぶんshell-command
を使用すると、問題の根本的でした。
(call-process-shell-command
"cat ~/.emacs.d/init.el"
nil "*Shell Command Output*" t
)
shell-command
はオプションの引数OUTPUT-BUFFER
を取ります。出力先のバッファを指定できます。 t
(実際にはバッファ名ではなくnil
ではない)の場合、現在のバッファに出力されます。だから我々はwith-temp-buffer
にこれをラップし、それを気にする必要はありません:
(with-temp-buffer
(shell-command "cat ~/.emacs.d/init.el" t))
このユーティリティ関数は役立つかもしれない:私はもっとエレガントな方法があるかもしれませんが、私は、作品call-process
で解決策を見つけたと思います。後者はより多くの制御を提供しています - - ここでは `のドキュメンテーション文字列からの抜粋であることは、シェルコマンドの実際の値に
(defun shell-command-as-string (cmd)
(with-temp-buffer
(shell-command-on-region (point-min) (point-max)
cmd t)
(buffer-string)))
'シェルcommand'は '開始process'を使用して空想の関数であるを返しますshell-command': 'Elispでは、より多くの制御を提供し、シェルの使用を強制しないので、 'call-process'または 'start-process'を直接コールする方がよくなるでしょう。引数).' startプロセスを使うことで、出力バッファを 'nil'に設定することもできます。 – lawlist