summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2024-10-08 19:32:04 +0200
committerMarc Cornellà <marc@mcornella.com>2024-10-08 19:32:04 +0200
commit767c927a6dd2853439696a0ca229c5d78be249a1 (patch)
treee5b81e4fc804cd74f20c646fd4dbefe5b4c02bdf /lib
parentd59f2fac36ac7d83d33c0054b1de33cce54e3210 (diff)
downloadzsh-767c927a6dd2853439696a0ca229c5d78be249a1.tar.gz
zsh-767c927a6dd2853439696a0ca229c5d78be249a1.tar.bz2
zsh-767c927a6dd2853439696a0ca229c5d78be249a1.zip
fix(cli): add plugins with indentation in `omz plugin enable`
Diffstat (limited to 'lib')
-rw-r--r--lib/cli.zsh26
1 files changed, 23 insertions, 3 deletions
diff --git a/lib/cli.zsh b/lib/cli.zsh
index d1896f18d..38a84840c 100644
--- a/lib/cli.zsh
+++ b/lib/cli.zsh
@@ -344,20 +344,40 @@ function _omz::plugin::enable {
next
}
-# if plugins=() is in multiline form, enable multi flag
+# if plugins=() is in multiline form, enable multi flag and indent by default with 2 spaces
/^[ \t]*plugins=\(/ {
multi=1
+ indent=\" \"
+ print \$0
+ next
}
# if multi flag is enabled and we find a valid closing parenthesis,
-# add new plugins and disable multi flag
+# add new plugins with proper indent and disable multi flag
multi == 1 && /^[^#]*\)/ {
multi=0
- sub(/\)/, \" $add_plugins&\")
+ split(\"$add_plugins\",p,\" \")
+ for (i in p) {
+ print indent p[i]
+ }
print \$0
next
}
+# if multi flag is enabled and we didnt find a closing parenthesis,
+# get the indentation level to match when adding plugins
+multi == 1 && /^[^#]*/ {
+ indent=\"\"
+ for (i = 1; i <= length(\$0); i++) {
+ char=substr(\$0, i, 1)
+ if (char == \" \" || char == \"\t\") {
+ indent = indent char
+ } else {
+ break
+ }
+ }
+}
+
{ print \$0 }
"