repos / dotfiles

my dotfiles

commit
7f1f767
parent
6fac95c
author
Eric Bower
date
2025-07-07 09:54:48 -0400 EDT
refactor(nvim): builtin autocompletion
2 files changed,  +49, -88
M dot_config/nvim/lua/init.lua
+15, -15
 1@@ -1,18 +1,18 @@
 2-local o = vim.o
 3-o.tabstop        = 2
 4-o.shiftwidth     = 2
 5-o.softtabstop    = 2
 6-o.expandtab      = true
 7-o.wrap           = false
 8-o.autoread       = true
 9-o.list           = true
10-o.signcolumn     = 'yes'
11-o.backspace      = 'indent,eol,start'
12-o.completeopt    = 'menuone,noselect'
13-o.shell          = '/bin/bash'
14-o.laststatus     = 0
15-o.colorcolumn    = '80'
16--- o.number         = true
17+local opt = vim.opt
18+opt.tabstop        = 2
19+opt.shiftwidth     = 2
20+opt.softtabstop    = 2
21+opt.expandtab      = true
22+opt.wrap           = false
23+opt.autoread       = true
24+opt.list           = true
25+opt.signcolumn     = 'yes'
26+opt.backspace      = 'indent,eol,start'
27+opt.shell          = '/bin/bash'
28+opt.colorcolumn    = '80'
29+opt.completeopt    = { "menuone", "noselect", "popup" }
30+opt.laststatus     = 0
31+-- opt.number         = true
32 
33 vim.g.mapleader      = ','
34 vim.g.maplocalleader = ','
M dot_config/nvim/lua/plugins.lua
+34, -73
  1@@ -16,6 +16,12 @@ vim.opt.rtp:prepend(lazypath)
  2 
  3 function setup_treesitter()
  4   require'nvim-treesitter.configs'.setup {
  5+    highlight = {
  6+      enable = true,
  7+    },
  8+    indent = {
  9+      enable = true
 10+    },
 11     ensure_installed = {
 12       "bash",
 13       "c",
 14@@ -56,49 +62,9 @@ function setup_treesitter()
 15       "yaml",
 16       "zig",
 17     },
 18-    highlight = {
 19-      enable = true,
 20-    },
 21-    indent = {
 22-      enable = true
 23-    }
 24   }
 25 end
 26 
 27-function setup_comp()
 28-  local cmp = require'cmp'
 29-  cmp.setup({
 30-    snippet = {
 31-      expand = function(args)
 32-        vim.fn["vsnip#anonymous"](args.body)
 33-      end,
 34-    },
 35-    mapping = {
 36-      ['<C-p>'] = cmp.mapping.select_prev_item(),
 37-      ['<C-n>'] = cmp.mapping.select_next_item(),
 38-      ['<Tab>'] = function(fallback)
 39-        if cmp.visible() then
 40-          cmp.select_next_item()
 41-        else
 42-          fallback()
 43-        end
 44-      end,
 45-      ['<S-Tab>'] = function(fallback)
 46-        if cmp.visible() then
 47-          cmp.select_prev_item()
 48-        else
 49-          fallback()
 50-        end
 51-      end,
 52-      ['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
 53-      ['<CR>'] = cmp.mapping.confirm({ select = true }),
 54-    },
 55-    sources = {
 56-      { name = 'nvim_lsp' },
 57-    },
 58-  })
 59-end
 60-
 61 function setup_lsp()
 62   local opts = { noremap=true, silent=true }
 63   vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
 64@@ -106,32 +72,31 @@ function setup_lsp()
 65   -- Use an on_attach function to only map the following keys
 66   -- after the language server attaches to the current buffer
 67   local on_attach = function(client, bufnr)
 68+    vim.lsp.completion.enable(true, client.id, bufnr, {
 69+      autotrigger = true,
 70+      convert = function(item)
 71+        return { abbr = item.label:gsub('%b()', '') }
 72+      end,
 73+    })
 74     local bufopts = { noremap=true, silent=true, buffer=bufnr }
 75 
 76-    --Enable completion triggered by <c-x><c-o>
 77-    vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
 78-
 79     -- See `:help vim.lsp.*` for documentation on any of the below functions
 80     vim.keymap.set('n', '<leader>d', vim.lsp.buf.definition, bufopts)
 81     vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
 82     vim.keymap.set('n', '<leader>h', vim.lsp.buf.hover, bufopts)
 83     vim.keymap.set('n', '<leader>r', vim.lsp.buf.references, bufopts)
 84     vim.keymap.set('n', '<leader>i', vim.lsp.buf.implementation, bufopts)
 85+    vim.keymap.set('i', '<c-k>', vim.lsp.completion.get, bufopts)
 86   end
 87 
 88   local nvim_lsp = require('lspconfig')
 89-  local capabilities = vim.lsp.protocol.make_client_capabilities()
 90-  capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
 91-  capabilities.textDocument.foldingRange = {
 92-    dynamicRegistration = false,
 93-    lineFoldingOnly = true
 94-  }
 95 
 96   function handler(server_name)
 97     local opts = {
 98       capabilities = capabilities,
 99       on_attach = on_attach,
100     }
101+
102     if server_name == "denols" then
103       opts.root_dir = nvim_lsp.util.root_pattern("deno.json", "deno.jsonc")
104     elseif server_name == "ts_ls" then
105@@ -139,6 +104,7 @@ function setup_lsp()
106       -- https://github.com/neovim/nvim-lspconfig/issues/2507#issuecomment-1471438640
107       opts.single_file_support = false
108     end
109+
110     nvim_lsp[server_name].setup(opts)
111   end
112 
113@@ -148,6 +114,7 @@ function setup_lsp()
114   handler("gopls")
115   handler("html")
116   handler("jsonls")
117+  -- npm i -g pyright
118   handler("pyright")
119   -- npm i -g typescript typescript-language-server
120   handler("ts_ls")
121@@ -168,12 +135,6 @@ require("lazy").setup({
122       build = ':TSUpdate',
123       config = setup_treesitter
124     },
125-    {
126-      "hrsh7th/nvim-cmp",
127-      dependencies = { "hrsh7th/cmp-buffer", "hrsh7th/cmp-vsnip", "hrsh7th/vim-vsnip" },
128-      config = setup_comp,
129-    },
130-    "hrsh7th/cmp-nvim-lsp",
131     {
132       'ruifm/gitlinker.nvim',
133       dependencies = 'nvim-lua/plenary.nvim',
134@@ -181,24 +142,6 @@ require("lazy").setup({
135         require"gitlinker".setup()
136       end,
137     },
138-    {
139-      "christoomey/vim-tmux-navigator",
140-      cmd = {
141-        "TmuxNavigateLeft",
142-        "TmuxNavigateDown",
143-        "TmuxNavigateUp",
144-        "TmuxNavigateRight",
145-        "TmuxNavigatePrevious",
146-        "TmuxNavigatorProcessList",
147-      },
148-      keys = {
149-        { "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
150-        { "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
151-        { "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
152-        { "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
153-        { "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
154-      },
155-    },
156     {
157       'Mofiqul/dracula.nvim',
158       lazy = false,
159@@ -225,5 +168,23 @@ require("lazy").setup({
160         fzf.setup({'max-perf'})
161       end
162     },
163+    {
164+      "christoomey/vim-tmux-navigator",
165+      cmd = {
166+        "TmuxNavigateLeft",
167+        "TmuxNavigateDown",
168+        "TmuxNavigateUp",
169+        "TmuxNavigateRight",
170+        "TmuxNavigatePrevious",
171+        "TmuxNavigatorProcessList",
172+      },
173+      keys = {
174+        { "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
175+        { "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
176+        { "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
177+        { "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
178+        { "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
179+      },
180+    },
181   },
182 })