From 4c05626ccd70b1cab777c507b34f36ef27d41cbf Mon Sep 17 00:00:00 2001 From: hrsh7th <629908+hrsh7th@users.noreply.github.com> Date: Fri, 25 Nov 2022 03:20:07 +0900 Subject: [PATCH] Improve a bit --- lua/cmp/core.lua | 25 +++++++++++++++++++------ lua/cmp/source.lua | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index 574dc5e..af7057f 100644 --- a/lua/cmp/core.lua +++ b/lua/cmp/core.lua @@ -433,13 +433,26 @@ core.confirm = function(self, e, option, callback) local diff_before = math.max(0, e.context.cursor.col - (completion_item.textEdit.range.start.character + 1)) local diff_after = math.max(0, (completion_item.textEdit.range['end'].character + 1) - e.context.cursor.col) local new_text = completion_item.textEdit.newText - + completion_item.textEdit.range.start.line = ctx.cursor.line + completion_item.textEdit.range.start.character = (ctx.cursor.col - 1) - diff_before + completion_item.textEdit.range['end'].line = ctx.cursor.line + completion_item.textEdit.range['end'].character = (ctx.cursor.col - 1) + diff_after if api.is_insert_mode() then - completion_item.textEdit.range.start.line = ctx.cursor.line - completion_item.textEdit.range.start.character = (ctx.cursor.col - 1) - diff_before - completion_item.textEdit.range['end'].line = ctx.cursor.line - completion_item.textEdit.range['end'].character = (ctx.cursor.col - 1) + diff_after - + if false then + --To use complex expansion debug. + vim.pretty_print({ + diff_before = diff_before, + diff_after = diff_after, + new_text = new_text, + text_edit_new_text = completion_item.textEdit.newText, + range_start = completion_item.textEdit.range.start.character, + range_end = completion_item.textEdit.range['end'].character, + original_range_start = e:get_completion_item().textEdit.range.start.character, + original_range_end = e:get_completion_item().textEdit.range['end'].character, + cursor_line = ctx.cursor_line, + cursor_col0 = ctx.cursor.col - 1, + }) + end local is_snippet = completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet if is_snippet then completion_item.textEdit.newText = '' diff --git a/lua/cmp/source.lua b/lua/cmp/source.lua index 4d7ee94..25c3cb3 100644 --- a/lua/cmp/source.lua +++ b/lua/cmp/source.lua @@ -289,7 +289,7 @@ source.complete = function(self, ctx, callback) triggerCharacter = before_char, } elseif ctx:get_reason() ~= types.cmp.ContextReason.TriggerOnly then - if self:get_keyword_length() <= (ctx.cursor.col - offset) then + if offset < ctx.cursor.col and self:get_keyword_length() <= (ctx.cursor.col - offset) then if self.incomplete and self.context.cursor.col ~= ctx.cursor.col and self.status ~= source.SourceStatus.FETCHING then completion_context = { triggerKind = types.lsp.CompletionTriggerKind.TriggerForIncompleteCompletions,