This commit is contained in:
Kovid Goyal 2022-03-07 19:26:56 +05:30
commit 4d74b23f20
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 27 additions and 29 deletions

View File

@ -8,32 +8,32 @@ _ksi_inject() {
if [[ -n "$KITTY_BASH_INJECT" ]]; then if [[ -n "$KITTY_BASH_INJECT" ]]; then
builtin local kitty_bash_inject="$KITTY_BASH_INJECT" builtin local kitty_bash_inject="$KITTY_BASH_INJECT"
builtin unset KITTY_BASH_INJECT builtin unset KITTY_BASH_INJECT
builtin unset ENV; builtin unset ENV
if [[ -z "$HOME" ]]; then HOME=~; fi if [[ -z "$HOME" ]]; then HOME=~; fi
if [[ -z "$KITTY_BASH_ETC_LOCATION" ]]; then KITTY_BASH_ETC_LOCATION="/etc"; fi if [[ -z "$KITTY_BASH_ETC_LOCATION" ]]; then KITTY_BASH_ETC_LOCATION="/etc"; fi
_ksi_safe_source() { _ksi_safe_source() {
if [[ -f "$1" && -r "$1" ]]; then if [[ -f "$1" && -r "$1" ]]; then
builtin source "$1"; builtin source "$1"
builtin return 0; builtin return 0
fi fi
builtin return 1; builtin return 1
} }
if [[ "$kitty_bash_inject" == *"posix"* ]]; then if [[ "$kitty_bash_inject" == *"posix"* ]]; then
_ksi_safe_source "$KITTY_BASH_POSIX_ENV" && builtin export ENV="$KITTY_BASH_POSIX_ENV"; _ksi_safe_source "$KITTY_BASH_POSIX_ENV" && builtin export ENV="$KITTY_BASH_POSIX_ENV"
else else
builtin set +o posix; builtin set +o posix
if [[ -n "$KITTY_BASH_UNEXPORT_HISTFILE" ]]; then if [[ -n "$KITTY_BASH_UNEXPORT_HISTFILE" ]]; then
builtin export -n HISTFILE; builtin export -n HISTFILE
builtin unset KITTY_BASH_UNEXPORT_HISTFILE; builtin unset KITTY_BASH_UNEXPORT_HISTFILE
fi fi
# See run_startup_files() in shell.c in the Bash source code # See run_startup_files() in shell.c in the Bash source code
if builtin shopt -q login_shell; then if builtin shopt -q login_shell; then
if [[ "$kitty_bash_inject" != *"no-profile"* ]]; then if [[ "$kitty_bash_inject" != *"no-profile"* ]]; then
_ksi_safe_source "$KITTY_BASH_ETC_LOCATION/profile"; _ksi_safe_source "$KITTY_BASH_ETC_LOCATION/profile"
_ksi_safe_source "$HOME/.bash_profile" || _ksi_safe_source "$HOME/.bash_login" || _ksi_safe_source "$HOME/.profile"; _ksi_safe_source "$HOME/.bash_profile" || _ksi_safe_source "$HOME/.bash_login" || _ksi_safe_source "$HOME/.profile"
fi fi
else else
if [[ "$kitty_bash_inject" != *"no-rc"* ]]; then if [[ "$kitty_bash_inject" != *"no-rc"* ]]; then
@ -42,13 +42,13 @@ _ksi_inject() {
_ksi_safe_source "$KITTY_BASH_ETC_LOCATION/bash.bashrc" # Arch, Debian, Ubuntu _ksi_safe_source "$KITTY_BASH_ETC_LOCATION/bash.bashrc" # Arch, Debian, Ubuntu
# Fedora uses /etc/bashrc sourced from ~/.bashrc instead of SYS_BASHRC # Fedora uses /etc/bashrc sourced from ~/.bashrc instead of SYS_BASHRC
if [[ -z "$KITTY_BASH_RCFILE" ]]; then KITTY_BASH_RCFILE="$HOME/.bashrc"; fi if [[ -z "$KITTY_BASH_RCFILE" ]]; then KITTY_BASH_RCFILE="$HOME/.bashrc"; fi
_ksi_safe_source "$KITTY_BASH_RCFILE"; _ksi_safe_source "$KITTY_BASH_RCFILE"
fi fi
fi fi
fi fi
builtin unset KITTY_BASH_RCFILE; builtin unset KITTY_BASH_RCFILE
builtin unset KITTY_BASH_POSIX_ENV; builtin unset KITTY_BASH_POSIX_ENV
builtin unset KITTY_BASH_ETC_LOCATION; builtin unset KITTY_BASH_ETC_LOCATION
builtin unset -f _ksi_safe_source builtin unset -f _ksi_safe_source
fi fi
} }
@ -57,14 +57,14 @@ builtin unset -f _ksi_inject
if [ "${BASH_VERSINFO:-0}" -lt 4 ]; then if [ "${BASH_VERSINFO:-0}" -lt 4 ]; then
builtin unset KITTY_SHELL_INTEGRATION builtin unset KITTY_SHELL_INTEGRATION
builtin printf "%s\n" "Bash version ${BASH_VERSION} too old, kitty shell integration disabled" > /dev/stderr; builtin printf "%s\n" "Bash version ${BASH_VERSION} too old, kitty shell integration disabled" > /dev/stderr
builtin return; builtin return
fi fi
if [[ "${_ksi_prompt[sourced]}" == "y" ]]; then if [[ "${_ksi_prompt[sourced]}" == "y" ]]; then
# we have already run # we have already run
builtin unset KITTY_SHELL_INTEGRATION builtin unset KITTY_SHELL_INTEGRATION
builtin return; builtin return
fi fi
# this is defined outside _ksi_main to make it global without using declare -g # this is defined outside _ksi_main to make it global without using declare -g
@ -86,10 +86,10 @@ _ksi_main() {
builtin unset KITTY_SHELL_INTEGRATION builtin unset KITTY_SHELL_INTEGRATION
_ksi_debug_print() { _ksi_debug_print() {
# print a line to STDOUT of parent kitty process # print a line to STDERR of parent kitty process
builtin local b builtin local b
b=$(builtin command base64 <<< "${@}") b=$(builtin command base64 <<< "${@}")
builtin printf "\eP@kitty-print|%s\e\\" "${b//\\n}" builtin printf "\eP@kitty-print|%s\e\\" "${b//[[:space:]]}}"
} }
_ksi_set_mark() { _ksi_set_mark() {
@ -135,7 +135,7 @@ _ksi_main() {
# the first part removes everything from the last \n onwards # the first part removes everything from the last \n onwards
# the second part appends a newline with the secondary marking # the second part appends a newline with the secondary marking
# the third part appends everything after the last newline # the third part appends everything after the last newline
PS1=${PS1%@('\n'|$'\n')*}${_ksi_prompt[secondary_prompt]}${PS1##*@('\n'|$'\n')}; PS1=${PS1%@('\n'|$'\n')*}${_ksi_prompt[secondary_prompt]}${PS1##*@('\n'|$'\n')}
builtin eval "$oldval" builtin eval "$oldval"
fi fi
PS1="${_ksi_prompt[ps1]}$PS1" PS1="${_ksi_prompt[ps1]}$PS1"
@ -159,14 +159,12 @@ _ksi_main() {
if [[ -n "$SSH_TTY" || -n "$SSH2_TTY$KITTY_WINDOW_ID" ]]; then if [[ -n "$SSH_TTY" || -n "$SSH2_TTY$KITTY_WINDOW_ID" ]]; then
# connected to most SSH servers # connected to most SSH servers
# or use ssh kitten to connected to some SSH servers that do not set SSH_TTY # or use ssh kitten to connected to some SSH servers that do not set SSH_TTY
_ksi_prompt[hostname_prefix]="\h: "; _ksi_prompt[hostname_prefix]="\h: "
else elif [[ -n "$(builtin command -v who)" && "$(builtin command who -m 2> /dev/null)" =~ "\([a-fA-F.:0-9]+\)$" ]]; then
if [[ -n "$(builtin command -v who)" && "$(builtin command who -m 2> /dev/null)" =~ "\([a-fA-F.:0-9]+\)$" ]]; then # the shell integration script is installed manually on the remote system
# the shell integration script is installed manually on the remote system # the environment variables are cleared after sudo
# the environment variables are cleared after sudo # OpenSSH's sshd creates entries in utmp for every login so use those
# OpenSSH's sshd creates entries in utmp for every login so use those _ksi_prompt[hostname_prefix]="\h: "
_ksi_prompt[hostname_prefix]="\h: ";
fi
fi fi
fi fi
# see https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html#Controlling-the-Prompt # see https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html#Controlling-the-Prompt

View File

@ -61,7 +61,7 @@ typeset -gi _ksi_fd
} }
} 2>/dev/null || (( _ksi_fd = 1 )) } 2>/dev/null || (( _ksi_fd = 1 ))
# Asks kitty to print $@ to its STDOUT. This is for debugging. # Asks kitty to print $@ to its STDERR. This is for debugging.
_ksi_debug_print() { _ksi_debug_print() {
builtin local data builtin local data
data=$(builtin command base64 <<<"${(j: :)@}") || builtin return data=$(builtin command base64 <<<"${(j: :)@}") || builtin return