From 98a8ec6f31c1ba0be1b66cb592df76934c4eb3a4 Mon Sep 17 00:00:00 2001
From: Roman Perepelitsa <roman.perepelitsa@gmail.com>
Date: Wed, 25 Nov 2020 16:36:03 +0100
Subject: prompt_length cleanup

---
 internal/p10k.zsh   | 22 ++++++++++------------
 internal/wizard.zsh | 11 +++++------
 2 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index acbbbfd1..2e19eec4 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -300,20 +300,19 @@ function _p9k_upglob() {
 #   _p9k_prompt_length '%F{red}abc' => 3
 #   _p9k_prompt_length $'%{a\b%Gb%}' => 1
 function _p9k_prompt_length() {
-  local COLUMNS=1024
+  local -i COLUMNS=1024
   local -i x y=$#1 m
   if (( y )); then
     while (( ${${(%):-$1%$y(l.1.0)}[-1]} )); do
       x=y
-      (( y *= 2 ));
+      (( y *= 2 ))
     done
-    local xy
     while (( y > x + 1 )); do
-      m=$(( x + (y - x) / 2 ))
-      typeset ${${(%):-$1%$m(l.x.y)}[-1]}=$m
+      (( m = x + (y - x) / 2 ))
+      (( ${${(%):-$1%$m(l.x.y)}[-1]} = m ))
     done
   fi
-  _p9k__ret=$x
+  typeset -g _p9k__ret=$x
 }
 
 typeset -gr __p9k_byte_suffix=('B' 'K' 'M' 'G' 'T' 'P' 'E' 'Z' 'Y')
@@ -6005,20 +6004,19 @@ _p9k_dump_instant_prompt() {
   (( height += ${#${__p9k_used_instant_prompt[1]//[^$lf]}} ))
   local _p9k__ret
   function _p9k_prompt_length() {
-    local COLUMNS=1024
+    local -i COLUMNS=1024
     local -i x y=$#1 m
     if (( y )); then
       while (( ${${(%):-$1%$y(l.1.0)}[-1]} )); do
         x=y
-        (( y *= 2 ));
+        (( y *= 2 ))
       done
-      local xy
       while (( y > x + 1 )); do
-        m=$(( x + (y - x) / 2 ))
-        typeset ${${(%):-$1%$m(l.x.y)}[-1]}=$m
+        (( m = x + (y - x) / 2 ))
+        (( ${${(%):-$1%$m(l.x.y)}[-1]} = m ))
       done
     fi
-    _p9k__ret=$x
+    typeset -g _p9k__ret=$x
   }
   local out
   if [[ $+VTE_VERSION == 0 && $TERM_PROGRAM != Hyper ]] || (( ! $+_p9k__g )); then
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index 7562c2bc..39edc089 100644
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -110,20 +110,19 @@ local -ra rainbow_right=(
 )
 
 function prompt_length() {
-  local COLUMNS=1024
+  local -i COLUMNS=1024
   local -i x y=$#1 m
   if (( y )); then
     while (( ${${(%):-$1%$y(l.1.0)}[-1]} )); do
       x=y
-      (( y *= 2 ));
+      (( y *= 2 ))
     done
-    local xy
     while (( y > x + 1 )); do
-      m=$(( x + (y - x) / 2 ))
-      typeset ${${(%):-$1%$m(l.x.y)}[-1]}=$m
+      (( m = x + (y - x) / 2 ))
+      (( ${${(%):-$1%$m(l.x.y)}[-1]} = m ))
     done
   fi
-  REPLY=$x
+  typeset -g REPLY=$x
 }
 
 function print_prompt() {
-- 
cgit v1.2.3