Deriving SHORT_HOST from a .local suffix assumed $HOST came from
LocalHostName, but macOS lets HostName be set independently, so a
HostName ending in .local would change SHORT_HOST and with it the
zcompdump name and the ssh-agent and keychain cache identities.
Ask scutil as before, but remember its answer against the $HOST it was
looked up for, so the fork only happens when $HOST changes. An
unreadable, empty or unwritable cache falls back to forking every time,
which is today's behaviour.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
On macOS `scutil --get LocalHostName` was run on every startup to get a
stable short hostname for the zcompdump filename. When $HOST is the
Bonjour name (`<LocalHostName>.local`), which is the common case, the
LocalHostName is just $HOST without the suffix, so use that directly and
keep the scutil lookup for hosts that got a different name from DHCP.
Measured on macOS arm64, zsh 5.9: 6 ms -> 0.2 ms per interactive start.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Double quotes within the subscript test are interpreted literally, making the
test never match. On subsequent runs, the `$ZSH_CACHE_DIR/completions` directory
is always prepended to `$fpath`, even if it is already there. This commit fixes
that.
Fixes#12551
Co-authored-by: Adem Simsek <adem@simsek.dev>
Fix regression introduced in #11550. If an existing alias was present in
the moment of sourcing, and oh-my-zsh aliases were disabled for that
file, it'd be overwritten aswell. See #11658.
BREAKING CHANGE: the previous zstyle setting to disable `lib/directories.zsh` aliases has
been changed to the new syntax: `zstyle ':omz:lib:directories' aliases no`. See
https://github.com/ohmyzsh/ohmyzsh#skip-aliases to see other ways you can use this setting.
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
This fixes an edge case where the user actually sets
zstyle ':completion:*' list-colors
in their zshrc, but the previous code used a precmd hook, which would
override the user changes. With this change our modifications will be
set in the init script, after the theme loads, so that later changes
can affect our defaults.
Note that this will not be run for users on plugin managers, as these
don't generally run our init script.
The statements for selecting a random theme in oh-my-zsh.sh and the themes
plugin are duplicate. Most people eventually settle on a theme, making those
lines in oh-my-zsh.sh superfluous. To address those, it may makes sense to put
the random theme functionality into a theme of its own (since themes are just
zsh scripts.