From 883eee5bbc664f2e8acf660df19e36936bc14604 Mon Sep 17 00:00:00 2001 From: hrsh7th Date: Sun, 10 Oct 2021 00:01:15 +0900 Subject: [PATCH] Use and support cmdwin --- lua/cmp/core.lua | 8 ++++---- lua/cmp/utils/misc.lua | 6 ++++++ lua/cmp/utils/window.lua | 4 ++-- lua/cmp/view.lua | 3 ++- lua/cmp/view/custom_entries_view.lua | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index b3004b7..e0f4133 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('U', ctx.cursor.character - misc.to_utfindex(e.context.cursor_before_line, e:get_offset())))) + table.insert(confirm, keymap.t(string.rep('', 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('U', vim.fn.strchars(e:get_word())))) + table.insert(restore, keymap.t(string.rep('', vim.fn.strchars(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('U', e.context.cursor.character - completion_item.textEdit.range.start.character))) + table.insert(keys, keymap.t(string.rep('', 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('U', vim.fn.strchars(e:get_word())))) + table.insert(keys, keymap.t(string.rep('', vim.fn.strchars(e:get_word())))) else table.insert(keys, keymap.t('u') .. completion_item.textEdit.newText .. keymap.t('u')) end diff --git a/lua/cmp/utils/misc.lua b/lua/cmp/utils/misc.lua index 8378b03..79a1461 100644 --- a/lua/cmp/utils/misc.lua +++ b/lua/cmp/utils/misc.lua @@ -15,6 +15,12 @@ misc.concat = function(list1, list2) return new_list end +---Return is cmdwin or not. +---@return boolean +misc.is_cmdwin = function() + return vim.fn.getcmdwintype() ~= '' +end + ---Get cursor before line ---@return string misc.get_cursor_before_line = function() diff --git a/lua/cmp/utils/window.lua b/lua/cmp/utils/window.lua index 6c1cd4c..fd0afee 100644 --- a/lua/cmp/utils/window.lua +++ b/lua/cmp/utils/window.lua @@ -137,11 +137,11 @@ window.update = function(self) end else if self.swin1 and vim.api.nvim_win_is_valid(self.swin1) then - vim.api.nvim_win_close(self.swin1, false) + vim.api.nvim_win_close(self.swin1, true) self.swin1 = nil end if self.swin2 and vim.api.nvim_win_is_valid(self.swin2) then - vim.api.nvim_win_close(self.swin2, false) + vim.api.nvim_win_close(self.swin2, true) self.swin2 = nil end end diff --git a/lua/cmp/view.lua b/lua/cmp/view.lua index c3debdf..e4e3bef 100644 --- a/lua/cmp/view.lua +++ b/lua/cmp/view.lua @@ -6,6 +6,7 @@ local docs_view = require('cmp.view.docs_view') local custom_entries_view = require('cmp.view.custom_entries_view') local native_entries_view = require('cmp.view.native_entries_view') local ghost_text_view = require('cmp.view.ghost_text_view') +local misc = require('cmp.utils.misc') ---@class cmp.View ---@field public event cmp.Event @@ -157,7 +158,7 @@ view._get_entries_view = function(self) self.native_entries_view.event:clear() self.custom_entries_view.event:clear() - if c.experimental.native_menu then + if c.experimental.native_menu or misc.is_cmdwin() then self.native_entries_view.event:on('change', function() self:on_entry_change() end) diff --git a/lua/cmp/view/custom_entries_view.lua b/lua/cmp/view/custom_entries_view.lua index 97c34c1..2c9be31 100644 --- a/lua/cmp/view/custom_entries_view.lua +++ b/lua/cmp/view/custom_entries_view.lua @@ -290,7 +290,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('U', length)) + return keymap.t(string.rep('', length)) end) return custom_entries_view