|
|
- #!/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
|