Compare commits

2 Commits

Author SHA1 Message Date
1f5b1d841b Update prompt to support Modular dev env 2026-03-05 11:35:20 +00:00
719ce5f992 Remove bindkeys from autoenv snapshots
This turned out to be a buggy mess so will be handled manually in
`.exit` files
2026-03-05 11:34:43 +00:00
2 changed files with 7 additions and 26 deletions

View File

@@ -134,9 +134,8 @@ _autoenv_entered=()
# Per-directory shell state snapshots for computing enter/exit diffs. # Per-directory shell state snapshots for computing enter/exit diffs.
typeset -gA _autoenv_snap_pre_funcs _autoenv_snap_pre_aliases _autoenv_snap_pre_env typeset -gA _autoenv_snap_pre_funcs _autoenv_snap_pre_aliases _autoenv_snap_pre_env
typeset -gA _autoenv_snap_pre_path _autoenv_snap_pre_ps1 _autoenv_snap_pre_bindkeys typeset -gA _autoenv_snap_pre_path _autoenv_snap_pre_ps1
typeset -gA _autoenv_snap_diff_funcs _autoenv_snap_diff_aliases _autoenv_snap_diff_env typeset -gA _autoenv_snap_diff_funcs _autoenv_snap_diff_aliases _autoenv_snap_diff_env
typeset -gA _autoenv_snap_new_bindkeys
# Snapshot shell state before .enter modifications. Call in .enter BEFORE # Snapshot shell state before .enter modifications. Call in .enter BEFORE
# sourcing scripts: _autoenv_snap_pre ${0:A:h} # sourcing scripts: _autoenv_snap_pre ${0:A:h}
@@ -147,7 +146,6 @@ _autoenv_snap_pre() {
_autoenv_snap_pre_env[$dir]="${(F)$(typeset +gx 2>/dev/null)}" _autoenv_snap_pre_env[$dir]="${(F)$(typeset +gx 2>/dev/null)}"
_autoenv_snap_pre_path[$dir]="$PATH" _autoenv_snap_pre_path[$dir]="$PATH"
_autoenv_snap_pre_ps1[$dir]="$PS1" _autoenv_snap_pre_ps1[$dir]="$PS1"
_autoenv_snap_pre_bindkeys[$dir]="$(bindkey -L)"
} }
# Snapshot shell state after .enter modifications and compute the diff. # Snapshot shell state after .enter modifications and compute the diff.
@@ -170,20 +168,6 @@ _autoenv_snap_post() {
_autoenv_snap_diff_funcs[$dir]="${(pj:\n:)diff_funcs}" _autoenv_snap_diff_funcs[$dir]="${(pj:\n:)diff_funcs}"
_autoenv_snap_diff_aliases[$dir]="${(pj:\n:)diff_aliases}" _autoenv_snap_diff_aliases[$dir]="${(pj:\n:)diff_aliases}"
_autoenv_snap_diff_env[$dir]="${(pj:\n:)diff_env}" _autoenv_snap_diff_env[$dir]="${(pj:\n:)diff_env}"
# Diff bindkeys: find truly new bindings (key sequence didn't exist in pre).
# Changed bindings (same key, different widget) are restored via eval of pre.
local -a pre_bk=("${(f)_autoenv_snap_pre_bindkeys[$dir]}")
typeset -A pre_keyspecs
local bkline
for bkline in "${pre_bk[@]}"; do
[[ -n "$bkline" ]] && pre_keyspecs[${bkline% *}]=1
done
local -a new_bk=()
for bkline in "${(f)$(bindkey -L)}"; do
(( ${pre_bk[(Ie)$bkline]} )) && continue
(( ${+pre_keyspecs[${bkline% *}]} )) || new_bk+="$bkline"
done
_autoenv_snap_new_bindkeys[$dir]="${(pj:\n:)new_bk}"
unset "_autoenv_snap_pre_funcs[$dir]" "_autoenv_snap_pre_aliases[$dir]" \ unset "_autoenv_snap_pre_funcs[$dir]" "_autoenv_snap_pre_aliases[$dir]" \
"_autoenv_snap_pre_env[$dir]" "_autoenv_snap_pre_env[$dir]"
} }
@@ -203,17 +187,10 @@ _autoenv_snap_restore() {
done done
PATH="${_autoenv_snap_pre_path[$dir]}" PATH="${_autoenv_snap_pre_path[$dir]}"
PS1="${_autoenv_snap_pre_ps1[$dir]}" PS1="${_autoenv_snap_pre_ps1[$dir]}"
# Restore changed bindkeys to their pre values.
eval "${_autoenv_snap_pre_bindkeys[$dir]}"
# Remove truly new bindkeys (key sequence didn't exist before .enter).
local bkline
for bkline in "${(f)_autoenv_snap_new_bindkeys[$dir]}"; do
[[ -n "$bkline" ]] && eval "${${bkline% *}/bindkey/bindkey -r}"
done
unset "_autoenv_snap_pre_path[$dir]" "_autoenv_snap_pre_ps1[$dir]" \ unset "_autoenv_snap_pre_path[$dir]" "_autoenv_snap_pre_ps1[$dir]" \
"_autoenv_snap_pre_bindkeys[$dir]" "_autoenv_snap_new_bindkeys[$dir]" \
"_autoenv_snap_diff_funcs[$dir]" "_autoenv_snap_diff_aliases[$dir]" \ "_autoenv_snap_diff_funcs[$dir]" "_autoenv_snap_diff_aliases[$dir]" \
"_autoenv_snap_diff_env[$dir]" "_autoenv_snap_diff_env[$dir]"
prompt "${prompt_theme[@]}"
} }
# Load zstat from stat module for inspecting modified time. # Load zstat from stat module for inspecting modified time.

View File

@@ -144,8 +144,12 @@ fresh_line_one() {
local docker=" %{%F{6}%}$DOCKER_MACHINE_NAME%{%f%}" local docker=" %{%F{6}%}$DOCKER_MACHINE_NAME%{%f%}"
fi fi
if [[ ! -z "$MODULAR_PATH" ]]; then
local modular=" 🔥"
fi
# Print the first line of the prompt # Print the first line of the prompt
print -P "$time_stamp $directory$git$py$docker$result" print -P "$time_stamp $directory$git$py$docker$modular$result"
} }
# Executed before each prompt. # Executed before each prompt.