diff options
| author | Aotrix <[email protected]> | 2025-02-24 16:26:54 +0100 |
|---|---|---|
| committer | Aotrix <[email protected]> | 2025-02-24 16:26:54 +0100 |
| commit | 18751830d1d73c87c19019d56ddd8014db5a433b (patch) | |
| tree | f1156ea5137ef36a59ce394936e164651d6bc399 /lua/aotrix | |
| parent | 47c9daea251a5295cc1612df91546b758a1b738e (diff) | |
snippets work for C++
Diffstat (limited to 'lua/aotrix')
| -rw-r--r-- | lua/aotrix/plugins/lsp.lua | 7 | ||||
| -rw-r--r-- | lua/aotrix/plugins/nvim_cmp.lua | 192 |
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 +} |
