aboutsummaryrefslogtreecommitdiffstats
path: root/nvim/lua/plugins/lsp.lua
blob: 217802aaff3ceb87bb2ab9a717fc86536455050f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
local lspconfig = {
    'neovim/nvim-lspconfig',
    lazy = false,
    dependencies = {
        'williamboman/mason.nvim',
        'williamboman/mason-lspconfig'
    },
    keys = {
        {
            'gd',
            function()
                vim.lsp.buf.definition()
            end,
            mode = 'n',
            desc = "Go to definition"
        },
        {
            '<leader>r',
            function ()
                vim.lsp.buf.rename()
            end,
            mode = 'n',
            desc = "Rename symbol"
        },
        {
            '<C-f>',
            function()
                vim.lsp.buf.format()
            end,
            mode = {'n', 'v'},
            desc = "Format code"
        },
        {
            '<leader>la',
            function ()
                vim.lsp.buf.code_action()
            end,
            mode = {'n', 's'},
            desc = "Show code actions"
        },
        {
            '<leader>lr',
            function ()
                vim.lsp.buf.references()
            end,
            mode = 'n',
            desc = "Add symbol references to qf"
        },
        {
            '<C-h>',
            function ()
                vim.lsp.buf.signature_help()
            end,
            mode = 'i',
            desc = "Show signature help"
        }
    }
}

local mason = {
    'williamboman/mason.nvim',
    opts = {}
}

local mason_lspconfig = {
    'williamboman/mason-lspconfig.nvim',
    dependencies = {
        'williamboman/mason.nvim',
    },
    opts = {
        handlers = {
            function(server_name)
                require('lspconfig')[server_name].setup({})
            end
        },
        ["lua_ls"] = function ()
            require('lspconfig').lua_ls.setup({
                settings = {
                    Lua = {
                        diagnostics = {
                            globals = { "vim" }
                        }
                    }
                }
            })
        end
    }
}


return {
    mason,
    mason_lspconfig,
    lspconfig,
}