1) Emacs startet höchstwahrscheinlich im Konsolenmodus, da keine DISPLAY-Variable festgelegt ist. Setzen Sie diese Umgebungsvariable mit einem Wert, der auf einen X-Server verweist, der Clients akzeptieren kann, und Sie sollten bessere Ergebnisse finden. Sie können Emacs auch eine Anzeige-ID über die Befehlszeilenoption --display
oder übergeben -d
, die ich im folgenden Beispiel ausführen werde, da ich nicht wissen kann, wie Sie Env-Variablen in Windows-Batchdateien festlegen:
@echo off chdir c:\LocalApp\cygwin\bin start mintty.exe /usr/bin/emacs-X11.exe --display 127.0.0.1:0 %1
Falls erforderlich, was wahrscheinlich nicht der --display
Fall ist, ersetzen Sie den hier angegebenen Wert durch einen für Ihre X-Server-Konfiguration besser geeigneten Wert.
Es wird wahrscheinlich immer noch ein Konsolenfenster angezeigt, da Sie mit dem Windows-Startbefehl einen Mintty-Prozess erzeugen, den Sie dann zum Starten von Emacs auffordern. Stattdessen können Sie den Cygwin-Befehl run verwenden, der eine bestimmte Binärdatei ohne Konsolenfenster startet und den redundanten mintty-Prozess eliminiert:
@echo off chdir c:\LocalApp\cygwin\bin run /usr/bin/emacs-X11.exe --display 127.0.0.1:0 %1
2) Schließlich müssen Sie einen Weg finden, um den Dateipfad in einer für Emacs verständlichen Form zu übergeben. Leider bin ich mir ziemlich sicher, dass die Befehlsinterpolation in Windows-Batch-Sprache nicht möglich ist. Sie können also nicht das Äquivalent von zB Bash ausführen $(cygpath -au %1)
. Möglicherweise ist die beste Option, Cygwin Bash mit der Windows-Batchdatei auszuführen, wobei das Argument Dateiname an ein Skript übergeben wird, das es übersetzt und Emacs startet. Beispielsweise könnte Ihre Batchdatei sein
@echo off chdir C:\LocalApp\cygwin\bin run sh /path/to/launch-emacs.sh %1
In launch-emacs.sh haben Sie vielleicht etwas wie:
#!/bin/sh cd /cygdrive/c/LocalApp/cygwin/bin /usr/bin/emacs-X11 --display 127.0.0.1:0 `cygpath -au $1`
die den Pfad via übersetzt cygpath
, gibt ihn dann zusammen mit einer Anzeige-ID an Emacs weiter, wie oben beschrieben.
Meine einzige Windows-Box ist zu Hause. Ich hatte also keine Gelegenheit, diese genauen Skripts zu testen, aber ich mache ziemlich ähnliche Dinge mit Emacs auf diesem Computer. Vorausgesetzt, Ihr X-Server ist richtig konfiguriert, wird das Zeug in 1) mit Sicherheit funktionieren, und der Rest sollte OK sein. Modulo ein überflüssiges Konsolenfenster, um das Sie sich vielleicht nicht kümmern. Lassen Sie mich wissen, wie es läuft, und ich werde sehen, welche weitere Hilfe ich anbieten kann.