Reduce use of VimL (#168)

* perf(context): reduce use of `cmd` and `fn`

* perf(float): reduce use of `cmd` and `fn`

* perf(init): reduce use of `cmd` and `fn`

* perf(menu): reduce use of `cmd` and `fn`

* perf(plugin): reduce use of `cmd` and `fn`

* docs(README): reduce use of `cmd` and `fn`
This commit is contained in:
Iron-E
2021-09-08 22:12:22 -04:00
committed by GitHub
parent 29679d493b
commit ae54dcdc49
6 changed files with 22 additions and 20 deletions

View File

@@ -174,18 +174,18 @@ You can specify your own custom mapping function.
```lua
local check_back_space = function()
local col = vim.fn.col('.') - 1
return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s')
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col == 0 or vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') ~= nil
end
mapping = {
['<Tab>'] = function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-n>', true, true, true), 'n')
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<C-n>', true, true, true), 'n', true)
elseif check_back_space() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<Tab>', true, true, true), 'n')
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<Tab>', true, true, true), 'n', true)
elseif vim.fn['vsnip#available']() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<Plug>(vsnip-expand-or-jump)', true, true, true), '')
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<Plug>(vsnip-expand-or-jump)', true, true, true), '', true)
else
fallback()
end
@@ -496,9 +496,9 @@ end
mapping = {
["<Tab>"] = cmp.mapping(function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(t("<C-n>"), "n")
vim.api.nvim_feedkeys(t("<C-n>"), "n", true)
elseif luasnip.expand_or_jumpable() then
vim.fn.feedkeys(t("<Plug>luasnip-expand-or-jump"), "")
vim.api.nvim_feedkeys(t("<Plug>luasnip-expand-or-jump"), "", true)
else
fallback()
end
@@ -508,9 +508,9 @@ mapping = {
}),
["<S-Tab>"] = cmp.mapping(function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(t("<C-p>"), "n")
vim.api.nvim_feedkeys(t("<C-p>"), "n", true)
elseif luasnip.jumpable(-1) then
vim.fn.feedkeys(t("<Plug>luasnip-jump-prev"), "")
vim.api.nvim_feedkeys(t("<Plug>luasnip-jump-prev"), "", true)
else
fallback()
end

View File

@@ -55,8 +55,9 @@ context.new = function(prev_context, option)
self.cursor_line = vim.api.nvim_get_current_line()
self.virtcol = vim.fn.virtcol('.')
self.cursor = {}
self.cursor.row = vim.api.nvim_win_get_cursor(0)[1]
self.cursor.col = vim.api.nvim_win_get_cursor(0)[2] + 1
local cursor = vim.api.nvim_win_get_cursor(0)
self.cursor.row = cursor[1]
self.cursor.col = cursor[2] + 1
self.cursor.line = self.cursor.row - 1
self.cursor.character = misc.to_utfindex(self.cursor_line, self.cursor.col)
self.cursor_before_line = string.sub(self.cursor_line, 1, self.cursor.col - 1)

View File

@@ -125,7 +125,7 @@ float.scroll = function(self, delta)
vim.defer_fn(function()
vim.api.nvim_buf_call(buf, function()
vim.cmd('normal! ' .. top .. 'zt')
vim.api.nvim_command('normal! ' .. top .. 'zt')
end)
end, 0)
end

View File

@@ -63,7 +63,7 @@ end
---Select next item if possible
cmp.select_next_item = function()
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(keymap.t('<C-n>'), 'n')
vim.api.nvim_feedkeys(keymap.t('<C-n>'), 'n', true)
return true
else
return false
@@ -73,7 +73,7 @@ end
---Select prev item if possible
cmp.select_prev_item = function()
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(keymap.t('<C-p>'), 'n')
vim.api.nvim_feedkeys(keymap.t('<C-p>'), 'n', true)
return true
else
return false

View File

@@ -48,7 +48,8 @@ menu.close = function(self)
debug.log('menu.close', vim.fn.pumvisible())
if vim.fn.pumvisible() == 1 then
-- TODO: Is it safe to call...?
vim.fn.complete(#vim.fn.getline('.') + 1, {})
local line = vim.api.nvim_win_get_cursor(0)[1]
vim.fn.complete(#vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1] + 1, {})
end
self:unselect()
end)
@@ -162,15 +163,15 @@ menu.show = function(self)
local completeopt = vim.o.completeopt
if self.preselect == 1 then
vim.cmd('set completeopt=menuone,noinsert')
vim.opt.completeopt = {'menuone', 'noinsert'}
else
vim.cmd('set completeopt=' .. config.get().completion.completeopt)
vim.opt.completeopt = config.get().completion.completeopt
end
vim.fn.complete(self.offset, self.items)
if self.preselect > 1 then
vim.api.nvim_select_popupmenu_item(self.preselect - 1, false, false, {})
end
vim.cmd('set completeopt=' .. completeopt)
vim.opt.completeopt = completeopt
end
---Select current item

View File

@@ -16,10 +16,10 @@ vim.cmd [[
]]
if vim.fn.hlexists('CmpDocumentation') == 0 then
vim.cmd [[highlight link CmpDocumentation NormalFloat]]
vim.api.nvim_command [[highlight link CmpDocumentation NormalFloat]]
end
if vim.fn.hlexists('CmpDocumentationBorder') == 0 then
vim.cmd [[highlight link CmpDocumentationBorder NormalFloat]]
vim.api.nvim_command [[highlight link CmpDocumentationBorder NormalFloat]]
end