Logo

index : nvim-config

---

  • summary
  • about
  • tree
  • log
  • branches
<< path: root/public/nvim-config.git/html/after/plugin/lsp.lua blob: 75d669962684424778c8d955d7f47bb2bcf38d89 [raw] [clear marker]

        
0vim.api.nvim_create_autocmd('LspAttach', {
1 group = vim.api.nvim_create_augroup('user_lsp_attach', {clear = true}),
2 callback = function(event)
3 local opts = {buffer = event.buf}
4
5 -- vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, opts)
6 -- vim.keymap.set('n', 'K', function() vim.lsp.buf.hover() end, opts)
7 vim.keymap.set('n', '<leader>vws', function() vim.lsp.buf.workspace_symbol() end, opts)
8 vim.keymap.set('n', '<leader>vd', function() vim.diagnostic.open_float() end, opts)
9 vim.keymap.set('n', '<leader>nd', function() vim.diagnostic.goto_next() end, opts)
10 vim.keymap.set('n', '<leader>pd', function() vim.diagnostic.goto_prev() end, opts)
11 vim.keymap.set('n', '<leader>ca', function() vim.lsp.buf.code_action() end, opts)
12 vim.keymap.set('n', '<leader>rr', function() vim.lsp.buf.references() end, opts)
13 vim.keymap.set('n', '<leader>rn', function() vim.lsp.buf.rename() end, opts)
14 vim.keymap.set('i', '<C-h>', function() vim.lsp.buf.signature_help() end, opts)
15 end,
16})
17
18-- Go to definition (CTAGS)
19vim.keymap.set('n', 'gd', function()
20 vim.cmd('tag ' .. vim.fn.expand('<cword>'))
21end, { noremap = true, desc = 'Jump to definition (ctags)' })
22
23-- Open definition in new pane (CTAGS)
24vim.keymap.set('n', 'K', function()
25 vim.cmd('split')
26 vim.cmd('tag ' .. vim.fn.expand('<cword>'))
27end, { noremap = true, desc = 'Open definition in split window' })
28
29
30-- nvim people disabled it by default with 0.10
31vim.diagnostic.config({
32 -- virtual_text = true
33 virtual_text = {
34 severity = { min = vim.diagnostic.severity.WARN }
35 }
36})
37
38local lsp_capabilities = require('cmp_nvim_lsp').default_capabilities()
39local cmp = require('cmp')
40local cmp_select = {behavior = cmp.SelectBehavior.Select}
41
42cmp.setup({
43 sources = {
44 {name = 'path'},
45 {name = 'nvim_lsp'},
46 {name = 'luasnip', keyword_length = 2},
47 {name = 'buffer', keyword_length = 3},
48 },
49 mapping = cmp.mapping.preset.insert({
50 ['<S-tab>'] = cmp.mapping.select_prev_item(cmp_select),
51 ['<tab>'] = cmp.mapping.select_next_item(cmp_select),
52 ['<CR>'] = cmp.mapping.confirm({ select = true }),
53 ['<C-Space>'] = cmp.mapping.complete(),
54 }),
55 snippet = {
56 expand = function(args)
57 require('luasnip').lsp_expand(args.body)
58 end,
59 },
60})
61
62-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
63cmp.setup.cmdline({ '/', '?' }, {
64 mapping = cmp.mapping.preset.cmdline(),
65 sources = {
66 { name = 'buffer' }
67 }
68})
69--
70-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
71cmp.setup.cmdline(':', {
72 mapping = cmp.mapping.preset.cmdline(),
73 sources = cmp.config.sources({
74 { name = 'path' }
75 }, {
76 { name = 'cmdline' }
77 })
78})
79
Copyright 2026  E766CB298A6D1E64 | Git-Thing heavily inspired by cgit