diff options
author | bptato <nincsnevem662@gmail.com> | 2022-07-25 18:42:24 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2022-07-25 18:42:24 +0200 |
commit | 7469a7428807d2ffff0000d54d12e209a189d973 (patch) | |
tree | bb36c12400e475d7249404c422dbbac7ff8b84a7 | |
parent | fce9adc58cc762d6f70c1d34ac97efddd171edc7 (diff) | |
download | chawan-7469a7428807d2ffff0000d54d12e209a189d973.tar.gz |
Incremental search fixes
-rw-r--r-- | src/client.nim | 3 | ||||
-rw-r--r-- | src/js/regex.nim | 4 | ||||
-rw-r--r-- | src/layout/engine.nim | 1 | ||||
-rw-r--r-- | src/strings/charset.nim | 2 |
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: |