- 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
+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 = ','
+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 })