diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2022-10-19 00:00:11 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2022-10-29 21:47:37 -0700 |
commit | 9d68e5109bfb0a6fa9ebe0be86b9ff36747717dc (patch) | |
tree | 010f3e5f518cddb66169be63c89cc2d47820cea9 /bin/emacsclient | |
parent | 7f4100ff04539ae3720e43400a51748c17c7fa75 (diff) | |
download | dotfiles-9d68e5109bfb0a6fa9ebe0be86b9ff36747717dc.tar.gz |
emacsclient wrapper: better handle lack of ss(8)
Diffstat (limited to 'bin/emacsclient')
-rwxr-xr-x | bin/emacsclient | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/bin/emacsclient b/bin/emacsclient index c261d469..02755f28 100755 --- a/bin/emacsclient +++ b/bin/emacsclient @@ -21,7 +21,6 @@ # daemons and choosing between installed and in-tree builds of Emacs. min_arg=0 -command -v ss >/dev/null || exit 1 socket_dir="/run/user/$(id -u)/emacs/" get_listener () { local socket="$1" @@ -48,12 +47,22 @@ for arg do esac done +devel_emacs="$HOME/src/emacs/src/emacs" +devel_emacsclient="$HOME/src/emacs/lib-src/emacsclient" + +installed_emacs=$(command -v emacs) +installed_emacsclient=$(PATH=$(echo "$PATH" \ + | sed -e "s#$HOME/src/dotfiles/bin:##") \ + command -v emacsclient) + +command -v ss >/dev/null || exec "$installed_emacsclient" -a "" "$@" + socket="$socket_dir${daemon_name:-server}" listener="$(get_listener $socket)" if [ -n "$listener" ]; then case "$(ps h -o exe $listener | sed -e 's/ (deleted)$//')" in - "$HOME/src/emacs/src/emacs") devel_running=true ;; - "$(realpath $(command -v emacs))") installed_running=true ;; + "$devel_emacs") devel_running=true ;; + "$(realpath $installed_emacs)") installed_running=true ;; *) echo >&2 "Unknown Emacs listening on $socket"; exit 1 ;; esac fi @@ -85,12 +94,11 @@ if [ "$mode" != --spw/installed -a "$installed_running" != true \ -a -d "/usr/share/emacs-snapshot/site-lisp/elpa" ] \ && ! ( [ "$devel_running" != true ] && ps h -o pid -C make \ | xargs pwdx | grep -q "$HOME/src/emacs" ); then - emacs="$HOME/src/emacs/src/emacs" - emacsclient="$HOME/src/emacs/lib-src/emacsclient" + emacs="$devel_emacs" + emacsclient="$devel_emacsclient" else - emacs=$(command -v emacs) - emacsclient=$(PATH=$(echo "$PATH" | sed -e "s#$HOME/src/dotfiles/bin:##") \ - command -v emacsclient) + emacs="$installed_emacs" + emacsclient="$installed_emacsclient" fi # Update Emacs daemon environment vars for a new interactive session. This |