You've already forked inshellisense
mirror of
https://github.com/wavetermdev/inshellisense.git
synced 2026-04-22 15:25:33 -07:00
a834bec66b
Signed-off-by: Chapman Pendery <cpendery@vt.edu>
58 lines
1.0 KiB
Bash
58 lines
1.0 KiB
Bash
if [[ -f $USER_ZDOTDIR/.zshrc ]]; then
|
|
ZDOTDIR=$USER_ZDOTDIR
|
|
. $USER_ZDOTDIR/.zshrc
|
|
fi
|
|
|
|
__is_prompt_start() {
|
|
builtin printf '\e]6973;PS\a'
|
|
}
|
|
|
|
__is_prompt_end() {
|
|
builtin printf '\e]6973;PE\a'
|
|
}
|
|
|
|
__is_escape_value() {
|
|
builtin emulate -L zsh
|
|
|
|
# Process text byte by byte, not by codepoint.
|
|
builtin local LC_ALL=C str="$1" i byte token out=''
|
|
|
|
for (( i = 0; i < ${#str}; ++i )); do
|
|
byte="${str:$i:1}"
|
|
|
|
# Escape backslashes and semi-colons
|
|
if [ "$byte" = "\\" ]; then
|
|
token="\\\\"
|
|
elif [ "$byte" = ";" ]; then
|
|
token="\\x3b"
|
|
else
|
|
token="$byte"
|
|
fi
|
|
|
|
out+="$token"
|
|
done
|
|
|
|
builtin print -r "$out"
|
|
}
|
|
|
|
__is_update_cwd() {
|
|
builtin printf '\e]6973;CWD;%s\a' "$(__is_escape_value "${PWD}")"
|
|
}
|
|
|
|
__is_update_prompt() {
|
|
__is_prior_prompt="$PS1"
|
|
if [[ $ISTERM_TESTING == "1" ]]; then
|
|
__is_prior_prompt="> "
|
|
fi
|
|
PS1="%{$(__is_prompt_start)%}$__is_prior_prompt%{$(__is_prompt_end)%}"
|
|
}
|
|
|
|
__is_precmd() {
|
|
if [[ $PS1 != *"$(__is_prompt_start)"* ]]; then
|
|
__is_update_prompt
|
|
fi
|
|
__is_update_cwd
|
|
}
|
|
|
|
__is_update_prompt
|
|
add-zsh-hook precmd __is_precmd |