fix 1533, add regression test (#1558)

This commit is contained in:
Konstantin Labun
2023-05-04 22:26:55 -07:00
committed by GitHub
parent 0f47dcaf7e
commit 8b76965ed0
2 changed files with 33 additions and 3 deletions

View File

@@ -61,13 +61,14 @@ entry.get_offset = function(self)
local range = self:get_insert_range() local range = self:get_insert_range()
if range then if range then
offset = self.context.cache:ensure('entry:' .. 'get_offset:' .. tostring(range.start.character), function() offset = self.context.cache:ensure('entry:' .. 'get_offset:' .. tostring(range.start.character), function()
for idx = range.start.character + 1, self.source_offset do local start = math.min(range.start.character + 1, offset)
for idx = start, self.source_offset do
local byte = string.byte(self.context.cursor_line, idx) local byte = string.byte(self.context.cursor_line, idx)
if byte ~= nil and not char.is_white(byte) then if byte == nil or not char.is_white(byte) then
return idx return idx
end end
end end
return offset return offset + 1
end) end)
end end
else else

View File

@@ -335,4 +335,33 @@ describe('entry', function()
assert.are.equal(e:get_offset(), 3) assert.are.equal(e:get_offset(), 3)
assert.are.equal(e:get_vim_item(e:get_offset()).word, 'constructor() {') assert.are.equal(e:get_vim_item(e:get_offset()).word, 'constructor() {')
end) end)
it('[#1533] clang regression test', function()
local state = spec.state('jsonReader', 3, 11)
local state_source = state.source()
state.input('.')
local e = entry.new(state.manual(), state_source, {
filterText = 'getPath()',
kind = 1,
label = 'getPath()',
textEdit = {
newText = 'getPath()',
range = {
['end'] = {
character = 11,
col = 12,
line = 2,
row = 3,
},
start = {
character = 11,
line = 2,
},
},
},
})
assert.are.equal(e:get_offset(), 12)
assert.are.equal(e:get_vim_item(e:get_offset()).word, 'getPath()')
end)
end) end)