🗒
ddc.vimでvim-vsnipを使用するときの設定(lua)
以前はddc.vimとvim-snipを組み合わせて使用するときはvim-vsnip-integを使用すればよかったのですがvim-vsnip-integのアップデートによりddc.vimサポートが廃止され現在はddc-source-vsnipを使用する必要があります。
必要なプラグイン
vim-vsnip-integは使用しないので削除してください。
設定
Vim scriptで設定する方法はddc-source-nvim-lspのREADMEに記述されています。
call ddc#custom#patch_global('sources', ['nvim-lsp'])
call ddc#custom#patch_global('sourceOptions', #{
\ nvim-lsp: #{
\ mark: 'lsp',
\ forceCompletionPattern: '\.\w*|:\w*|->\w*',
\ },
\ })
call ddc#custom#patch_global('sourceParams', #{
\ nvim-lsp: #{
\ snippetEngine: denops#callback#register({
\ body -> vsnip#anonymous(body)
\ }),
\ enableResolveItem: v:true,
\ enableAdditionalTextEdit: v:true,
\ }
\ })
私はinit.lua
に全ての設定を書いているためここではlua
での設定を紹介します。
不要そうな部分は削ってあります。
vim.fn["ddc#custom#patch_global"]({
sources = {
'nvim-lsp',
},
sourceOptions = {
["nvim-lsp"] = {
mark = '[LSP]',
forceCompletionPattern = {[['\.\w*|:\w*|->\w*']]},
},
},
sourceParams = {
["nvim-lsp"] = {
snippetEngine = vim.fn["denops#callback#register"](function(body) vim.fn["vsnip#anonymous"](body) end),
enableResolveItem = true,
enableAdditionalTextEdit = true,
},
},
})
-- キーマップ(自由に)
vim.api.nvim_create_autocmd('InsertEnter', {
callback = function(ev)
vim.keymap.set({'i', 's'}, '<C-l>', function() return vim.fn['vsnip#available'](1) == 1 and '<Plug>(vsnip-expand-or-jump)' or '<C-l>' end, { expr = true, noremap = false })
vim.keymap.set({'i', 's'}, '<Tab>', function() return vim.fn['vsnip#jumpable'](1) == 1 and '<Plug>(vsnip-jump-next)' or '<Tab>' end, { expr = true, noremap = false })
vim.keymap.set({'i', 's'}, '<S-Tab>', function() return vim.fn['vsnip#jumpable'](-1) == 1 and '<Plug>(vsnip-jump-prev)' or '<S-Tab>' end, { expr = true, noremap = false })
vim.keymap.set({'n', 's'}, '<s>', [[<Plug>(vsnip-select-text)]], { expr = true, noremap = false })
vim.keymap.set({'n', 's'}, '<S>', [[<Plug>(vsnip-cut-text)]], { expr = true, noremap = false })
end,
})
vim.g.vsnip_filetypes = {}
削った部分の設定は私のdotfilesリポジトリのinit.luaに書いてあるので気になる方は確認してください。
Discussion