1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-12-18 10:22:00 +00:00

fix(cli): change unrecognized \s in BSD awk (#11146)

In BSD awk, \s is not a valid sequence interchangeable with "space or tab characters"
as it is in GNU awk. This fix uses [ \t] instead, which is all the possibilities that
we need to contemplate when reading the .zshrc file.

Fixes #11146
This commit is contained in:
Marc Cornellà 2022-10-03 18:52:50 +02:00
parent ee4910e3b3
commit b9be3a43b4

View file

@ -241,21 +241,21 @@ function _omz::plugin::disable {
# Remove plugins substitution awk script # Remove plugins substitution awk script
local awk_subst_plugins="\ local awk_subst_plugins="\
gsub(/\s+(${(j:|:)dis_plugins})/, \"\") # with spaces before gsub(/[ \t]+(${(j:|:)dis_plugins})/, \"\") # with spaces before
gsub(/(${(j:|:)dis_plugins})\s+/, \"\") # with spaces after gsub(/(${(j:|:)dis_plugins})[ \t]+/, \"\") # with spaces after
gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin) gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin)
" "
# Disable plugins awk script # Disable plugins awk script
local awk_script=" local awk_script="
# if plugins=() is in oneline form, substitute disabled plugins and go to next line # if plugins=() is in oneline form, substitute disabled plugins and go to next line
/^\s*plugins=\([^#]+\).*\$/ { /^[ \t]*plugins=\([^#]+\).*\$/ {
$awk_subst_plugins $awk_subst_plugins
print \$0 print \$0
next next
} }
# if plugins=() is in multiline form, enable multi flag and disable plugins if they're there # if plugins=() is in multiline form, enable multi flag and disable plugins if they're there
/^\s*plugins=\(/ { /^[ \t]*plugins=\(/ {
multi=1 multi=1
$awk_subst_plugins $awk_subst_plugins
print \$0 print \$0
@ -330,14 +330,14 @@ function _omz::plugin::enable {
# Enable plugins awk script # Enable plugins awk script
local awk_script=" local awk_script="
# if plugins=() is in oneline form, substitute ) with new plugins and go to the next line # if plugins=() is in oneline form, substitute ) with new plugins and go to the next line
/^\s*plugins=\([^#]+\).*\$/ { /^[ \t]*plugins=\([^#]+\).*\$/ {
sub(/\)/, \" $add_plugins&\") sub(/\)/, \" $add_plugins&\")
print \$0 print \$0
next next
} }
# if plugins=() is in multiline form, enable multi flag # if plugins=() is in multiline form, enable multi flag
/^\s*plugins=\(/ { /^[ \t]*plugins=\(/ {
multi=1 multi=1
} }
@ -699,9 +699,9 @@ function _omz::theme::set {
# Enable theme in .zshrc # Enable theme in .zshrc
local awk_script=' local awk_script='
!set && /^\s*ZSH_THEME=[^#]+.*$/ { !set && /^[ \t]*ZSH_THEME=[^#]+.*$/ {
set=1 set=1
sub(/^\s*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`") sub(/^[ \t]*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`")
print $0 print $0
next next
} }