diff options
author | bptato <nincsnevem662@gmail.com> | 2023-09-30 19:42:41 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-09-30 19:42:41 +0200 |
commit | e26ea3aca2c0c5eb4a2678440dbec77105ee8dd4 (patch) | |
tree | dc48e835b9c39efd35486db785cda95206d0871d /src/server | |
parent | 83857c03a64312770e0ba0f46b5917dceb23c0ad (diff) | |
download | chawan-e26ea3aca2c0c5eb4a2678440dbec77105ee8dd4.tar.gz |
buffer: fix cursor unnecessarily jumping to y=0
then() is called even if a nil Promise is returned, so an Opt is needed here.
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/buffer.nim | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 24dc7d3d..49ee97aa 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -536,17 +536,19 @@ proc findNextMatch*(buffer: Buffer, regex: Regex, cursorx, cursory: int, break inc y -proc gotoAnchor*(buffer: Buffer): tuple[x, y: int] {.proxy.} = - if buffer.document == nil: return (-1, -1) +proc gotoAnchor*(buffer: Buffer): Opt[tuple[x, y: int]] {.proxy.} = + if buffer.document == nil: + return err() let anchor = buffer.document.findAnchor(buffer.url.anchor) - if anchor == nil: return (-1, -1) + if anchor == nil: + return err() for y in 0 ..< buffer.lines.len: let line = buffer.lines[y] for i in 0 ..< line.formats.len: let format = line.formats[i] if format.node != nil and anchor in format.node.node: - return (format.pos, y) - return (-1, -1) + return ok((format.pos, y)) + return err() proc do_reshape(buffer: Buffer) = if buffer.ishtml: |