Emacs: Verwenden von emacsclient

Emacs: Verwenden von emacsclient

Ich richte Emacs immer im Servermodus ein und jedes Mal, wenn ich Ubuntu aktualisiere, ändert sich das entsprechende Verfahren.

Obwohl ich in meinem /.bash_aliasesund alle dieselben Einstellungen habe /.emacs, funktioniert es nicht.

Ich habe Emacs 24.3.x (je nachdem, welche Version aktuell ist), ich habe AUCTeX cvs und TeX Live 2013 installiert.

In meinem ./bash_aliaseshabe ich

emacs = 'emacsclient -t --alternate-editor='

Die relevanten Informationen in /.emacsmeinem

;; Start server and set directory                                               
(setq server-socket-dir (format "/tmp/emacs%d" (user-uid)))
(server-start)

(custom-set-variables
 '(TeX-PDF-mode t)
 '(TeX-show-compilation t)
 '(TeX-newline-function (quote newline-and-indent))
 '(TeX-source-correlate-method (quote synctex))
 '(TeX-source-correlate-mode t)
 '(TeX-source-correlate-start-server t))

Probleme treten nur beim Öffnen von LaTeX-Dateien auf. Manchmal heißt es, dass ein anderer Server läuft, und manchmal heißt es:

dustin@dustin:~/Documents/NUPOC/NUPOCSoln$ emacs SolnNUPOC.tex 
emacsclient.emacs24: can't find socket; have you started the server?
To start the server in Emacs, type "M-x server-start".
Warning: due to a long standing Gtk+ bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715
Emacs might crash when run in daemon mode and the X11 connection is unexpectedly lost.
Using an Emacs configured with --with-x-toolkit=lucid does not have this problem.
("emacs")
Loading 00debian-vars...
Loading 00debian-vars...done
Loading /etc/emacs/site-start.d/50autoconf.el (source)...
Loading /etc/emacs/site-start.d/50autoconf.el (source)...done
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Error while loading 50dictionaries-common: Symbol's value as variable is void: debian-aspell-only-dictionary-alist
Loading paren...
Loading paren...done
Warning: no abbrev-file found, customize `abbrev-file-name' in order to make mode-specific abbrevs work. 
Starting Emacs daemon.
Restarting server

Ich las imHandbucheine Fußnote, die besagt:


Einige Programme verwenden eine andere Umgebungsvariable. Um beispielsweise TeX dazu zu bringen, „emacsclient“ zu verwenden, legen Sie die Umgebungsvariable TEXEDIT auf „emacsclient +%d %s“ fest.


Es gibt (soweit ich finden kann) keinen Hinweis darauf, wo und wie die TEXEDIT-Umgebung eingestellt wird.

  1. Wie stelle ich die TEXEDIT-Umgebung ein? oder
  2. Wie kann ich Emacsclient für den Betrieb einrichten?

Diese Einrichtung hat funktioniert, bevor alles neu installiert werden musste.

Antwort1

Ich konnte den Server starten und zum Laufen bringen synctex. Es wird immer noch diese Meldung ausgegeben:

emacsclient: can't find socket; have you started the server?
To start the server in Emacs, type "M-x server-start".

Warning: due to a long standing Gtk+ bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715
Emacs might crash when run in daemon mode and the X11 connection is unexpectedly lost.
Using an Emacs configured with --with-x-toolkit=lucid does not have this problem.
Loading paren...
Loading paren...done
Loading server...
Loading server...done
Warning: no abbrev-file found, customize `abbrev-file-name' in order to make mode-specific abbrevs work. 
Starting Emacs daemon.
Restarting server
Emacs daemon should have started, trying to connect again

Was ich geändert habe, war mein /.bash_aliasesund /.emacs.

Wenn Sie Emacs zuerst öffnen, ohne eine Datei anzugeben, und dann eine Datei öffnen, erhalten Sie die obige Warnung nicht. Ich habe keine Ahnung, warum es in dieser Reihenfolge einwandfrei funktioniert, anstatt direkt zu einer Datei zu gehen.

Für meine Aliase habe ich jetzt:

# emacs aliases for server mode
alias emacs='emacsclient -t -s server --alternate-editor='

Das -sist die Abkürzung für --socket-name=; daher -s serverist --socket-name=server.

Ich habe das bis M-x describe-variabledahin gefunden server-socket-nameund der Name sollte für Sie ausgegeben werden. Außerdem können wir das Verzeichnis mit dem gleichen Namen finden M-xund dannserver-socket-dir

In meinem ~/.emacshabe ich Folgendes geändert:

;; Start server and set directory                
(setq server-socket-dir (format "/tmp/emacs1000" (user-uid)))
;(server-start)  has been commented out

In den benutzerdefinierten Satzvariablen habe ich Folgendes hinzugefügt: '(server-mode t).

Ich weiß nicht, ob es einen Unterschied zwischen (server-start)und den benutzerdefinierten Variablen gibt '(server-mode t). Ich werde es mit dem einen oder dem anderen und mit beiden ausprobieren, um zu sehen, was später passiert.

verwandte Informationen