From d8e6a865e47269f8b9d3fcf81772edc468fdcfc8 Mon Sep 17 00:00:00 2001 From: hrsh7th Date: Mon, 11 Oct 2021 00:43:14 +0900 Subject: [PATCH] Use instead of --- lua/cmp/core.lua | 8 ++++---- lua/cmp/entry.lua | 2 +- lua/cmp/source.lua | 1 - lua/cmp/utils/keymap.lua | 14 ++++++++++++++ lua/cmp/view/custom_entries_view.lua | 2 +- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index e0f4133..49960a6 100644 --- a/lua/cmp/core.lua +++ b/lua/cmp/core.lua @@ -306,12 +306,12 @@ core.confirm = function(self, e, option, callback) -- Simulate `` behavior. local confirm = {} - table.insert(confirm, keymap.t(string.rep('', ctx.cursor.character - misc.to_utfindex(e.context.cursor_before_line, e:get_offset())))) + table.insert(confirm, keymap.backspace(ctx.cursor.character - misc.to_utfindex(e.context.cursor_before_line, e:get_offset()))) table.insert(confirm, e:get_word()) keymap.feedkeys(table.concat(confirm, ''), 'nt', function() -- Restore to the requested state. local restore = {} - table.insert(restore, keymap.t(string.rep('', vim.fn.strchars(e:get_word())))) + table.insert(restore, keymap.backspace(vim.str_utfindex(e:get_word()))) table.insert(restore, string.sub(e.context.cursor_before_line, e:get_offset())) keymap.feedkeys(table.concat(restore, ''), 'n', function() --@see https://github.com/microsoft/vscode/blob/main/src/vs/editor/contrib/suggest/suggestController.ts#L334 @@ -363,13 +363,13 @@ core.confirm = function(self, e, option, callback) table.insert(keys, keymap.t(string.rep('', completion_item.textEdit.range['end'].character - e.context.cursor.character))) end if completion_item.textEdit.range.start.character < e.context.cursor.character then - table.insert(keys, keymap.t(string.rep('', e.context.cursor.character - completion_item.textEdit.range.start.character))) + table.insert(keys, keymap.backspace(e.context.cursor.character - completion_item.textEdit.range.start.character)) end local is_snippet = completion_item.insertTextFormat == types.lsp.InsertTextFormat.Snippet if is_snippet then table.insert(keys, keymap.t('u') .. e:get_word() .. keymap.t('u')) - table.insert(keys, keymap.t(string.rep('', vim.fn.strchars(e:get_word())))) + table.insert(keys, keymap.backspace(vim.str_utfindex(e:get_word()))) else table.insert(keys, keymap.t('u') .. completion_item.textEdit.newText .. keymap.t('u')) end diff --git a/lua/cmp/entry.lua b/lua/cmp/entry.lua index 133bfca..2050d87 100644 --- a/lua/cmp/entry.lua +++ b/lua/cmp/entry.lua @@ -345,7 +345,7 @@ end ---@return { score: number, matches: table[] } entry.match = function(self, input) return self.match_cache:ensure(input, function() - local score, matches + local score, matches, _ score, matches = matcher.match(input, self:get_filter_text(), { self:get_word() }) if self:get_filter_text() ~= self:get_completion_item().label then _, matches = matcher.match(input, self:get_completion_item().label) diff --git a/lua/cmp/source.lua b/lua/cmp/source.lua index 80510a4..b80d370 100644 --- a/lua/cmp/source.lua +++ b/lua/cmp/source.lua @@ -1,6 +1,5 @@ local context = require('cmp.context') local config = require('cmp.config') -local matcher = require('cmp.matcher') local entry = require('cmp.entry') local debug = require('cmp.utils.debug') local misc = require('cmp.utils.misc') diff --git a/lua/cmp/utils/keymap.lua b/lua/cmp/utils/keymap.lua index 02f4d9a..5d95c64 100644 --- a/lua/cmp/utils/keymap.lua +++ b/lua/cmp/utils/keymap.lua @@ -72,6 +72,20 @@ keymap.to_keymap = function(s) end) end +---Create backspace keys. +---@param count number +---@return string +keymap.backspace = function(count) + if count <= 0 then + return '' + end + local keys = {} + table.insert(keys, keymap.t('U')) + table.insert(keys, keymap.t(string.rep('', count))) + table.insert(keys, keymap.t(string.rep('', count))) + return table.concat(keys, '') +end + ---Return two key sequence are equal or not. ---@param a string ---@param b string diff --git a/lua/cmp/view/custom_entries_view.lua b/lua/cmp/view/custom_entries_view.lua index 4b70a9d..dc5f70d 100644 --- a/lua/cmp/view/custom_entries_view.lua +++ b/lua/cmp/view/custom_entries_view.lua @@ -296,7 +296,7 @@ end misc.set(_G, { 'cmp', 'view', 'custom_entries_view', '_insert', 'remove' }, function(offset) local cursor = vim.api.nvim_win_get_cursor(0) local length = vim.str_utfindex(string.sub(vim.api.nvim_get_current_line(), offset, cursor[2])) - return keymap.t(string.rep('', length)) + return keymap.backspace(length) end) return custom_entries_view