-- 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_ mode = "i", lhs = [[]], rhs = function() if pum_visible() then pum_insert_relative(1) end end, opts = opt, }, { -- i_ mode = "i", lhs = [[]], rhs = function() if pum_visible() then pum_insert_relative(-1) end end, opts = opt, }, { -- i_ mode = "i", lhs = [[]], rhs = function() pum_confirm() end, opts = opt, }, { -- i_ mode = "i", lhs = [[]], rhs = function() if pum_visible() then pum_cancel() else return [[U]] end end, opts = expr_opt, }, { -- i_ manual_complete line mode = "i", lhs = [[]], rhs = function() ddc_complete("line") end, opts = opt, }, { -- i_ manual_complete around, rg, buffer mode = "i", lhs = [[]], rhs = function() ddc_complete("around", "rg", "buffer") end, opts = opt, }, { -- i_ manual_complete file mode = "i", lhs = [[]], rhs = function() ddc_complete("file") end, opts = opt, }, { -- i_ manual_complete lsp mode = "i", lhs = [[]], rhs = function() ddc_complete("lsp") end, opts = opt, }, { -- i_ manual_complete necovim, nvim-lua, cmdline mode = "i", lhs = [[]], rhs = function() ddc_complete("necovim", "nvim-lua", "cmdline") end, opts = opt, }, { -- i_ manual_complete vsnip mode = "i", lhs = [[]], rhs = function() ddc_complete("vsnip") end, opts = opt, }, { -- i_ manual_complete mode = "i", lhs = [[]], rhs = function() ddc_manual_complete() end, opts = opt, }, -- commandline completion keymapping { -- c_ mode = "c", lhs = [[]], rhs = function() if pum_visible() then pum_insert_relative(1) else ddc_manual_complete() end end, opts = opt, }, { -- c_ mode = "c", lhs = [[]], rhs = function() pum_insert_relative(-1) end, opts = opt, }, { -- c_ mode = "c", lhs = [[]], rhs = function() pum_confirm() end, opts = opt, }, { -- c_ mode = "c", lhs = [[]], rhs = function() if pum_visible() then ddc_hide() else return [[]] end end, opts = expr_opt, }, -- deol completion keymapping { -- t_ これはリファレンス実装。意図は分かっていない… mode = "t", lhs = [[]], rhs = [[]], opts = opt, }, { -- t_ completion select mode = "t", lhs = [[]], rhs = function() if pum_visible() then pum_select_relative(1) else return [[]] end end, opts = expr_opt, }, { -- t_ completion select with reverse curosor move mode = "t", lhs = [[]], rhs = function() if pum_visible() then pum_select_relative(-1) else return [[]] end end, opts = expr_opt, }, { -- t_ completion confirm mode = "t", lhs = [[]], rhs = function() if pum_visible() then pum_confirm() else return [[]] end end, opts = expr_opt, }, { -- t_ completion cancel mode = "t", lhs = [[]], rhs = function() if pum_visible() then pum_cancel() else return [[]] end end, opts = expr_opt, }, }) vim.fn['ddc#enable_terminal_completion']() vim.fn['ddc#enable']({ context_filetype = [[treesitter]] }) -- }}}