emacsclientを使用して接続できない


7

私は使用してemacsサーバーを起動しています

systemctl --now --user enable emacs

実行すると、そのサーバーは実行中です

systemctl --user status emacs

わかった

$ 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/user@1000.service/emacs.service
           └─17613 /usr/local/bin/emacs --fg-daemon

しかし、私が使用して接続しようとすると emacsclient -c some_file.py

わかった

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

何が欠けていますか?

編集

私が走った@Tobiasのアドバイスに従って

$ sudo netstat -xauopen | grep emacs

そして結果は次のとおりでした:

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

もっと情報が表示されることを期待していましたが、これは正しくないようです。何が起こっている?


実行しているemacsバージョンを追加してください。
トビアス

GNU Emacs 27.0.50
nanounanue

--nowオプションをに渡すsystemctl --user enable emacsか、さらにを実行する必要もありますsystemctl --user start emacs。しかし、emacsの実行ステータスのために、あなたはすでにそのようなことをしたと思います。
トビアス

うん、でも私はそれに接続できません:(
nanounanue

--nowオプションに追加しました。
トビアス

回答:


1

私はデーモンとして24-25 emacsバージョンを使用しています。

 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

26.1以降では、オプション--fg-daemonとを追加します--bg-daemon。古い--daemonエイリアス--bg-daemonフォークユニットを試してください。多分働く。

またに追加しemacsclient -a '' -tます。


私は--bg--fgオプションを試しましたが、うまくいきませんでした。詳細については、質問のコメントスレッドを参照してください
nanounanue

0

同じ問題が発生しています。私はemacsclientを起動するスクリプトを思い付きました。

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

残念ながら、これは(コマンドラインまたはデスクトップファイルで)emacsclientを直接起動することを修正しないため、最善の解決策ではないようです。ただし、スクリプトを使用して起動するための主要なショートカットがあります。


または、stackoverflow.comSOCKET=$(lsof -c emacs | grep $USER | grep server | grep STREAM | awk '{print $9}')
a/28553846/1815486
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.