implement is_invalid detection

This commit is contained in:
hrsh7th
2023-08-10 16:52:10 +09:00
parent c4e491a87e
commit 6c84bc75c6
2 changed files with 16 additions and 3 deletions

View File

@@ -562,4 +562,15 @@ entry.convert_range_encoding = function(self, range)
end)
end
---Return true if the entry is invalid.
entry.is_invalid = function(self)
local is_invalid = false
is_invalid = is_invalid or misc.empty(self.completion_item.label)
if self.completion_item.textEdit then
local range = self.completion_item.textEdit.range or self.completion_item.textEdit.insert
is_invalid = is_invalid or range.start.line ~= range['end'].line
end
return is_invalid
end
return entry

View File

@@ -353,13 +353,15 @@ source.complete = function(self, ctx, callback)
self.status = source.SourceStatus.COMPLETED
self.entries = {}
for i, item in ipairs(response.items or response) do
for _, item in ipairs(response.items or response) do
if (item or {}).label then
local e = entry.new(ctx, self, item, response.itemDefaults)
self.entries[i] = e
if not e:is_invalid() then
table.insert(self.entries, e)
self.offset = math.min(self.offset, e:get_offset())
end
end
end
self.revision = self.revision + 1
if #self.entries == 0 then
self.offset = old_offset