38 lines
1007 B
Bash
38 lines
1007 B
Bash
#
|
|
# Shell-side support for Emacs libvterm terminal
|
|
#
|
|
# This file returns immediately if we are not running in an Emacs vterm.
|
|
|
|
if [[ ${INSIDE_EMACS} != "vterm" ]]; then
|
|
return
|
|
fi
|
|
|
|
vterm_printf() {
|
|
# Function definition pulled from emacs-libvterm README
|
|
if [ -n "$TMUX" ] && { [ "${TERM%%-*}" = "tmux" ] || [ "${TERM%%-*}" = "screen" ]; }; then
|
|
# Tell tmux to pass the escape sequences through
|
|
printf "\ePtmux;\e\e]%s\007\e\\" "$1"
|
|
elif [ "${TERM%%-*}" = "screen" ]; then
|
|
# GNU screen (screen, screen-256color, screen-256color-bce)
|
|
printf "\eP\e]%s\007\e\\" "$1"
|
|
else
|
|
printf "\e]%s\e\\" "$1"
|
|
fi
|
|
}
|
|
|
|
vterm_prompt_end() {
|
|
vterm_printf "51;A${USER}@${SYSTEM_INFO[Hostname]}:${PWD}"
|
|
}
|
|
|
|
prompt_elements[prompt]="${prompt_elements[prompt]}"'%{$(vterm_prompt_end)%}'
|
|
|
|
emacsctl() {
|
|
local vterm_elisp
|
|
vterm_elisp=""
|
|
while [ $# -gt 0 ]; do
|
|
vterm_elisp="$vterm_elisp""$(printf '"%s" ' "$(printf "%s" "$1" | sed -e 's|\\|\\\\|g' -e 's|"|\\"|g')")"
|
|
shift
|
|
done
|
|
vterm_printf "51;E${vterm_elisp}"
|
|
}
|