about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-07-25 18:42:24 +0200
committerbptato <nincsnevem662@gmail.com>2022-07-25 18:42:24 +0200
commit7469a7428807d2ffff0000d54d12e209a189d973 (patch)
treebb36c12400e475d7249404c422dbbac7ff8b84a7
parentfce9adc58cc762d6f70c1d34ac97efddd171edc7 (diff)
downloadchawan-7469a7428807d2ffff0000d54d12e209a189d973.tar.gz
Incremental search fixes
-rw-r--r--src/client.nim3
-rw-r--r--src/js/regex.nim4
-rw-r--r--src/layout/engine.nim1
-rw-r--r--src/strings/charset.nim2
4 files changed, 6 insertions, 4 deletions
diff --git a/src/client.nim b/src/client.nim
index 8962f684..5d033458 100644
--- a/src/client.nim
+++ b/src/client.nim
@@ -320,9 +320,11 @@ proc isearch(client: Client) =
       let match = client.buffer.cursorNextMatch(regex.get)
       if match.success:
         mark = client.buffer.addMark(match.x, match.y, match.str.width())
+        my = match.y
         client.buffer.redraw = true
         client.buffer.refreshBuffer(true)
         print(HVP(client.buffer.height + 1, 2))
+        print(SGR())
       else:
         del_mark
       return true
@@ -358,6 +360,7 @@ proc isearchBack(client: Client) =
         client.buffer.redraw = true
         client.buffer.refreshBuffer(true)
         print(HVP(client.buffer.height + 1, 2))
+        print(SGR())
       else:
         del_mark
       return true
diff --git a/src/js/regex.nim b/src/js/regex.nim
index 75ff7535..dcaf1729 100644
--- a/src/js/regex.nim
+++ b/src/js/regex.nim
@@ -127,12 +127,12 @@ proc exec*(regex: Regex, str: string, start = 0): RegexResult =
         var e8 = 0
         var i = 0
         var r: Rune
-        while i < s:
+        while i < s and i < ustr.len:
           fastRuneAt(ustr, i, r)
           let si = r.size()
           s8 += si
           e8 += si
-        while i < e:
+        while i < e and i < ustr.len:
           fastRuneAt(ustr, i, r)
           e8 += r.size()
         result.captures.add((s8, e8))
diff --git a/src/layout/engine.nim b/src/layout/engine.nim
index 7b56d00b..5e2ae857 100644
--- a/src/layout/engine.nim
+++ b/src/layout/engine.nim
@@ -462,7 +462,6 @@ proc buildInlineBlock(builder: InlineBlockBoxBuilder, parent: InlineContext, par
   else:
     result.bctx.buildBlockLayout(blockbuilder.children, blockbuilder.node)
 
-  let preferred = preferredDimensions(builder.computed, parent.viewport, parentWidth, parentHeight)
   let pwidth = builder.computed{"width"}
   if pwidth.auto:
     # Half-baked shrink-to-fit
diff --git a/src/strings/charset.nim b/src/strings/charset.nim
index 8726268a..4b293b95 100644
--- a/src/strings/charset.nim
+++ b/src/strings/charset.nim
@@ -39,7 +39,7 @@ template fastRuneAt*(s: string16, i: int, r: untyped, doInc = true, be = false)
     else:
       var c1: uint32 = uint32(s[i]) + (uint32(s[i + 1]) shl 8)
     if c1 >= 0xD800 or c1 < 0xDC00:
-      if i + 3 == s.len:
+      if i + 2 == s.len or i + 3 == s.len:
         when doInc: i += 2
         r = Rune(c1) # unmatched surrogate
       else: