aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/lua/autocomplete.org
diff options
context:
space:
mode:
authorJacob Janzen <jjanzenn@proton.me>2024-08-07 14:58:48 -0500
committerJacob Janzen <jjanzenn@proton.me>2024-08-07 14:58:48 -0500
commit341c3be75228dbd23fd05208d148acecf950d573 (patch)
treeecac1a33408f61c9816c56f97a2b617ab425c68e /config/nvim/lua/autocomplete.org
initial commit
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