My ~/.emacs
enthält die folgenden Einstellungen zum Öffnen bestimmter Dateien mit bestimmten Anwendungen (Ubuntu 12.10; Emacs 24):
Wenn ich in dired-mode
zu einem .pdf navigiere und !
drücke, öffnet sich das .pdf in Okular, aber der dired-buffer ist in zwei Teile aufgeteilt, der zweite ist jetzt ein nutzloser *Async Shell Command*
buffer Inhalt wie
Wie kann ich verhindern, dass dieser Puffer geöffnet wird? (außer vielleicht, wenn es einen Fehler gab und diese Information nützlich ist).
Ich habe verwandte Fragen hier und *Async Shell Command*
im Allgemeinen (wenn möglich, möchte ich das Verhalten im Allgemeinen für asynchrone Prozesse ändern, nicht nur für bestimmte Dateitypen)
Leider gibt es keine gute Möglichkeit, diesen Puffer zu umgehen, da er direkt von der Shell-Befehl-Funktion aufgerufen wird (async-Shell-Befehl ist nur ein Wrapper).
Also, ein viel besserer Weg ist, 'async-shell-command' durch ' Start-Prozess ". Du solltest den Prozess mit ' set-process-sentinel starten, um es zu erkennen der Moment, in dem der Prozess "Ausstiegssignal" ausgibt. Dann kill Prozess.
Ich bin mir nicht ganz sicher, ob ich es für asynchrone Prozesse im Allgemeinen tun soll, aber für alles, was async-shell-command
durchläuft, sollte das funktionieren:
Die Frage wurde 2012 gestellt, und zum Zeitpunkt meines Schreibens ist die letzte Antwort 2015. Jetzt, im Jahr 2017, kann ich sagen, dass die Antwort einfach ist:
(add-to-list 'display-buffer-alist
(cons "\*Async Shell Command\*.*" (cons #'display-buffer-no-window nil)))
Eine etwas kompliziertere Beschwörung sollte dir das bringen, was du willst. Verwenden Sie einfach einen Shell-Befehl wie: (okular ? >& /dev/null &)
.
Ich habe dies nicht mit okular getestet, aber ich kann M -! ((echo foo; sleep 10; echo bar) >& /dev/null &)
und Emacs kehrt sofort zurück, ohne einen neuen Puffer zu erstellen.
Ich hucke die Antwort von user1404316 aus, aber hier ist ein weiterer allgemeiner Weg, um das gewünschte Ergebnis zu erreichen.
%Vor%Tags und Links emacs asynchronous dired