mirror of
https://github.com/hrsh7th/nvim-cmp
synced 2024-09-16 20:54:03 +02:00
terminal completion
This commit is contained in:
parent
68a37a669b
commit
704889c542
3 changed files with 34 additions and 3 deletions
|
@ -5,7 +5,6 @@ local feedkeys = require('cmp.utils.feedkeys')
|
|||
local autocmd = require('cmp.utils.autocmd')
|
||||
local keymap = require('cmp.utils.keymap')
|
||||
local misc = require('cmp.utils.misc')
|
||||
local api = require('cmp.utils.api')
|
||||
|
||||
local cmp = {}
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@ api.get_mode = function()
|
|||
return 'x'
|
||||
elseif api.is_select_mode() then
|
||||
return 's'
|
||||
elseif api.is_terminal_mode() then
|
||||
return 't'
|
||||
elseif api.is_cmdline_mode() then
|
||||
return 'c'
|
||||
end
|
||||
|
@ -30,6 +32,12 @@ api.is_cmdline_mode = function()
|
|||
return is_cmdline_mode and vim.fn.getcmdtype() ~= '='
|
||||
end
|
||||
|
||||
api.is_terminal_mode = function()
|
||||
return vim.tbl_contains({
|
||||
't',
|
||||
}, vim.api.nvim_get_mode().mode)
|
||||
end
|
||||
|
||||
api.is_select_mode = function()
|
||||
return vim.tbl_contains({
|
||||
's',
|
||||
|
@ -45,7 +53,7 @@ api.is_visual_mode = function()
|
|||
end
|
||||
|
||||
api.is_suitable_mode = function()
|
||||
return api.is_insert_mode() or api.is_cmdline_mode()
|
||||
return api.is_insert_mode() or api.is_cmdline_mode() or api.is_terminal_mode()
|
||||
end
|
||||
|
||||
api.get_current_line = function()
|
||||
|
@ -58,6 +66,11 @@ end
|
|||
api.get_cursor = function()
|
||||
if api.is_cmdline_mode() then
|
||||
return { vim.o.lines - (vim.api.nvim_get_option('cmdheight') or 1) + 1, vim.fn.getcmdpos() - 1 }
|
||||
elseif api.is_terminal_mode() then
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
cursor[2] = cursor[2] + 1
|
||||
print(vim.inspect(cursor))
|
||||
return cursor
|
||||
end
|
||||
return vim.api.nvim_win_get_cursor(0)
|
||||
end
|
||||
|
|
|
@ -21,9 +21,29 @@ vim.cmd [[
|
|||
autocmd ColorScheme * call v:lua.cmp.plugin.colorscheme()
|
||||
autocmd CmdlineEnter * call v:lua.cmp.plugin.cmdline.enter()
|
||||
autocmd CmdlineLeave * call v:lua.cmp.plugin.cmdline.leave()
|
||||
autocmd TermEnter * call v:lua.cmp.plugin.term.enter()
|
||||
autocmd TermLeave * call v:lua.cmp.plugin.term.leave()
|
||||
augroup END
|
||||
]]
|
||||
|
||||
local term_timer = vim.loop.new_timer()
|
||||
misc.set(_G, { 'cmp', 'plugin', 'term', 'enter' }, function()
|
||||
require('cmp.utils.autocmd').emit('InsertEnter')
|
||||
|
||||
local cursor = api.get_cursor()
|
||||
term_timer:start(100, 100, vim.schedule_wrap(function()
|
||||
local new_cursor = api.get_cursor()
|
||||
if cursor[1] ~= new_cursor[1] or cursor[2] ~= new_cursor[2] then
|
||||
cursor = new_cursor
|
||||
require('cmp.utils.autocmd').emit('TextChanged')
|
||||
end
|
||||
end))
|
||||
end)
|
||||
misc.set(_G, { 'cmp', 'plugin', 'term', 'leave' }, function()
|
||||
term_timer:stop()
|
||||
require('cmp.utils.autocmd').emit('InsertLeave')
|
||||
end)
|
||||
|
||||
misc.set(_G, { 'cmp', 'plugin', 'cmdline', 'enter' }, function()
|
||||
if config.get().experimental.native_menu then
|
||||
return
|
||||
|
@ -41,7 +61,6 @@ misc.set(_G, { 'cmp', 'plugin', 'cmdline', 'enter' }, function()
|
|||
end
|
||||
end
|
||||
end)
|
||||
|
||||
misc.set(_G, { 'cmp', 'plugin', 'cmdline', 'leave' }, function()
|
||||
if config.get().experimental.native_menu then
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue