b9be3a43b4da579299b4426b1ba9121f746e2555

Author
Marc Cornellà <hello@mcornella.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

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

Diff

 1diff --git a/lib/cli.zsh b/lib/cli.zsh
 2index db659c11fee153debee82fd26bb82af84e1d1ecd..f15bd6d6307747bf8d922834287ab03cce093a27 100644
 3--- a/lib/cli.zsh
 4+++ b/lib/cli.zsh
 5@@ -241,21 +241,21 @@ function _omz::plugin::disable {
 6 
 7   # Remove plugins substitution awk script
 8   local awk_subst_plugins="\
 9-  gsub(/\s+(${(j:|:)dis_plugins})/, \"\") # with spaces before
10-  gsub(/(${(j:|:)dis_plugins})\s+/, \"\") # with spaces after
11+  gsub(/[ \t]+(${(j:|:)dis_plugins})/, \"\") # with spaces before
12+  gsub(/(${(j:|:)dis_plugins})[ \t]+/, \"\") # with spaces after
13   gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin)
14 "
15   # Disable plugins awk script
16   local awk_script="
17 # if plugins=() is in oneline form, substitute disabled plugins and go to next line
18-/^\s*plugins=\([^#]+\).*\$/ {
19+/^[ \t]*plugins=\([^#]+\).*\$/ {
20   $awk_subst_plugins
21   print \$0
22   next
23 }
24 
25 # if plugins=() is in multiline form, enable multi flag and disable plugins if they're there
26-/^\s*plugins=\(/ {
27+/^[ \t]*plugins=\(/ {
28   multi=1
29   $awk_subst_plugins
30   print \$0
31@@ -330,14 +330,14 @@ function _omz::plugin::enable {
32   # Enable plugins awk script
33   local awk_script="
34 # if plugins=() is in oneline form, substitute ) with new plugins and go to the next line
35-/^\s*plugins=\([^#]+\).*\$/ {
36+/^[ \t]*plugins=\([^#]+\).*\$/ {
37   sub(/\)/, \" $add_plugins&\")
38   print \$0
39   next
40 }
41 
42 # if plugins=() is in multiline form, enable multi flag
43-/^\s*plugins=\(/ {
44+/^[ \t]*plugins=\(/ {
45   multi=1
46 }
47 
48@@ -699,9 +699,9 @@ function _omz::theme::set {
49 
50   # Enable theme in .zshrc
51   local awk_script='
52-!set && /^\s*ZSH_THEME=[^#]+.*$/ {
53+!set && /^[ \t]*ZSH_THEME=[^#]+.*$/ {
54   set=1
55-  sub(/^\s*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`")
56+  sub(/^[ \t]*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`")
57   print $0
58   next
59 }