#!/bin/bash
|
|
|
|
force_tty=false
|
|
force_wait=false
|
|
stdin_mode=""
|
|
|
|
args=()
|
|
|
|
while :; do
|
|
case "$1" in
|
|
-t | -nw | --tty)
|
|
force_tty=true
|
|
shift ;;
|
|
-w | --wait)
|
|
force_wait=true
|
|
shift ;;
|
|
-m | --mode)
|
|
stdin_mode=" ($2-mode)"
|
|
shift 2 ;;
|
|
-h | --help)
|
|
echo -e "\033[1mUsage: e [-t] [-m MODE] [OPTIONS] FILE [-]\033[0m
|
|
|
|
Emacs client convenience wrapper.
|
|
|
|
\033[1mOptions:\033[0m
|
|
\033[0;34m-h, --help\033[0m Show this message
|
|
\033[0;34m-t, -nw, --tty\033[0m Force terminal mode
|
|
\033[0;34m-w, --wait\033[0m Don't supply \033[0;34m--no-wait\033[0m to graphical emacsclient
|
|
\033[0;34m-\033[0m Take \033[0;33mstdin\033[0m (when last argument)
|
|
\033[0;34m-m MODE, --mode MODE\033[0m Mode to open \033[0;33mstdin\033[0m with
|
|
|
|
Run \033[0;32memacsclient --help\033[0m to see help for the emacsclient."
|
|
exit 0 ;;
|
|
--*=*)
|
|
set -- "$@" "${1%%=*}" "${1#*=}"
|
|
shift ;;
|
|
*)
|
|
if [ "$#" = 0 ]; then
|
|
break; fi
|
|
args+=("$1")
|
|
shift ;;
|
|
esac
|
|
done
|
|
|
|
if [ ! "${#args[*]}" = 0 ] && [ "${args[-1]}" = "-" ]; then
|
|
unset 'args[-1]'
|
|
TMP="$(mktemp /tmp/emacsstdin-XXX)"
|
|
cat > "$TMP"
|
|
args+=(--eval "(let ((b (generate-new-buffer \"*stdin*\"))) (switch-to-buffer b) (insert-file-contents \"$TMP\") (delete-file \"$TMP\")${stdin_mode})")
|
|
fi
|
|
|
|
if [ -z "$DISPLAY" ] || $force_tty; then
|
|
if [ "$TERM" = "st-256color" ]; then
|
|
TERM=xterm-256color emacsclient --tty -create-frame --alternate-editor="nvim" "${args[@]}"
|
|
else
|
|
emacsclient --tty -create-frame --alternate-editor="nvim" "${args[@]}"
|
|
fi
|
|
else
|
|
if ! $force_wait; then
|
|
args+=(--no-wait); fi
|
|
emacsclient -create-frame --alternate-editor="nvim" "${args[@]}"
|
|
fi
|