mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-25 04:26:08 +02:00
perf(termsupport): don't re-encode the cwd URL on every prompt
`omz_termsupport_cwd` percent-encoded $HOST and $PWD on every prompt, each through a command substitution that forks a subshell. Keep the encoded URL and only recompute it when $HOST or $PWD changed. The OSC 7 sequence is still emitted on every prompt as before. Output verified identical for paths with spaces, unicode and `&`, for the root directory, for Konsole (host omitted) and after a host change. Measured on macOS arm64, zsh 5.9: ~2-9 ms -> 0.03 ms per prompt when the directory is unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
426650fbe8
commit
f9cba205e1
+13
-7
@@ -146,16 +146,22 @@ esac
|
||||
# the host name to disambiguate local vs. remote paths.
|
||||
function omz_termsupport_cwd {
|
||||
setopt localoptions unset
|
||||
# Percent-encode the host and path names.
|
||||
local URL_HOST URL_PATH
|
||||
URL_HOST="$(omz_urlencode -P $HOST)" || return 1
|
||||
URL_PATH="$(omz_urlencode -P $PWD)" || return 1
|
||||
# Percent-encode the host and path names. Encoding forks a subshell each,
|
||||
# so keep the result and only redo it when $HOST or $PWD changed.
|
||||
if [[ "$_omz_termsupport_cwd_key" != "$HOST:$PWD" ]]; then
|
||||
local URL_HOST URL_PATH
|
||||
URL_HOST="$(omz_urlencode -P $HOST)" || return 1
|
||||
URL_PATH="$(omz_urlencode -P $PWD)" || return 1
|
||||
|
||||
# Konsole errors if the HOST is provided
|
||||
[[ -z "$KONSOLE_PROFILE_NAME" && -z "$KONSOLE_DBUS_SESSION" ]] || URL_HOST=""
|
||||
# Konsole errors if the HOST is provided
|
||||
[[ -z "$KONSOLE_PROFILE_NAME" && -z "$KONSOLE_DBUS_SESSION" ]] || URL_HOST=""
|
||||
|
||||
typeset -g _omz_termsupport_cwd_key="$HOST:$PWD"
|
||||
typeset -g _omz_termsupport_cwd_url="file://${URL_HOST}${URL_PATH}"
|
||||
fi
|
||||
|
||||
# common control sequence (OSC 7) to set current host and path
|
||||
printf "\e]7;file://%s%s\e\\" "${URL_HOST}" "${URL_PATH}"
|
||||
printf "\e]7;%s\e\\" "$_omz_termsupport_cwd_url"
|
||||
}
|
||||
|
||||
# Use a precmd hook instead of a chpwd hook to avoid contaminating output
|
||||
|
||||
Reference in New Issue
Block a user