mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-08-04 06:36:24 +00:00
Shell integration now aliases sudo to make the kitty terminfo db available in the sudo environment
This should make terminfo completely transparent for most users on the local machine and on remote machines that are connected to with the ssh kitten.
This commit is contained in:
parent
0c0c6b732f
commit
d96fdb80ed
7 changed files with 28 additions and 4 deletions
|
|
@ -46,6 +46,8 @@ Detailed list of changes
|
|||
0.30.1 [future]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Shell integration: Automatically alias sudo to make the kitty terminfo files available in the sudo environment. Can be turned off via :opt:`shell_integration`
|
||||
|
||||
- ssh kitten: Fix a regression in 0.28.0 that caused using ``--kitten`` to
|
||||
override :file:`ssh.conf` not inheriting settings from :file:`ssh.conf`
|
||||
(:iss:`6639`)
|
||||
|
|
|
|||
|
|
@ -91,6 +91,10 @@ no-complete
|
|||
Note that for the fish shell this does not take effect, since fish already
|
||||
comes with a kitty completion script.
|
||||
|
||||
no-sudo
|
||||
Do not alias :program:`sudo` to ensure the kitty terminfo files are
|
||||
available in the sudo environment
|
||||
|
||||
|
||||
More ways to browse command output
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -3028,7 +3028,7 @@ jumping to previous prompts, browsing the output of the previous command in a
|
|||
pager, etc. on supported shells. Set to :code:`disabled` to turn off shell
|
||||
integration, completely. It is also possible to disable individual features, set
|
||||
to a space separated list of these values: :code:`no-rc`, :code:`no-cursor`,
|
||||
:code:`no-title`, :code:`no-cwd`, :code:`no-prompt-mark`, :code:`no-complete`.
|
||||
:code:`no-title`, :code:`no-cwd`, :code:`no-prompt-mark`, :code:`no-complete`, :code:`no-sudo`.
|
||||
See :ref:`Shell integration <shell_integration>` for details.
|
||||
'''
|
||||
)
|
||||
|
|
|
|||
|
|
@ -863,7 +863,7 @@ def store_multiple(val: str, current_val: Container[str]) -> Iterable[Tuple[str,
|
|||
yield val, val
|
||||
|
||||
|
||||
allowed_shell_integration_values = frozenset({'enabled', 'disabled', 'no-rc', 'no-cursor', 'no-title', 'no-prompt-mark', 'no-complete', 'no-cwd'})
|
||||
allowed_shell_integration_values = frozenset({'enabled', 'disabled', 'no-rc', 'no-cursor', 'no-title', 'no-prompt-mark', 'no-complete', 'no-cwd', 'no-sudo'})
|
||||
|
||||
|
||||
def shell_integration(x: str) -> FrozenSet[str]:
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ fi
|
|||
# which is not available on older bash
|
||||
builtin declare -A _ksi_prompt
|
||||
_ksi_prompt=(
|
||||
[cursor]='y' [title]='y' [mark]='y' [complete]='y' [cwd]='y' [ps0]='' [ps0_suffix]='' [ps1]='' [ps1_suffix]='' [ps2]=''
|
||||
[cursor]='y' [title]='y' [mark]='y' [complete]='y' [cwd]='y' [sudo]='y' [ps0]='' [ps0_suffix]='' [ps1]='' [ps1_suffix]='' [ps2]=''
|
||||
[hostname_prefix]='' [sourced]='y' [last_reported_cwd]=''
|
||||
)
|
||||
|
||||
|
|
@ -89,6 +89,7 @@ _ksi_main() {
|
|||
"no-prompt-mark") _ksi_prompt[mark]='n';;
|
||||
"no-complete") _ksi_prompt[complete]='n';;
|
||||
"no-cwd") _ksi_prompt[cwd]='n';;
|
||||
"no-sudo") _ksi_prompt[sudo]='n';;
|
||||
esac
|
||||
done
|
||||
IFS="$ifs"
|
||||
|
|
@ -211,6 +212,11 @@ _ksi_main() {
|
|||
|
||||
builtin alias edit-in-kitty="kitten edit-in-kitty"
|
||||
|
||||
if [[ "${_ksi_prompt[sudo]}" == "y" ]]; then
|
||||
# Ensure terminfo is available in sudo
|
||||
[[ -n "$TERMINFO" ]] && builtin alias sudo="sudo TERMINFO=\"$TERMINFO\""
|
||||
fi
|
||||
|
||||
if [[ "${_ksi_prompt[complete]}" == "y" ]]; then
|
||||
_ksi_completions() {
|
||||
builtin local src
|
||||
|
|
|
|||
|
|
@ -108,6 +108,13 @@ function __ksi_schedule --on-event fish_prompt -d "Setup kitty integration after
|
|||
__update_cwd_osc
|
||||
end
|
||||
|
||||
if not contains "no-sudo" $_ksi
|
||||
# Ensure terminfo is available in sudo
|
||||
if test -n "$TERMINFO"
|
||||
alias sudo="sudo TERMINFO=\"$TERMINFO\""
|
||||
end
|
||||
end
|
||||
|
||||
# Handle clone launches
|
||||
if test -n "$KITTY_IS_CLONE_LAUNCH"
|
||||
set --local orig_conda_env "$CONDA_DEFAULT_ENV"
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ precmd_functions+=(_ksi_deferred_init)
|
|||
_ksi_deferred_init() {
|
||||
builtin emulate -L zsh -o no_warn_create_global -o no_aliases
|
||||
|
||||
# Recognized options: no-cursor, no-title, no-prompt-mark, no-complete, no-cwd.
|
||||
# Recognized options: no-cursor, no-title, no-prompt-mark, no-complete, no-cwd, no-sudo.
|
||||
builtin local -a opt
|
||||
opt=(${(s: :)KITTY_SHELL_INTEGRATION})
|
||||
builtin unset KITTY_SHELL_INTEGRATION
|
||||
|
|
@ -388,6 +388,11 @@ _ksi_deferred_init() {
|
|||
|
||||
builtin alias edit-in-kitty="kitten edit-in-kitty"
|
||||
|
||||
if (( ! opt[(Ie)no-sudo] )); then
|
||||
# Ensure terminfo is available in sudo
|
||||
[[ -n "$TERMINFO" ]] && builtin alias sudo="sudo TERMINFO=\"$TERMINFO\""
|
||||
fi
|
||||
|
||||
# Map alt+left/right to move by word if not already mapped. This is expected behavior on macOS and I am tired
|
||||
# of answering questions about it.
|
||||
[[ $(builtin bindkey "^[[1;3C") == *" undefined-key" ]] && builtin bindkey "^[[1;3C" "forward-word"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue