aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util.lua10
1 files changed, 7 insertions, 3 deletions
diff --git a/util.lua b/util.lua
index e36c23f..3d10e95 100644
--- a/util.lua
+++ b/util.lua
@@ -243,12 +243,16 @@ function util.vis_sorted_selections_to_pos(file, sorted_selections)
pos = pos + #line + 1
end
- -- Some language servers (pylsp) sends a range including the first character after the last line.
+ -- Some language servers (pylsp) send ranges including the first character after the last line.
-- e.g. [{"line":1, "col":1}, {"line":#lines+1, "col":1}]
-- But this selection can not be handled by iterating all lines.
- -- Add a special case for the selection of the first char after the last line.
- if sel.line == line_count + 1 and sel.col == 1 then
+ -- Special case ranges ensing after the last line.
+ -- Additionaly the start and end can overlap.
+ -- Gopls sends the range [{"line":1, "col":1}, {"line":1, "col":1}] when editing an empty file.
+ while sel and sel.line == line_count + 1 and sel.col == 1 do
table.insert(positions, pos)
+ sel_i = sel_i + 1
+ sel = sorted_selections[sel_i]
end
return positions
end