summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/aotrix/plugins/lsp.lua7
-rw-r--r--lua/aotrix/plugins/nvim_cmp.lua192
2 files changed, 99 insertions, 100 deletions
diff --git a/lua/aotrix/plugins/lsp.lua b/lua/aotrix/plugins/lsp.lua
index d24b0d0..0b02ad4 100644
--- a/lua/aotrix/plugins/lsp.lua
+++ b/lua/aotrix/plugins/lsp.lua
@@ -24,7 +24,12 @@ return {
fname) or
require("lspconfig.util").find_git_ancestor(fname)
end,
- capabilities = {offsetEncoding = {"utf-16"}},
+ capabilities = {
+ offsetEncoding = {"utf-16"},
+ textDocument = {
+ completion = {completionItem = {snippetSupport = true}}
+ }
+ },
cmd = {
"clangd", "--background-index", "--clang-tidy",
"--header-insertion=iwyu", "--completion-style=detailed",
diff --git a/lua/aotrix/plugins/nvim_cmp.lua b/lua/aotrix/plugins/nvim_cmp.lua
index 01887dd..09bd142 100644
--- a/lua/aotrix/plugins/nvim_cmp.lua
+++ b/lua/aotrix/plugins/nvim_cmp.lua
@@ -1,112 +1,106 @@
- return { -- Autocompletion
+return { -- Autocompletion
'hrsh7th/nvim-cmp',
event = 'InsertEnter',
dependencies = {
- -- Snippet Engine & its associated nvim-cmp source
- {
- 'L3MON4D3/LuaSnip',
- build = (function()
- -- Build Step is needed for regex support in snippets.
- -- This step is not supported in many windows environments.
- -- Remove the below condition to re-enable on windows.
- if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
- return
- end
- return 'make install_jsregexp'
- end)(),
- dependencies = {
- -- `friendly-snippets` contains a variety of premade snippets.
- -- See the README about individual language/framework/plugin snippets:
- -- https://github.com/rafamadriz/friendly-snippets
- -- {
- -- 'rafamadriz/friendly-snippets',
- -- config = function()
- -- require('luasnip.loaders.from_vscode').lazy_load()
- -- end,
- -- },
- },
- },
- 'saadparwaiz1/cmp_luasnip',
-
- -- Adds other completion capabilities.
- -- nvim-cmp does not ship with all sources by default. They are split
- -- into multiple repos for maintenance purposes.
- 'hrsh7th/cmp-nvim-lsp',
- 'hrsh7th/cmp-path',
- 'hrsh7th/cmp-nvim-lsp-signature-help',
+ -- Snippet Engine & its associated nvim-cmp source
+ {
+ 'L3MON4D3/LuaSnip',
+ build = (function()
+ -- Build Step is needed for regex support in snippets.
+ -- This step is not supported in many windows environments.
+ -- Remove the below condition to re-enable on windows.
+ if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
+ return
+ end
+ return 'make install_jsregexp'
+ end)(),
+ dependencies = {
+ -- `friendly-snippets` contains a variety of premade snippets.
+ -- See the README about individual language/framework/plugin snippets:
+ -- https://github.com/rafamadriz/friendly-snippets
+ -- {
+ -- 'rafamadriz/friendly-snippets',
+ -- config = function()
+ -- require('luasnip.loaders.from_vscode').lazy_load()
+ -- end,
+ -- },
+ }
+ }, 'saadparwaiz1/cmp_luasnip', -- Adds other completion capabilities.
+ -- nvim-cmp does not ship with all sources by default. They are split
+ -- into multiple repos for maintenance purposes.
+ 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-path',
+ 'hrsh7th/cmp-nvim-lsp-signature-help'
},
config = function()
- -- See `:help cmp`
- local cmp = require 'cmp'
- local luasnip = require 'luasnip'
- luasnip.config.setup {}
+ -- See `:help cmp`
+ local cmp = require 'cmp'
+ local luasnip = require 'luasnip'
+ luasnip.config.setup {}
- cmp.setup {
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- completion = { completeopt = 'menu,menuone,noinsert' },
+ cmp.setup {
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end
+ },
+ completion = {completeopt = 'menu,menuone,noinsert'},
- -- For an understanding of why these mappings were
- -- chosen, you will need to read `:help ins-completion`
- --
- -- No, but seriously. Please read `:help ins-completion`, it is really good!
- mapping = cmp.mapping.preset.insert {
- -- Select the [n]ext item
- ['<C-n>'] = cmp.mapping.select_next_item(),
- -- Select the [p]revious item
- ['<C-p>'] = cmp.mapping.select_prev_item(),
+ -- For an understanding of why these mappings were
+ -- chosen, you will need to read `:help ins-completion`
+ --
+ -- No, but seriously. Please read `:help ins-completion`, it is really good!
+ mapping = cmp.mapping.preset.insert {
+ -- Select the [n]ext item
+ ['<C-n>'] = cmp.mapping.select_next_item(),
+ -- Select the [p]revious item
+ ['<C-p>'] = cmp.mapping.select_prev_item(),
- -- Scroll the documentation window [b]ack / [f]orward
- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
- ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ -- Scroll the documentation window [b]ack / [f]orward
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
- -- Accept ([y]es) the completion.
- -- This will auto-import if your LSP supports it.
- -- This will expand snippets if the LSP sent a snippet.
- ['<C-y>'] = cmp.mapping.confirm { select = true },
+ -- Accept ([y]es) the completion.
+ -- This will auto-import if your LSP supports it.
+ -- This will expand snippets if the LSP sent a snippet.
+ ['<C-y>'] = cmp.mapping.confirm {select = true},
- -- If you prefer more traditional completion keymaps,
- -- you can uncomment the following lines
- --['<CR>'] = cmp.mapping.confirm { select = true },
- --['<Tab>'] = cmp.mapping.select_next_item(),
- --['<S-Tab>'] = cmp.mapping.select_prev_item(),
+ -- If you prefer more traditional completion keymaps,
+ -- you can uncomment the following lines
+ -- ['<CR>'] = cmp.mapping.confirm { select = true },
+ -- ['<Tab>'] = cmp.mapping.select_next_item(),
+ -- ['<S-Tab>'] = cmp.mapping.select_prev_item(),
- -- Manually trigger a completion from nvim-cmp.
- -- Generally you don't need this, because nvim-cmp will display
- -- completions whenever it has completion options available.
- ['<C-Space>'] = cmp.mapping.complete {},
+ -- Manually trigger a completion from nvim-cmp.
+ -- Generally you don't need this, because nvim-cmp will display
+ -- completions whenever it has completion options available.
+ ['<C-Space>'] = cmp.mapping.complete {},
- -- Think of <c-l> as moving to the right of your snippet expansion.
- -- So if you have a snippet that's like:
- -- function $name($args)
- -- $body
- -- end
- --
- -- <c-l> will move you to the right of each of the expansion locations.
- -- <c-h> is similar, except moving you backwards.
- ['<C-l>'] = cmp.mapping(function()
- if luasnip.expand_or_locally_jumpable() then
- luasnip.expand_or_jump()
- end
- end, { 'i', 's' }),
- ['<C-h>'] = cmp.mapping(function()
- if luasnip.locally_jumpable(-1) then
- luasnip.jump(-1)
- end
- end, { 'i', 's' }),
+ -- Think of <c-k> as moving to the right of your snippet expansion.
+ -- So if you have a snippet that's like:
+ -- function $name($args)
+ -- $body
+ -- end
+ --
+ -- <c-k> will move you to the right of each of the expansion locations.
+ -- <c-j> is similar, except moving you backwards.
+ ['<C-k>'] = cmp.mapping(function()
+ if luasnip.expand_or_locally_jumpable() then
+ luasnip.expand_or_jump()
+ end
+ end, {'i', 's'}),
+ ['<C-j>'] = cmp.mapping(function()
+ if luasnip.locally_jumpable(-1) then
+ luasnip.jump(-1)
+ end
+ end, {'i', 's'})
- -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
- -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
- },
- sources = {
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
- { name = 'path' },
- { name = 'nvim_lsp_signature_help' },
- },
- }
- end,
- }
+ -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
+ -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
+ },
+ sources = {
+ {name = 'nvim_lsp'}, {name = 'luasnip'}, {name = 'path'},
+ {name = 'nvim_lsp_signature_help'}
+ }
+ }
+ end
+}