diff options
Diffstat (limited to 'server-beta/src')
-rw-r--r-- | server-beta/src/parser/guide.lua | 6 | ||||
-rw-r--r-- | server-beta/src/proto/define.lua | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/server-beta/src/parser/guide.lua b/server-beta/src/parser/guide.lua index b8593865..1cc82143 100644 --- a/server-beta/src/parser/guide.lua +++ b/server-beta/src/parser/guide.lua @@ -361,7 +361,7 @@ end ---@return integer {name = 'col'} function m.positionOf(lines, offset) if offset < 1 then - return 1, 1 + return 0, 0 end local lastLine = lines[#lines] if offset > lastLine.finish then @@ -394,7 +394,7 @@ end ---@return integer {name = 'offset'} function m.offsetOf(lines, row, col) if row < 1 then - return 1 + return 0 end if row > #lines then local lastLine = lines[#lines] @@ -422,7 +422,7 @@ end function m.lineRange(lines, row) local line = lines[row] if not line then - return 1, 1 + return 0, 0 end return line.start, line.finish end diff --git a/server-beta/src/proto/define.lua b/server-beta/src/proto/define.lua index 5e6bd3cf..1bf45531 100644 --- a/server-beta/src/proto/define.lua +++ b/server-beta/src/proto/define.lua @@ -23,7 +23,13 @@ end function m.position(lines, text, offset) local row, col = guide.positionOf(lines, offset) local start = guide.lineRange(lines, row) + if start < 1 then + start = 1 + end local ucol = utf8.len(text, start, start + col - 1, true) + if row < 1 then + row = 1 + end return { line = row - 1, character = ucol, |