refactor(shell): normalize identifiers in initialization scripts

This commit is contained in:
L. Yeung 2024-07-15 10:59:13 +08:00 committed by Jan De Dobbeleer
parent ec2c6fb2d8
commit 2585b90946
3 changed files with 92 additions and 92 deletions

View file

@ -4,19 +4,19 @@ export POWERLINE_COMMAND="oh-my-posh"
export POSH_PID=$$
export CONDA_PROMPT_MODIFIER=false
omp_start_time=""
omp_stack_count=0
omp_elapsed=-1
omp_no_exit_code="true"
omp_ret=0
omp_pipe_status=0
_omp_start_time=""
_omp_stack_count=0
_omp_elapsed=-1
_omp_no_exit_code="true"
_omp_status_cache=0
_omp_pipestatus_cache=0
# start timer on command start
PS0='${omp_start_time:0:$((omp_start_time="$(_omp_start_timer)",0))}$(_omp_ftcs_command_start)'
PS0='${_omp_start_time:0:$((_omp_start_time="$(_omp_start_timer)",0))}$(_omp_ftcs_command_start)'
# set secondary prompt
PS2="$(::OMP:: print secondary --config="$POSH_THEME" --shell=bash --shell-version="$BASH_VERSION")"
function _set_posh_cursor_position() {
function _omp_set_cursor_position() {
# not supported in Midnight Commander
# see https://github.com/JanDeDobbeleer/oh-my-posh/issues/3415
if [[ "::CURSOR::" != "true" ]] || [[ -v MC_SID ]]; then
@ -53,35 +53,35 @@ function set_poshcontext() {
# regular prompt
function _omp_hook() {
omp_ret=$? omp_pipe_status=(${PIPESTATUS[@]})
_omp_status_cache=$? _omp_pipestatus_cache=(${PIPESTATUS[@]})
if [[ "${#BP_PIPESTATUS[@]}" -ge "${#omp_pipe_status[@]}" ]]; then
omp_pipe_status=(${BP_PIPESTATUS[@]})
if [[ "${#BP_PIPESTATUS[@]}" -ge "${#_omp_pipestatus_cache[@]}" ]]; then
_omp_pipestatus_cache=(${BP_PIPESTATUS[@]})
fi
omp_stack_count=$((${#DIRSTACK[@]} - 1))
_omp_stack_count=$((${#DIRSTACK[@]} - 1))
if [[ "$omp_start_time" ]]; then
if [[ "$_omp_start_time" ]]; then
local omp_now=$(::OMP:: get millis --shell=bash)
omp_elapsed=$((omp_now - omp_start_time))
omp_start_time=""
omp_no_exit_code="false"
_omp_elapsed=$((omp_now - _omp_start_time))
_omp_start_time=""
_omp_no_exit_code="false"
fi
if [[ "${omp_pipe_status[-1]}" != "$omp_ret" ]]; then
omp_pipe_status=("$omp_ret")
if [[ "${_omp_pipestatus_cache[-1]}" != "$_omp_status_cache" ]]; then
_omp_pipestatus_cache=("$_omp_status_cache")
fi
set_poshcontext
_set_posh_cursor_position
_omp_set_cursor_position
PS1="$(::OMP:: print primary --config="$POSH_THEME" --shell=bash --shell-version="$BASH_VERSION" --status="$omp_ret" --pipestatus="${omp_pipe_status[*]}" --execution-time="$omp_elapsed" --stack-count="$omp_stack_count" --no-status="$omp_no_exit_code" --terminal-width="${COLUMNS-0}" | tr -d '\0')"
PS1="$(::OMP:: print primary --config="$POSH_THEME" --shell=bash --shell-version="$BASH_VERSION" --status="$_omp_status_cache" --pipestatus="${_omp_pipestatus_cache[*]}" --execution-time="$_omp_elapsed" --stack-count="$_omp_stack_count" --no-status="$_omp_no_exit_code" --terminal-width="${COLUMNS-0}" | tr -d '\0')"
}
# rprompt
_omp_rprompt() {
::OMP:: print right --config="$POSH_THEME" --shell=bash --shell-version="$BASH_VERSION" --status="$omp_ret" --pipestatus="${omp_pipe_status[*]}" --execution-time="$omp_elapsed" --stack-count="$omp_stack_count" --no-status="$omp_no_exit_code" --terminal-width="${COLUMNS-0}" | tr -d '\0'
return $omp_ret
function _omp_rprompt() {
::OMP:: print right --config="$POSH_THEME" --shell=bash --shell-version="$BASH_VERSION" --status="$_omp_status_cache" --pipestatus="${_omp_pipestatus_cache[*]}" --execution-time="$_omp_elapsed" --stack-count="$_omp_stack_count" --no-status="$_omp_no_exit_code" --terminal-width="${COLUMNS-0}" | tr -d '\0'
return $_omp_status_cache
}
if [[ "$TERM" != "linux" ]] && [[ -x "$(command -v ::OMP::)" ]] && ! [[ "$PROMPT_COMMAND" =~ "_omp_hook" ]]; then

View file

@ -3,12 +3,12 @@ set --export POSH_SHELL_VERSION $FISH_VERSION
set --global POWERLINE_COMMAND oh-my-posh
set --global POSH_PID $fish_pid
set --global CONDA_PROMPT_MODIFIER false
set --global omp_tooltip_command ''
set --global omp_current_rprompt ''
set --global omp_transient false
set --global _omp_tooltip_command ''
set --global _omp_current_rprompt ''
set --global _omp_transient false
# We use this to avoid unnecessary CLI calls for prompt repaint.
set --global omp_new_prompt true
set --global _omp_new_prompt true
# template function for context loading
function set_poshcontext
@ -24,37 +24,37 @@ function fish_prompt
# commandline --function repaint does not do this
# see https://github.com/fish-shell/fish-shell/issues/8418
printf \e\[0J
if test "$omp_transient" = true
::OMP:: print transient --config $POSH_THEME --shell fish --status $omp_status_cache --pipestatus="$omp_pipestatus_cache" --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION --no-status=$omp_no_exit_code
if test "$_omp_transient" = true
::OMP:: print transient --config $POSH_THEME --shell fish --status $_omp_status_cache --pipestatus="$_omp_pipestatus_cache" --execution-time $_omp_duration --stack-count $_omp_stack_count --shell-version $FISH_VERSION --no-status=$_omp_no_exit_code
return
end
if test "$omp_new_prompt" = false
echo -n "$omp_current_prompt"
if test "$_omp_new_prompt" = false
echo -n "$_omp_current_prompt"
return
end
set --global omp_status_cache $omp_status_cache_temp
set --global omp_pipestatus_cache $omp_pipestatus_cache_temp
set --global omp_stack_count (count $dirstack)
set --global omp_duration "$CMD_DURATION$cmd_duration"
set --global omp_no_exit_code false
set --global _omp_status_cache $omp_status_cache_temp
set --global _omp_pipestatus_cache $omp_pipestatus_cache_temp
set --global _omp_stack_count (count $dirstack)
set --global _omp_duration "$CMD_DURATION$cmd_duration"
set --global _omp_no_exit_code false
# check if variable set, < 3.2 case
if set --query omp_lastcommand; and test -z "$omp_lastcommand"
set omp_duration 0
set omp_no_exit_code true
if set --query _omp_last_command; and test -z "$_omp_last_command"
set _omp_duration 0
set _omp_no_exit_code true
end
# works with fish >=3.2
if set --query omp_last_status_generation; and test "$omp_last_status_generation" = "$status_generation"
set omp_duration 0
set omp_no_exit_code true
else if test -z "$omp_last_status_generation"
# first execution - $status_generation is 0, $omp_last_status_generation is empty
set omp_no_exit_code true
if set --query _omp_last_status_generation; and test "$_omp_last_status_generation" = "$status_generation"
set _omp_duration 0
set _omp_no_exit_code true
else if test -z "$_omp_last_status_generation"
# first execution - $status_generation is 0, $_omp_last_status_generation is empty
set _omp_no_exit_code true
end
if set --query status_generation
set --global omp_last_status_generation $status_generation
set --global _omp_last_status_generation $status_generation
end
set_poshcontext
@ -70,32 +70,32 @@ function fish_prompt
::PROMPT_MARK::
# The prompt is saved for possible reuse, typically a repaint after clearing the screen buffer.
set --global omp_current_prompt (::OMP:: print primary --config $POSH_THEME --shell fish --status $omp_status_cache --pipestatus="$omp_pipestatus_cache" --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION --cleared=$omp_cleared --no-status=$omp_no_exit_code | string collect)
echo -n "$omp_current_prompt"
set --global _omp_current_prompt (::OMP:: print primary --config $POSH_THEME --shell fish --status $_omp_status_cache --pipestatus="$_omp_pipestatus_cache" --execution-time $_omp_duration --stack-count $_omp_stack_count --shell-version $FISH_VERSION --cleared=$omp_cleared --no-status=$_omp_no_exit_code | string collect)
echo -n "$_omp_current_prompt"
end
function fish_right_prompt
if test "$omp_transient" = true
set omp_transient false
if test "$_omp_transient" = true
set _omp_transient false
return
end
# Repaint an existing right prompt.
if test "$omp_new_prompt" = false
echo -n "$omp_current_rprompt"
if test "$_omp_new_prompt" = false
echo -n "$_omp_current_rprompt"
return
end
set omp_new_prompt false
set --global omp_current_rprompt (::OMP:: print right --config $POSH_THEME --shell fish --status $omp_status_cache --pipestatus="$omp_pipestatus_cache" --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION --no-status=$omp_no_exit_code | string join '')
echo -n "$omp_current_rprompt"
set _omp_new_prompt false
set --global _omp_current_rprompt (::OMP:: print right --config $POSH_THEME --shell fish --status $_omp_status_cache --pipestatus="$_omp_pipestatus_cache" --execution-time $_omp_duration --stack-count $_omp_stack_count --shell-version $FISH_VERSION --no-status=$_omp_no_exit_code | string join '')
echo -n "$_omp_current_rprompt"
end
function postexec_omp --on-event fish_postexec
function _omp_postexec --on-event fish_postexec
# works with fish <3.2
# pre and postexec not fired for empty command in fish >=3.2
set --global omp_lastcommand $argv
set --global _omp_last_command $argv
end
function preexec_omp --on-event fish_preexec
function _omp_preexec --on-event fish_preexec
if test "::FTCS_MARKS::" = true
echo -ne "\e]133;C\a"
end
@ -130,16 +130,16 @@ function _omp_space_key_handler
# Get the first word of command line as tip.
set --local tooltip_command (commandline --current-buffer | string trim -l | string split --allow-empty -f1 ' ' | string collect)
# Ignore an empty/repeated tooltip command.
if test -z "$tooltip_command" || test "$tooltip_command" = "$omp_tooltip_command"
if test -z "$tooltip_command" || test "$tooltip_command" = "$_omp_tooltip_command"
return
end
set omp_tooltip_command $tooltip_command
set --local tooltip_prompt (::OMP:: print tooltip --config $POSH_THEME --shell fish --status $omp_status_cache --pipestatus="$omp_pipestatus_cache" --execution-time $omp_duration --stack-count $omp_stack_count --shell-version $FISH_VERSION --command $omp_tooltip_command --no-status=$omp_no_exit_code | string join '')
set _omp_tooltip_command $tooltip_command
set --local tooltip_prompt (::OMP:: print tooltip --config $POSH_THEME --shell fish --status $_omp_status_cache --pipestatus="$_omp_pipestatus_cache" --execution-time $_omp_duration --stack-count $_omp_stack_count --shell-version $FISH_VERSION --command $_omp_tooltip_command --no-status=$_omp_no_exit_code | string join '')
if test -z "$tooltip_prompt"
return
end
# Save the tooltip prompt to avoid unnecessary CLI calls.
set omp_current_rprompt $tooltip_prompt
set _omp_current_rprompt $tooltip_prompt
commandline --function repaint
end
@ -156,10 +156,10 @@ function _omp_enter_key_handler
return
end
if commandline --is-valid || test -z (commandline --current-buffer | string trim -l | string collect)
set omp_new_prompt true
set omp_tooltip_command ''
set _omp_new_prompt true
set _omp_tooltip_command ''
if test "::TRANSIENT::" = true
set omp_transient true
set _omp_transient true
commandline --function repaint
end
end
@ -171,10 +171,10 @@ function _omp_ctrl_c_key_handler
return
end
# Render a transient prompt on Ctrl-C with non-empty command line buffer.
set omp_new_prompt true
set omp_tooltip_command ''
set _omp_new_prompt true
set _omp_tooltip_command ''
if test "::TRANSIENT::" = true
set omp_transient true
set _omp_transient true
commandline --function repaint
end
commandline --function cancel-commandline

View file

@ -9,7 +9,7 @@ export ZLE_RPROMPT_INDENT=0
# set secondary prompt
PS2="$(::OMP:: print secondary --config="$POSH_THEME" --shell=zsh)"
function _set_posh_cursor_position() {
function _omp_set_cursor_position() {
# not supported in Midnight Commander
# see https://github.com/JanDeDobbeleer/oh-my-posh/issues/3415
if [[ "::CURSOR::" != "true" ]] || [[ -v MC_SID ]]; then
@ -36,45 +36,45 @@ function set_poshcontext() {
return
}
function prompt_ohmyposh_preexec() {
function _omp_preexec() {
if [[ "::FTCS_MARKS::" = "true" ]]; then
printf "\033]133;C\007"
fi
omp_start_time=$(::OMP:: get millis)
_omp_start_time=$(::OMP:: get millis)
}
function prompt_ohmyposh_precmd() {
omp_status_cache=$?
omp_pipestatus_cache=(${pipestatus[@]})
omp_stack_count=${#dirstack[@]}
omp_elapsed=-1
omp_no_exit_code="true"
function _omp_precmd() {
_omp_status_cache=$?
_omp_pipestatus_cache=(${pipestatus[@]})
_omp_stack_count=${#dirstack[@]}
_omp_elapsed=-1
_omp_no_exit_code="true"
if [ $omp_start_time ]; then
if [ $_omp_start_time ]; then
local omp_now=$(::OMP:: get millis --shell=zsh)
omp_elapsed=$(($omp_now - $omp_start_time))
omp_no_exit_code="false"
_omp_elapsed=$(($omp_now - $_omp_start_time))
_omp_no_exit_code="false"
fi
if [[ "${omp_pipestatus_cache[-1]}" != "$omp_status_cache" ]]; then
omp_pipestatus_cache=("$omp_status_cache")
if [[ "${_omp_pipestatus_cache[-1]}" != "$_omp_status_cache" ]]; then
_omp_pipestatus_cache=("$_omp_status_cache")
fi
count=$((POSH_PROMPT_COUNT + 1))
export POSH_PROMPT_COUNT=$count
set_poshcontext
_set_posh_cursor_position
_omp_set_cursor_position
eval "$(::OMP:: print primary --config="$POSH_THEME" --status="$omp_status_cache" --pipestatus="${omp_pipestatus_cache[*]}" --execution-time="$omp_elapsed" --stack-count="$omp_stack_count" --eval --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$omp_no_exit_code")"
unset omp_start_time
eval "$(::OMP:: print primary --config="$POSH_THEME" --status="$_omp_status_cache" --pipestatus="${_omp_pipestatus_cache[*]}" --execution-time="$_omp_elapsed" --stack-count="$_omp_stack_count" --eval --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$_omp_no_exit_code")"
unset _omp_start_time
}
# add hook functions
autoload -Uz add-zsh-hook
add-zsh-hook precmd prompt_ohmyposh_precmd
add-zsh-hook preexec prompt_ohmyposh_preexec
add-zsh-hook precmd _omp_precmd
add-zsh-hook preexec _omp_preexec
# Prevent incorrect behaviors when the initialization is executed twice in current session.
function _omp_cleanup() {
@ -105,12 +105,12 @@ function _omp_render_tooltip() {
local tooltip_command=${${(MS)BUFFER##[[:graph:]]*}%%[[:space:]]*}
# Ignore an empty/repeated tooltip command.
if [[ -z "$tooltip_command" ]] || [[ "$tooltip_command" = "$omp_tooltip_command" ]]; then
if [[ -z "$tooltip_command" ]] || [[ "$tooltip_command" = "$_omp_tooltip_command" ]]; then
return
fi
omp_tooltip_command="$tooltip_command"
local tooltip=$(::OMP:: print tooltip --config="$POSH_THEME" --status="$omp_status_cache" --pipestatus="${omp_pipestatus_cache[*]}" --execution-time="$omp_elapsed" --stack-count="$omp_stack_count" --command="$tooltip_command" --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$omp_no_exit_code")
_omp_tooltip_command="$tooltip_command"
local tooltip=$(::OMP:: print tooltip --config="$POSH_THEME" --status="$_omp_status_cache" --pipestatus="${_omp_pipestatus_cache[*]}" --execution-time="$_omp_elapsed" --stack-count="$_omp_stack_count" --command="$tooltip_command" --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$_omp_no_exit_code")
if [[ -z "$tooltip" ]]; then
return
fi
@ -128,8 +128,8 @@ function _omp_zle-line-init() {
local -i ret=$?
(( $+zle_bracketed_paste )) && print -r -n - $zle_bracketed_paste[2]
omp_tooltip_command=''
eval "$(::OMP:: print transient --config="$POSH_THEME" --status="$omp_status_cache" --pipestatus="${omp_pipestatus_cache[*]}" --execution-time="$omp_elapsed" --stack-count="$omp_stack_count" --eval --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$omp_no_exit_code")"
_omp_tooltip_command=''
eval "$(::OMP:: print transient --config="$POSH_THEME" --status="$_omp_status_cache" --pipestatus="${_omp_pipestatus_cache[*]}" --execution-time="$_omp_elapsed" --stack-count="$_omp_stack_count" --eval --shell=zsh --shell-version="$ZSH_VERSION" --no-status="$_omp_no_exit_code")"
zle .reset-prompt
# Exit the shell if we receive EOT.