summaryrefslogtreecommitdiff
path: root/bin/emacsclient
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2022-10-19 00:00:11 -0700
committerSean Whitton <spwhitton@spwhitton.name>2022-10-29 21:47:37 -0700
commit9d68e5109bfb0a6fa9ebe0be86b9ff36747717dc (patch)
tree010f3e5f518cddb66169be63c89cc2d47820cea9 /bin/emacsclient
parent7f4100ff04539ae3720e43400a51748c17c7fa75 (diff)
downloaddotfiles-9d68e5109bfb0a6fa9ebe0be86b9ff36747717dc.tar.gz
emacsclient wrapper: better handle lack of ss(8)
Diffstat (limited to 'bin/emacsclient')
-rwxr-xr-xbin/emacsclient24
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