aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/lua/autocomplete.org
diff options
context:
space:
mode:
Diffstat (limited to 'config/nvim/lua/autocomplete.org')
-rw-r--r--config/nvim/lua/autocomplete.org57
1 files changed, 57 insertions, 0 deletions
diff --git a/config/nvim/lua/autocomplete.org b/config/nvim/lua/autocomplete.org
new file mode 100644
index 0000000..505e93c
--- /dev/null
+++ b/config/nvim/lua/autocomplete.org
@@ -0,0 +1,57 @@
+#+title: Neovim Auto-complete Settings
+Set up auto-completion with LSP.
+#+begin_src lua :tangle yes
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ local lspconfig = require('lspconfig')
+
+ local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver' }
+ for _, lsp in ipairs(servers) do
+ lspconfig[lsp].setup {
+ -- on_attach = my_custom_on_attach,
+ capabilities = capabilities,
+ }
+ end
+
+ local luasnip = require 'luasnip'
+
+ local cmp = require 'cmp'
+ cmp.setup {
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<CR>'] = cmp.mapping.confirm {
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = true,
+ },
+ ['<Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ ['<S-Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ }),
+ sources = {
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ },
+ }
+#+end_src