Normalerweise starte ich Emacs mit der GUI und starte sofort einen Server mit (server-start)
. Jetzt kann ich Dokumente einfach über das Terminal emacsclient -n <file>
oder über den Dateibrowser in meine bestehende Emacs-Sitzung öffnen .
Von Zeit zu Zeit möchte ich jedoch Emacs in meinem Terminal mit ausführen emacsclient -t
. Dies geschieht am häufigsten beim Schreiben von Git-Commit-Protokollen oder beim Ausführen anderer sehr kleiner Aufgaben. In diesen Fällen bedeutet die Tatsache, dass meine Init-Datei in eine GUI-Instanz von Emacs geladen wurde, dass ich keine meiner Anpassungen erhalte, die für TTY-Emacs spezifisch sind.
Ich weiß, dass ich rennen kann
emacs -nw -q -l "some-custom-init-file.el"
Dadurch werden jedoch jedes Mal alle Pakete neu geladen. Kann ich das Beste aus beiden Welten haben? Gibt es eine Möglichkeit, einen "TTY-Daemon" einzurichten, damit ich separate Anpassungen für die Ausführung im Terminal verwenden kann, anstatt die Datei in einem vorhandenen Emacs-Fenster zu besuchen?
(setq linum-format "%d ")
in der TTY-Anpassungsdatei behoben werden. Außerdem sieht mein Farbschema im TTY-Modus immer seltsam aus, sodass ich auf jeden Fall ein anderes Thema für das TTY auswählen werde. Eigentlich habe ich im Moment nicht so viele Unterschiede, aber jetzt, wo ich weiß, dass ich verschiedene Server haben kann, kann die Liste wachsen.M-x report-emacs-bug
und fordere neue Funktionen an, z. B. die Möglichkeit, unterschiedliche Gesichtsthemen in TTY- und GUI-Rahmen zu verwenden (tatsächlich kann ein Thema für diese verschiedenen Rahmentypen völlig unterschiedliche Farben festlegen, sodass Sie auch Ihr Thema anpassen können). . Die Verwendung mehrerer Daemons für diese separaten Fälle ist nur eine Umgehung für den Mangel an entsprechenden Funktionen in Emacs.Antworten:
Dient
emacs --daemon=your-server-name -l "custom-init-file"
zum Starten eines neuen Servers undemacsclient -nw -s your-server-name
zum Herstellen einer Verbindung vom Terminal aus. Der Abschnitt über die Verwendung von Emacs als Server im Handbuch enthält weitere Initialisierungsoptionen.quelle
-q
Schalter hinzufügen, um zu verhindern, dass mein Standardinit.el
vor der benutzerdefinierten Init-Datei ausgeführt wird.)emacsclient -s your-server-name -e "(kill-emacs)"
was du willst Das oben Genannte nennt man nur emacsclient und evals(kill-emacs)
. Sie könnten ersetzen(kill-emacs)
mit(save-buffers-kill-emacs)
als auch.-q
Zusätzlich zur Antwort von @ Vamsi können Sie viele der gleichen Vorteile erzielen, wenn Sie nur einen einzigen Server betreiben, indem Sie Ratschläge anhängen
make-frame-command
.Wenn ich zum Beispiel im Terminal lebe, möchte ich, dass die Hintergrundfarbe
black
(die zugeordnet ist#202020
), aber ich möchte sie#202020
in einem grafischen Modus verwenden. Ich habe das umgesetzt mit:Sie können eine Menge Laufleistung daraus ziehen
make-variable-frame-local
(set-background-color
im obigen Beispiel ist dies bereits rahmenlokal).Ich weiß nicht, ob dies das beste Muster ist, aber wenn Sie relativ wenige Unterschiede zwischen TTY- und X-Mode-Emacs haben, kann dies das Konfigurationsmanagement vereinfachen.
Der obige Code wurde von meinem .emacs.d gezogen .
quelle
(display-graphic-p)
Gibt an,t
ob der aktuelle Frame grafisch ist,nil
ansonsten. Da Frames nicht zwischen grafisch und nicht (afaik) verschoben werden können, wird durch das Anhängen von Hinweisen zur Frame-Erstellung sichergestellt, dass der gewünschte Status für den angegebenen Frame erreicht wird.Sie benötigen keinen Rat , um die Einstellungen verschiedener Frames zu ändern, die im selben Emacs-Dämon ausgeführt werden. Benutze einfach den Haken
after-make-frame-functions
soDiese Definition hat den zusätzlichen Vorteil, dass die gewünschte Frame-Konfiguration festgelegt wird, auch wenn Sie nicht im Daemon-Modus starten.
Leider
load-theme
ist der Frame nicht lokal und daher werden auch die anderen Frames farbig, wenn Sie wirklich unterschiedliche Designs für Text- und Grafik-Frames verwenden.Bonusinformationen: Konfigurieren Sie Ihre Terminals mit mindestens 256 Farben, um das echte Gefühl Ihres ausgewählten Themas zu erhalten. Verwenden Sie eine Einstellung wie diese in einer Ihrer Shell-Startdateien:
quelle