mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-22 12:07:15 +03:00
Dont break if user aliases or redefines various builtins we use
This commit is contained in:
parent
4c5673dc4d
commit
914f4e9ec9
@ -2,27 +2,28 @@
|
||||
|
||||
# this is defined outside _ksi_main to make it global without using declare -g
|
||||
# which is not available on older bash
|
||||
declare -A _ksi_prompt=( [cursor]='y' [title]='y' [mark]='y' [complete]='y' [ps0]='' [ps1]='' [ps2]='' )
|
||||
builtin declare -A _ksi_prompt
|
||||
_ksi_prompt=( [cursor]='y' [title]='y' [mark]='y' [complete]='y' [ps0]='' [ps1]='' [ps2]='' )
|
||||
|
||||
_ksi_main() {
|
||||
if [[ $- != *i* ]] ; then return; fi # check in interactive mode
|
||||
if [[ -z "$KITTY_SHELL_INTEGRATION" ]]; then return; fi
|
||||
set -f
|
||||
if [[ $- != *i* ]] ; then builtin return; fi # check in interactive mode
|
||||
if [[ -z "$KITTY_SHELL_INTEGRATION" ]]; then builtin return; fi
|
||||
builtin set -f
|
||||
for i in ${KITTY_SHELL_INTEGRATION[@]}; do
|
||||
set +f
|
||||
builtin set +f
|
||||
if [[ "$i" == "no-cursor" ]]; then _ksi_prompt[cursor]='n'; fi
|
||||
if [[ "$i" == "no-title" ]]; then _ksi_prompt[title]='n'; fi
|
||||
if [[ "$i" == "no-prompt-mark" ]]; then _ksi_prompt[mark]='n'; fi
|
||||
if [[ "$i" == "no-complete" ]]; then _ksi_prompt[complete]='n'; fi
|
||||
done
|
||||
set +f
|
||||
builtin set +f
|
||||
|
||||
unset KITTY_SHELL_INTEGRATION
|
||||
builtin unset KITTY_SHELL_INTEGRATION
|
||||
|
||||
_ksi_debug_print() {
|
||||
# print a line to STDOUT of parent kitty process
|
||||
local b=$(printf "%s\n" "$1" | base64 | tr -d \\n)
|
||||
printf "\eP@kitty-print|%s\e\\" "$b"
|
||||
builtin local b=$(builtin printf "%s\n" "$1" | base64 | tr -d \\n)
|
||||
builtin printf "\eP@kitty-print|%s\e\\" "$b"
|
||||
# "
|
||||
}
|
||||
|
||||
@ -34,7 +35,7 @@ _ksi_main() {
|
||||
_ksi_set_mark end
|
||||
_ksi_set_mark start_secondary
|
||||
_ksi_set_mark end_secondary
|
||||
unset -f _ksi_set_mark
|
||||
builtin unset -f _ksi_set_mark
|
||||
_ksi_prompt[secondary_prompt]="\n${_ksi_prompt[start_secondary_mark]}\[\e]133;A;k=s\a\]${_ksi_prompt[end_secondary_mark]}"
|
||||
|
||||
_ksi_prompt_command() {
|
||||
@ -82,16 +83,16 @@ _ksi_main() {
|
||||
|
||||
if [[ "${_ksi_prompt[complete]}" == "y" ]]; then
|
||||
_ksi_completions() {
|
||||
local src
|
||||
local limit
|
||||
builtin local src
|
||||
builtin local limit
|
||||
# Send all words up to the word the cursor is currently on
|
||||
let limit=1+$COMP_CWORD
|
||||
src=$(printf "%s\n" "${COMP_WORDS[@]: 0:$limit}" | kitty +complete bash)
|
||||
builtin let limit=1+$COMP_CWORD
|
||||
src=$(builtin printf "%s\n" "${COMP_WORDS[@]: 0:$limit}" | kitty +complete bash)
|
||||
if [[ $? == 0 ]]; then
|
||||
eval ${src}
|
||||
builtin eval ${src}
|
||||
fi
|
||||
}
|
||||
complete -o nospace -F _ksi_completions kitty
|
||||
builtin complete -o nospace -F _ksi_completions kitty
|
||||
fi
|
||||
|
||||
# wrap our prompt additions in markers we can use to remove them using
|
||||
@ -105,10 +106,10 @@ _ksi_main() {
|
||||
if [[ -n "${_ksi_prompt[ps2]}" ]]; then
|
||||
_ksi_prompt[ps2]="${_ksi_prompt[start_mark]}${_ksi_prompt[ps2]}${_ksi_prompt[end_mark]}"
|
||||
fi
|
||||
unset _ksi_prompt[start_mark]
|
||||
unset _ksi_prompt[end_mark]
|
||||
unset _ksi_prompt[start_secondary_mark]
|
||||
unset _ksi_prompt[end_secondary_mark]
|
||||
builtin unset _ksi_prompt[start_mark]
|
||||
builtin unset _ksi_prompt[end_mark]
|
||||
builtin unset _ksi_prompt[start_secondary_mark]
|
||||
builtin unset _ksi_prompt[end_secondary_mark]
|
||||
|
||||
# install our prompt command, using an array if it is unset or already an array,
|
||||
# otherwise append a string
|
||||
@ -121,6 +122,6 @@ _ksi_main() {
|
||||
fi
|
||||
}
|
||||
_ksi_main
|
||||
unset -f _ksi_main
|
||||
builtin unset -f _ksi_main
|
||||
# freeze _ksi_prompt to prevent it from being changed
|
||||
declare -r _ksi_prompt
|
||||
builtin declare -r _ksi_prompt
|
||||
|
Loading…
Reference in New Issue
Block a user