-- lua_add {{{
require("user.utils").autocmd_set("CmdlineEnter", "*", function()
require("user.plugins.ddc").cmdline_completion()
end)
-- }}}
-- lua_source {{{
local pum_insert_relative = vim.fn["pum#map#insert_relative"]
local pum_select_relative = vim.fn["pum#map#select_relative"]
local pum_confirm = vim.fn["pum#map#confirm"]
local pum_cancel = vim.fn["pum#map#cancel"]
local pum_visible = vim.fn["pum#visible"]
local ddc_manual_complete = vim.fn["ddc#map#manual_complete"]
local ddc_hide = vim.fn["ddc#hide"]
-- Source options.
local joinpath = vim.fs.joinpath
local ddc_hooks = joinpath(vim.g.hooks_dir, "ddc")
vim.fn["ddc#custom#load_config"](
-- $HOOKS_DIR/ddc/config.ts
joinpath(ddc_hooks, "config.ts")
)
---ddc手動補完のソース指定を楽チンにするやつ
-- https://github.com/4513ECHO/dotfiles/blob/73f2f46/config/nvim/dein/settings/ddc.vim#L163-L175
---@param ... string ddc-source name
local ddc_complete = function(...)
vim.fn["ddc#map#manual_complete"]({ sources = { ... } })
end
-- Keymaping
local expr_opt = { expr = true, noremap = true }
local opt = { noremap = true }
require("user.utils").keymaps_set({
{ -- i_<C-n>
mode = "i",
lhs = [[<C-n>]],
rhs = function()
if pum_visible() then
pum_insert_relative(1)
end
end,
opts = opt,
},
{ -- i_<C-p>
mode = "i",
lhs = [[<C-p>]],
rhs = function()
if pum_visible() then
pum_insert_relative(-1)
end
end,
opts = opt,
},
{ -- i_<C-y>
mode = "i",
lhs = [[<C-y>]],
rhs = function()
pum_confirm()
end,
opts = opt,
},
{ -- i_<C-e>
mode = "i",
lhs = [[<C-e>]],
rhs = function()
if pum_visible() then
pum_cancel()
else
return [[<C-G>U<End>]]
end
end,
opts = expr_opt,
},
{ -- i_<C-x><C-l> manual_complete line
mode = "i",
lhs = [[<C-x><C-l>]],
rhs = function()
ddc_complete("line")
end,
opts = opt,
},
{ -- i_<C-x><C-n> manual_complete around, rg, buffer
mode = "i",
lhs = [[<C-x><C-n>]],
rhs = function()
ddc_complete("around", "rg", "buffer")
end,
opts = opt,
},
{ -- i_<C-x><C-f> manual_complete file
mode = "i",
lhs = [[<C-x><C-f>]],
rhs = function()
ddc_complete("file")
end,
opts = opt,
},
{ -- i_<C-x><C-d> manual_complete lsp
mode = "i",
lhs = [[<C-x><C-d>]],
rhs = function()
ddc_complete("lsp")
end,
opts = opt,
},
{ -- i_<C-x><C-v> manual_complete necovim, nvim-lua, cmdline
mode = "i",
lhs = [[<C-x><C-v>]],
rhs = function()
ddc_complete("necovim", "nvim-lua", "cmdline")
end,
opts = opt,
},
{ -- i_<C-x><C-s> manual_complete denippet
mode = "i",
lhs = [[<C-x><C-s>]],
rhs = function()
ddc_complete("denippet")
end,
opts = opt,
},
{ -- i_<C-x><C-a> manual_complete codeium
mode = "i",
lhs = [[<C-x><C-a>]],
rhs = function()
ddc_complete("codeium")
end,
opts = opt,
},
{ -- i_<C-x><C-u> manual_complete
mode = "i",
lhs = [[<C-x><C-u>]],
rhs = function()
ddc_manual_complete()
end,
opts = opt,
},
-- commandline completion keymapping
{ -- c_<C-n>
mode = "c",
lhs = [[<Tab>]],
rhs = function()
if pum_visible() then
pum_insert_relative(1)
else
ddc_manual_complete()
end
end,
opts = opt,
},
{ -- c_<C-p>
mode = "c",
lhs = [[<S-Tab>]],
rhs = function()
pum_insert_relative(-1)
end,
opts = opt,
},
{ -- c_<C-y>
mode = "c",
lhs = [[<C-y>]],
rhs = function()
pum_confirm()
end,
opts = opt,
},
{ -- c_<C-e>
mode = "c",
lhs = [[<C-e>]],
rhs = function()
if pum_visible() then
ddc_hide()
else
return [[<END>]]
end
end,
opts = expr_opt,
},
-- deol completion keymapping
{ -- t_<C-t> これはリファレンス実装。意図は分かっていない…
mode = "t",
lhs = [[<C-t>]],
rhs = [[<Tab>]],
opts = opt,
},
{ -- t_<Tab> completion select
mode = "t",
lhs = [[<Tab>]],
rhs = function()
if pum_visible() then
pum_select_relative(1)
else
return [[<Tab>]]
end
end,
opts = expr_opt,
},
{ -- t_<S-Tab> completion select with reverse curosor move
mode = "t",
lhs = [[<S-Tab>]],
rhs = function()
if pum_visible() then
pum_select_relative(-1)
else
return [[<S-Tab>]]
end
end,
opts = expr_opt,
},
{ -- t_<C-y> completion confirm
mode = "t",
lhs = [[<C-y>]],
rhs = function()
if pum_visible() then
pum_confirm()
else
return [[<C-y>]]
end
end,
opts = expr_opt,
},
{ -- t_<C-i> completion cancel
mode = "t",
lhs = [[<C-i>]],
rhs = function()
if pum_visible() then
pum_cancel()
else
return [[<C-i>]]
end
end,
opts = expr_opt,
},
})
-- vim.fn['ddc#enable_terminal_completion']()
vim.fn["ddc#enable"]({ context_filetype = [[treesitter]] })
-- }}}
-- lua_post_update {{{
vim.fn["ddc#set_static_import_path"]()
-- }}}