Ich versuche, den Emacs-Server-Daemon einzurichten und Emacsclient unter MS Windows zu verwenden, damit Dateien schnell und ohne Verzögerung und Overhead geöffnet werden können, die mit dem Starten zusätzlicher Emacs-Instanzen für jede geöffnete Datei verbunden sind. Ich folge den spezifischen Anweisungen in emacswiki für MS Windows, die Folgendes beinhalten:
- Emacs als Daemon ausführen,
runemacs.exe --daemon
- Anschließend wird
emacsclientw.exe
mit den entsprechenden Optionen aufgerufen.
Das Starten des Daemons ist erfolgreich (ich sehe emacs.exe in der Prozessliste), aber das Aufrufen von emacsclient führt zu Fehlern. Das Wiki sagt, dass Sie eine Verknüpfung zu erstellen emacsclientw.exe
und das Ziel in ändern sollen
X:\path\to\emacs\bin\emacsclientw.exe -na "X:\path\to\emacs\bin\emacsclientw.exe" -c -n
Ist das richtig? Es sieht so aus, als würde der Client zweimal aufgerufen. Wenn Sie das Ziel wie gezeigt verwenden, wird das Programm nicht ausgeführt und es wird der Fehler "Dateiname oder Argument erforderlich" ausgegeben. Verwenden Sie nur den ersten Teil des oben gezeigten Ziels
X:\path\to\emacs\bin\emacsclientw.exe -na
erzeugt einen generischen Fehler. Verwenden Sie nur den zweiten Teil
X:\path\to\emacs\bin\emacsclientw.exe -c -n
erzeugt den Fehler "Kein Socket oder alternativer Editor." (Die offiziellen Emacsclient-Optionen werden hier beschrieben . )
Irgendwelche Vorschläge? Emacs läuft einwandfrei im Standardmodus, dh nicht im Daemon-Modus. Version 25.1. Ich würde es vorziehen, den Daemon auszuführen, anstatt den Server in meiner Initialisierungsdatei zu starten.
quelle
Error: Cannot connect even after starting the Emacs daemon
Bestätigt, dass diese Verknüpfung den Dämonprozess startet, die Dateien jedoch weiterhin in ihrer eigenen Emacs-Instanz geöffnet sind. Getestet mit und ohne Administratorrechte. Emacs 25.1, Windows 7.Error: Cannot connect even after starting the Emacs daemon
.Der Befehl, den ich benutze, ist:
(Wenn sich der Ordner Emacs bin nicht in Ihrem befindet
PATH
, verwenden Sie die vollständigen Pfade füremacsclientw.exe
undrunemacs.exe
.)oder mit den kurzen Optionsnamen und dem leeren String-Trick,
Beachten Sie, dass der leere String-Trick für
-a
den Daemon startet, wenn er nicht ausgeführt wird. Dies sollte jedoch erst mit Emacs 26 funktionieren (ich bin immer noch auf 25). Vor 26 müssen Sie den alternativen Editor explizit angeben. Ich habe verwendetrunemacs.exe
, aber mein Emacs ist so konfiguriert, dass der Server gestartet und ausgeführt wird.Da Windows nicht über die lokalen Unix-Domänen-Sockets verfügt, die
emacsclient
normalerweise für die Verbindung zum Server verwendet wurden, muss auf die Verwendung eines Netzwerk-TCP- Sockets zurückgegriffen werden. Aus offensichtlichen Sicherheitsgründen möchten Sie nicht, dass nur jemand in Ihrem Netzwerk über den Emacs-Server auf Ihr gesamtes Dateisystem zugreift. Daheremacsclient
muss der richtige (kurzlebige) Port und das Sicherheitstoken in der Serverdatei bekannt sein, bevor der Server die Verbindung zulässt.Wenn der Server bereits läuft, sollten Sie den nicht benötigen
-a
(aber es tut nicht weh). Sie können dieALTERNATE_EDITOR
Umgebungsvariable festlegen , anstatt sie zu verwenden-a
.Wenn Sie die
EMACS_SERVER_FILE
Umgebungsvariable festlegen, müssen Sie sie nicht erneut mit angeben-f
.quelle