Verbindung mit emacsclient nicht möglich

7

Ich starte den Emacs-Server mit

systemctl --now --user enable emacs

Dieser Server läuft, wenn ich laufe

systemctl --user status emacs

ich habe

$ systemctl --user status emacs
● emacs.service - Emacs text editor
   Loaded: loaded (/usr/local/lib/systemd/user/emacs.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-06-09 09:27:56 CDT; 2 days ago
     Docs: info:emacs
           man:emacs(1)
           https://gnu.org/software/emacs/
 Main PID: 17613 (emacs)
   CGroup: /user.slice/user-1000.slice/[email protected]/emacs.service
           └─17613 /usr/local/bin/emacs --fg-daemon

Aber wenn ich versuche, eine Verbindung mit herzustellen emacsclient -c some_file.py

ich habe

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

Was vermisse ich?

BEARBEITEN :

Auf Anraten von @Tobias bin ich gelaufen

$ sudo netstat -xauopen | grep emacs

Und das Ergebnis war das Folgende:

unix  3      [ ]         STREAM     CONNECTED     61841    17982/emacs          
unix  3      [ ]         STREAM     CONNECTED     62269    17982/emacs          
unix  3      [ ]         STREAM     CONNECTED     62268    17982/emacs   

Ich hatte erwartet, mehr Informationen zu sehen, aber das scheint nicht richtig zu sein. Was ist los?

nanounanue
quelle
Bitte fügen Sie hinzu, welche Emacs-Version Sie ausführen.
Tobias
GNU Emacs 27.0.50
Nanounanue
Sie müssen die --nowOption auch an übergeben systemctl --user enable emacsoder zusätzlich ausführen systemctl --user start emacs. Aber ich gehe davon aus, dass Sie wegen des Run-Status von Emacs bereits so etwas gemacht haben.
Tobias
Ja, aber ich habe immer noch kein Glück, mich damit zu verbinden :(
nanounanue
Ich habe --nowzu den Optionen hinzugefügt .
Tobias

Antworten:

1

Ich verwende die 24-25 Emacs-Version als Daemon.

 cat /etc/systemd/user/emacs.service

 [Unit]
 Description=Emacs: the extensible, self-documenting text editor

 [Service]
 Type=forking
 ExecStart=/usr/bin/emacs --daemon
 ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
 Environment=SSH_AUTH_SOCK=%t/keyring/ssh
 Restart=always

 [Install]
 WantedBy=default.target

Mit 26.1+ Optionen hinzufügen --fg-daemonund --bg-daemon. Versuchen Sie es mit einer alten --daemonAlias- --bg-daemonGabeleinheit. Vielleicht arbeiten.

Fügen Sie auch hinzu emacsclient -a '' -t.

AfsmNGhr
quelle
Ich habe die --bgund --fgOptionen ausprobiert und kein Glück. Siehe den Kommentarthread in der Frage für weitere Informationen
nanounanue
0

Ich habe das gleiche Problem. Ich habe mir ein Skript ausgedacht, um emacsclient zu starten, das für mich gut funktioniert:

#!/bin/sh

SOCKET=/tmp/emacs$UID/server
PARAMS="--socket-name=$SOCKET"

if [[ $TMUX || $SSH_CLIENT ]]
then
    PARAMS+=" -t"
else
    PARAMS+=" -c"
fi

exec /usr/bin/emacsclient $PARAMS "$@"

Leider scheint dies nicht die beste Lösung zu sein, da der Start von emacsclient nicht direkt behoben werden kann (entweder in der Befehlszeile oder in der Desktop-Datei). Ich habe jedoch eine Tastenkombination, um es mit dem Skript zu starten.

aiguofer
quelle
Alternativ können Sie es basierend auf stackoverflow.com/a/28553846/1815486 verwenden SOCKET=$(lsof -c emacs | grep $USER | grep server | grep STREAM | awk '{print $9}'), um es zu finden, unabhängig davon, wo es sich befindet (falls Sie es an anderer Stelle eingestellt haben)
aiguofer