summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/custom/config/language-servers.lua
blob: 0f07d95842cb1fae6d734cdbc468f1473f78e9ea (plain)
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-- NOTE: a table or true to enable, false to disable
return {
    lua_ls = {
        settings = {
            diagnostics = { globals = { 'vim' } },
            telemetry = { enabled = false },
            hint = { enable = true },
            workspace = {
                library = {
                    [vim.fn.expand('$VIMRUNTIME/lua')] = true,
                    [vim.fn.stdpath('config') .. '/lua'] = true,
                },
            },
        },
    }, -- lua
    -- clangd = {
    --     cmd = {
    --         'clangd',
    --         '--background-index',
    --         '--clang-tidy',
    --         '--header-insertion=iwyu',
    --         '--completion-style=detailed',
    --         '--function-arg-placeholders',
    --         '--fallback-style=llvm',
    --     },
    --     root_dir = function(filename)
    --         return require('lspconfig/util').root_pattern(
    --             '.clang-tidy',
    --             '.clang-format',
    --             'compile_commands.json',
    --             '.git'
    --         )(filename) or vim.fn.getcwd()
    --     end,
    --     init_options = {
    --         usePlaceholders = true,
    --         completeUnimported = true,
    --         clangdFileStatus = true,
    --     },
    -- }, -- c/cpp
    -- neocmake = {
    --     root_dir = function(filename)
    --         return require('lspconfig/util').root_pattern(
    --             'CMakePresets.json',
    --             'CTestConfig.cmake',
    --             'build',
    --             'cmake',
    --             '.git' -- NOTE: git is last due to monorepos (so it tries to use build/cmake first)
    --         )(filename) or vim.fn.getcwd()
    --     end,
    -- },
    -- pyright = {
    --     settings = {
    --         python = {
    --             pythonPath = '~/python/venv/bin/python',
    --         },
    --     },
    -- }, -- python
    -- bashls = true, -- bash
    -- taplo = true, -- toml
    -- lemminx = true, -- xml
    -- yamlls = true, -- yaml
    -- jsonls = true, -- json
    -- html = true, -- html
    -- cssls = true, -- css
    -- ts_ls = true, -- javascript/typescript
    -- astro = true, -- astro framework
    -- mdx_analyzer = true, -- markdown with JS I think
    -- marksman = true, -- Markdown LSP
    -- markdown_oxide = true, -- Markdown LSP but better
    -- gopls = {
    --     cmd = { 'gopls' },
    --     filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
    --     root_dir = function(filename)
    --         return require('lspconfig/util').root_pattern('go.work', 'go.mod', '.git')(filename)
    --     end,
    --     settings = {
    --         gopls = {
    --             gofumpt = true,
    --             codelenses = {
    --                 gc_details = false,
    --                 generate = true,
    --                 regenerate_cgo = true,
    --                 run_govulncheck = true,
    --                 test = true,
    --                 tidy = true,
    --                 upgrade_dependency = true,
    --                 vendor = true,
    --             },
    --             hints = {
    --                 assignVariableTypes = false,
    --                 compositeLiteralFields = false,
    --                 compositeLiteralTypes = true,
    --                 constantValues = true,
    --                 functionTypeParameters = false,
    --                 parameterNames = false,
    --                 rangeVariableTypes = true,
    --             },
    --             analyses = {
    --                 fieldalignment = true,
    --                 nilness = true,
    --                 unusedparams = true,
    --                 unusedwrite = true,
    --                 useany = true,
    --             },
    --             usePlaceholders = false,
    --             completeUnimported = true,
    --             staticcheck = true,
    --             directoryFilters = { '-.git', '-.vscode', '-.idea', '-.vscode-test', '-node_modules' },
    --             semanticTokens = true,
    --         },
    --     },
    -- }, -- Go LSP
    -- jdtls = true, -- java
    -- sqlls = true,
    -- sqls = {
    --     on_attach = function(client, bufnr)
    --         require('sqls').on_attach(client, bufnr)
    --     end,
    --     settings = {
    --         sqls = {
    --             connections = {
    --                 {
    --                     driver = 'sqlite3',
    --                     dataSourceName = '/home/kyren/projects/eko/server.db',
    --                 },
    --             },
    --         },
    --     },
    -- },
}