Fix #262
This commit is contained in:
@@ -226,12 +226,23 @@ end
|
|||||||
---@param callback function
|
---@param callback function
|
||||||
core.autoindent = function(event, callback)
|
core.autoindent = function(event, callback)
|
||||||
if event == types.cmp.TriggerEvent.TextChanged then
|
if event == types.cmp.TriggerEvent.TextChanged then
|
||||||
local ctx = context.new()
|
local cursor_before_line = misc.get_cursor_before_line()
|
||||||
local prefix = pattern.matchstr('[^[:blank:]]\\+$', ctx.cursor_before_line)
|
local prefix = pattern.matchstr('[^[:blank:]]\\+$', cursor_before_line)
|
||||||
if prefix then
|
if prefix then
|
||||||
for _, key in ipairs(vim.split(vim.bo.indentkeys, ',')) do
|
for _, key in ipairs(vim.split(vim.bo.indentkeys, ',')) do
|
||||||
if vim.tbl_contains({ '=' .. prefix, '0=' .. prefix }, key) then
|
if vim.tbl_contains({ '=' .. prefix, '0=' .. prefix }, key) then
|
||||||
return keymap.feedkeys(keymap.t('<Plug>(cmp-autoindent)'), '', callback)
|
return vim.schedule(function()
|
||||||
|
if cursor_before_line == misc.get_cursor_before_line() then
|
||||||
|
local indentkeys = vim.bo.indentkeys
|
||||||
|
vim.bo.indentkeys = indentkeys .. ',!^F'
|
||||||
|
keymap.feedkeys(keymap.t('<C-f>'), 'n', function()
|
||||||
|
vim.bo.indentkeys = indentkeys
|
||||||
|
callback()
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
callback()
|
||||||
|
end
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,6 +15,13 @@ misc.concat = function(list1, list2)
|
|||||||
return new_list
|
return new_list
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Get cursor before line
|
||||||
|
---@return string
|
||||||
|
misc.get_cursor_before_line = function()
|
||||||
|
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||||
|
return string.sub(vim.api.nvim_get_current_line(), 1, cursor[2])
|
||||||
|
end
|
||||||
|
|
||||||
---Merge two tables recursively
|
---Merge two tables recursively
|
||||||
---@generic T
|
---@generic T
|
||||||
---@param v1 T
|
---@param v1 T
|
||||||
|
|||||||
@@ -17,17 +17,6 @@ vim.cmd [[
|
|||||||
augroup END
|
augroup END
|
||||||
]]
|
]]
|
||||||
|
|
||||||
vim.cmd [[inoremap <silent> <Plug>(cmp-autoindent) <Cmd>call v:lua.cmp.autoindent()<CR>]]
|
|
||||||
misc.set(_G, { 'cmp', 'autoindent' }, function()
|
|
||||||
local startofline = vim.o.startofline
|
|
||||||
local virtualedit = vim.o.virtualedit
|
|
||||||
vim.o.startofline = false
|
|
||||||
vim.o.virtualedit = 'all'
|
|
||||||
vim.cmd [[normal! ==]]
|
|
||||||
vim.o.startofline = startofline
|
|
||||||
vim.o.virtualedit = virtualedit
|
|
||||||
end)
|
|
||||||
|
|
||||||
vim.cmd [[command! CmpStatus lua require('cmp').status()]]
|
vim.cmd [[command! CmpStatus lua require('cmp').status()]]
|
||||||
|
|
||||||
vim.cmd [[doautocmd <nomodeline> User cmp#ready]]
|
vim.cmd [[doautocmd <nomodeline> User cmp#ready]]
|
||||||
|
|||||||
Reference in New Issue
Block a user