2013-04-07 19 views
5

Ich möchte eine Funktion einrichten, die das Äquivalent der Markierung des gesamten Puffers ausführt und C-u M-| ausführt, um nach einem Befehl zu fragen, den Puffer an den Befehl überleiten und den Puffer durch die Ausgabe ersetzen. Dann setze es vielleicht auf shift-f5 oder so.Emacs Shell-Befehl auf Puffer

Ich habe nur soweit dies:

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

Wie kann ich den Rest?

Antwort

5

Dies funktioniert für mich:

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

Danke, ich habe es versucht. Dies öffnet einen neuen Puffer für mich - idealerweise möchte ich, dass der aktuelle Puffer ersetzt wird, als C-u M- | tut. – teppic

+0

Ah, tut mir leid, mein erster Vorschlag hat das gleiche C-u-Verhalten wie 'shell-command-on-region'. Bearbeitet, um Ihre Anfrage besser zu beantworten – brontitall

+0

Kein Glück, ich habe Angst - es fordert mich für den Befehl, gibt aber einen Fehler mit der falschen Anzahl von Argumenten. – teppic

4

Das man den Vorteil der Verwendung der „Shell-Befehl“ Minipuffer Geschichte statt der allgemeinen Minipuffer Geschichte hat.

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

Bitte beachten Sie, dass der read-shell-Befehl in Version 23.1 in GNU Emacs eingeführt wurde. Wenn Sie mit älteren Versionen kompatibel sein müssen, sollten Sie dies nicht verwenden, oder Sie müssen Code hinzufügen, der das Vorhandensein von read-shell-command überprüft, bevor Sie versuchen, ihn aufzurufen. –

Verwandte Themen