Wie verwende ich eine Instanz von emacs als Standard-Texteditor? [Linux]

8

Was ich erreichen möchte

  • eine Instanz von Emacs
  • Wenn ich eine Textdatei von Nautilus öffne, sollte sie in der aktuellen Emacs-Instanz geöffnet werden
  • Wenn ich Emacs schließe, sollte es es nicht wirklich schließen, verstecke es einfach

Was ich gerade habe

  • Ich habe emacs23 gesetzt, um beim Start zu starten
  • Ich habe (start-server) in meinem init
  • Ich lasse Emacs offen
  • Ich habe emacsclient als Standardtexteditor

Probleme, auf die ich gestoßen bin, als ich versuchte, das zu erreichen, was ich wollte

  • emacs gibt den folgenden Fehler aus, wenn ich emacs verlasse und versuche, es erneut zu starten
  

Dateifehler: Server-Socket kann nicht gebunden werden, Adresse wird bereits verwendet

Dinge, die ich versucht habe

Update: Ich habe es erneut mit dem Stackoverflow-Link versucht, und jetzt funktioniert das meiste. Ich möchte jedoch gerne die init-Datei neu laden, damit ich Änderungen an meiner init-Datei vornehmen kann, ohne den Computer neu zu starten. Irgendwelche Ideen?

Auch wenn der Server läuft und ich habe emacs false-closed (siehe emacs fu link), wie kann ich es wieder starten, ohne eine Datei zu laden? zB was wäre das Äquivalent von running emacs23, da dies nicht funktioniert (siehe Fehler oben geschrieben)

    
tobeannounced 16.12.2010, 08:37
quelle

4 Antworten

19
  • entferne (start-server) von .emacs
  • benutze emacsclient "$@" -a "" , um emacs zu starten, egal ob es läuft oder nicht

Wenn Sie emacsclient "$@" -a "" als Skript speichern, z. in editor file erstellt editor -c einen neuen Frame, editor -t öffnet einen neuen Frame im Terminal und editor FILE besucht FILE in einem bestehenden Frame. Es startet Emacs-Server, wenn es nicht ausgeführt wird.

    
jfs 16.12.2010, 12:52
quelle
2

Ich beginne Emacs mit emacs --daemon , so dass Emacs in einem Daemon-Modus startet. Dann würde ich EDITOR auf emacsclient -t -a emacs -nw setzen, was einen neuen Terminal-Emacs-Frame öffnet, der an Ihren Emacs-Daemon angehängt ist, mit einer "no-window" -Version von emacs, die als Alternative verwendet wird, wenn kein Emacs-Server läuft. Zum Öffnen von Emacs-Fenstern in der GUI habe ich den Editorbefehl emacsclient -n -c -a emacs .

Es ist auch möglich, mehr als eine Emacs-Instanz auf einer einzelnen Maschine auszuführen, wenn die Puffer eines Projekts nicht mit Puffern eines anderen Projekts vermischt werden sollen. Sehen Sie meinen Beitrag zu diesem Thema.

    
tychoish 16.12.2010 17:12
quelle
1
  

Aber etwas wäre ich gerne   in der Lage ist, die init-Datei neu zu laden,   damit ich Änderungen an meiner init vornehmen kann   Datei ohne Neustart des Computers.

Wenn Sie die Methoden hinter dem Daemon-Effekt durchlesen, die Sie suchen, scheint keiner davon auszuschließen, dass Sie einfach Ihre init-Datei laden und einen eval-buffer -Aufruf ausgeben, nachdem Sie Änderungen vorgenommen haben.

  

Auch wenn der Server läuft und ich   habe Emacs falsch-geschlossen (siehe Emacs fu   link), wie kann ich es wieder starten?   ohne eine Datei zu laden?

Running emacsclient (anstatt emacs23 ) sollte den Trick tun, würde ich denken.

    
R. P. Dillon 16.12.2010 16:30
quelle
1

Hmm, ich bin mir nicht sicher, ob ich Emacs als Client ausführen soll, aber ich überarbeite häufig Änderungen an meiner .emacs-Datei, ohne die Emacs zu schließen.

Einfache Bearbeitung der Datei (innerhalb oder außerhalb von Emacs, egal welche). Die M-x Ladedatei, emacs wird Sie nach dem Pfad und dem Namen der Datei fragen, was einfach ist, wenn es ~ / .emacs ist.

Geben Sie den Pfad und den Dateinamen ein, dann RET und emacs wird mit Ihren Änderungen neu geladen. Alle Puffer, die Sie geöffnet hatten, sind noch da.

    
J.L. 27.01.2011 16:39
quelle

Tags und Links