Wie wird der Emacsclient beim Beenden in pwd konvertiert

510
raco

Kann jemand beim Beenden von emacsclient einen Hook zum Wechseln des Verzeichnisses in das aktuelle Verzeichnis von emacsclient bereitstellen?

Ich navigiere oft zu einigen Dateien über das Terminal, öffne Emacsclient, um einige Dateien zu bearbeiten, und beende dann Emacsclient, um einige Shell-Befehle für Dateien im selben Verzeichnis auszuführen. Ich finde das befriedigender als einige andere Optionen, die das Öffnen eines Terminals in emacs beinhalten (einschließlich Popshell, Mx!, Multi Term usw.).

Ich besuche jedoch auch Dateien in anderen Verzeichnissen, während ich emacsclient verwende. Dann möchte ich emacsclient beenden, um einige Shell-Befehle aus demselben Verzeichnis auszuführen, in dem ich gerade Dateien editierte. Beim Beenden von emacsclient kehre ich jedoch zum ursprünglichen Verzeichnis zurück, in dem ich emacsclient geöffnet habe, und muss dann mit cd in dasselbe Verzeichnis navigieren. Dies ist unpraktisch und führt zu Fehlern, wenn ich nicht merke, da die Dateistruktur in Verzeichnissen ähnlich / identisch ist.

Weitere Hintergrundinformationen: Ich starte emacs --daemon und öffne dann emacsclient -nw in einem Terminal, wenn ich einige schnelle Dateien in oder in der Nähe meines aktuellen Arbeitsverzeichnisses habe. Ich habe festgestellt, dass 'Cx Cc' den emacsclient beendet, aber auch den Emacs-Dämon beendet. Ich verwende also 'Cx 5 0' oder 'Cx #', um nur den Client zu beenden.

0

1 Antwort auf die Frage

0
sds

emacsclient ist ein gewöhnlicher Shellbefehl, daher kann die Vorstellung der Shell vom aktuellen Verzeichnis nicht geändert werden.

Sie können jedoch so anrufen emacsclient:

$ cd "$(emacsclient -e '(progn (find-file ....) (print default-directory))')" 

dh emacsden neuen Verzeichnisnamen drucken lassen, wenn der Client zurückkehrt.

Es wird nicht leicht sein, recht zu bekommen, und der Aufwand lohnt sich nicht.

Wenn Sie in Ihrem emacsclient mehr als nur eine einfache Bearbeitung vornehmen, sollten Sie emacs und dessen Shell verwenden.

Sie haben recht, ich dachte irgendwie, dass emacsclient auf dem emacs-Server läuft und auf eine elisp-Lösung hofft. Ich möchte vielleicht auf Ihren Vorschlag eingehen, aber ich weiß nicht wie. Es klingt, als ob Sie wissen, dass das Codebeispiel nicht funktioniert. raco vor 10 Jahren 0
Manchmal ist es einfacher zu lernen, ein vorhandenes Werkzeug zu mögen, als es zu lehren, sich so zu verhalten, wie Sie es möchten. sds vor 10 Jahren 0