From 9d68e5109bfb0a6fa9ebe0be86b9ff36747717dc Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Wed, 19 Oct 2022 00:00:11 -0700 Subject: emacsclient wrapper: better handle lack of ss(8) --- bin/emacsclient | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'bin/emacsclient') 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 -- cgit v1.2.3