Não foi possível conectar usando o emacsclient

7

Estou iniciando o servidor emacs usando

systemctl --now --user enable emacs

Esse servidor está em execução, se eu executar

systemctl --user status emacs

Eu tenho

$ 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

Mas, quando tento conectar usando emacsclient -c some_file.py

Eu tenho

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

o que estou perdendo?

EDIT :

Seguindo o conselho de @Tobias, corri

$ sudo netstat -xauopen | grep emacs

E o resultado foi o seguinte:

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

Eu esperava ver mais informações, mas isso não parece certo. O que está acontecendo?

nanounanue
fonte
Por favor, adicione qual versão do emacs você está executando.
Tobias
GNU Emacs 27.0.50
nanounanue
Você também precisa passar a --nowopção systemctl --user enable emacsou executar adicionalmente systemctl --user start emacs. Mas suponho que você já fez algo assim por causa do status de execução do emacs.
Tobias
Sim, mas ainda assim não tenho sorte em conectar a ele :(
nanounanue 15/06
Eu adicionei --nowàs opções.
Tobias

Respostas:

1

Estou usando a versão 24-25 emacs como 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

Com 26.1+, adicione opções --fg-daemone --bg-daemon. Experimente a unidade de garfo --daemonalias antiga --bg-daemon. Talvez funcione.

Adicione também a emacsclient -a '' -t.

AfsmNGhr
fonte
Eu tentei o --bge --fgopções e sem sorte. Veja o tópico de comentários na pergunta para obter mais informações
nanounanue
0

Estou tendo o mesmo problema. Eu vim com um script para iniciar o emacsclient que está funcionando bem para mim:

#!/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 "$@"

Infelizmente, essa não parece ser a melhor solução, pois não corrige o lançamento do emacsclient diretamente (na linha de comando ou no arquivo da área de trabalho). No entanto, tenho um atalho de tecla para iniciá-lo usando o script.

aiguofer
fonte
Como alternativa, com base no stackoverflow.com/a/28553846/1815486 , você pode usá SOCKET=$(lsof -c emacs | grep $USER | grep server | grep STREAM | awk '{print $9}')-lo para encontrá-lo, independentemente de onde ele esteja (caso você o tenha definido em outro lugar)
aiguofer