2013-04-07 9 views
5

私は、バッファ全体をマークするのと同等の機能をセットアップし、コマンドの入力を求めるプロンプトにはC-u M-|を実行し、バッファをコマンドにパイプし、バッファを出力に置き換えたいと思います。次にshift-f5などに設定してください。バッファ上のEmacsシェルコマンド

私だけ限り、このように持っている:

(defun shell-command-on-buffer() 
    (interactive) 
    (mark-whole-buffer)) 

私は残りの部分をどのように行うことができますか?

答えて

5

これが私の作品:

(defun shell-command-on-buffer (command) 
    (interactive "sShell command on buffer: ") 
    (shell-command-on-region (point-min) (point-max) command t)) 
+0

ありがとうございました。これは、私のために新しいバッファを開きます - 理想的には、現在のバッファを置き換えることをお勧めします。C-u M- |そうです。 – teppic

+0

ああ、申し訳ありませんが、私の最初の提案は 'shell-command-on-region'と同じC-u動作をしています。あなたの要求によく答えるように編集しました – brontitall

+0

私は恐れています - それはコマンドを求めてきますが、引数の数が間違っているというエラーを出します。 – teppic

4

この1つは、「シェルコマンド」ミニバッファ履歴の代わりに、一般的なミニバッファの履歴を使用する利点があります。

(defun shell-command-on-buffer() 
    (interactive) 
    (shell-command-on-region (point-min) (point-max) (read-shell-command "Shell command on buffer: ") t)) 
+1

read-shell-commandは、バージョン23.1でGNU Emacsを導入したことに注意してください。古いバージョンとの互換性が必要な場合は、これを使用したくない場合や、read-shell-commandが存在するかどうかをチェックするコードを追加する必要があります。 –

関連する問題