Ich benutze Shell-Befehl eine Menge (standardmäßig gebunden an M-!), aber oft tue ich etwas mit dem Puffer, den ich gerade bearbeite. Anstatt den Namen des Puffers einzugeben (und in shell-command ist leider keine Dateinamensvervollständigung verfügbar!), wäre es schön, eine Tastenkombination zu haben, z.B. f3, die den Namen für mich einfügt, wenn ich die Taste drücke.
Das Problem ist, dass ich die Taste nicht global binden möchte (ich verwende f3 für andere Dinge in einem anderen Kontext), nur im Minipuffer, wenn der Shell-Befehl aufruft. Es ist einfach, eine Lisp-Funktion zu schreiben, um den aktuellen Puffernamen einzufügen, aber welche Modus-Tastenbelegung sollte ich ändern, um eine Taste an diese Funktion zu binden?
Alternativ gibt es jede Lisp-Code/Paket, die Dateinamen-Vervollständigung in Shell-Befehl, ähnlich wie Bash es tut bieten? Ich weiß, dass die normale M-x-Shell die Vervollständigung bietet, aber die Bequemlichkeit der Eingabe eines Befehls im Minibuffer ist schwer aufzugeben ;)
Bearbeiten:
Hier ist, was ich wollte, entnommen aus huaiyuan Antwort mit einigen Korrekturen, inspiriert von/gestohlen von http://osdir.com/ml/emacs.sources/2002-04/msg00022.html
(define-key minibuffer-local-map
[f3] (lambda () (interactive)
(insert (buffer-name (current-buffer-not-mini)))))
(defun current-buffer-not-mini ()
"Return current-buffer if current buffer is not the *mini-buffer*
else return buffer before minibuf is activated."
(if (not (window-minibuffer-p)) (current-buffer)
(if (eq (get-lru-window) (next-window))
(window-buffer (previous-window)) (window-buffer (next-window)))))
0 Stimmen
Siehe auch: Gibt es eine Benutzerschnittstelle in Emacs, mit der man den Dateinamen des Puffers bequem "greifen" kann?