annotate dot_config/nvim/init.lua @ 313:a1ed17cc354b

Add a post-formatting handler to reload the buffer This fixes some issues with treesitter highlighting/refactor not working after formatting the buffer. source: https://github.com/lukas-reineke/dotfiles/blob/97b95c9c27cada6ff73080600f724c58f3d7ebfd/vim/lua/lsp.lua#L31
author Zeger Van de Vannet <zegervdv@me.com>
date Thu, 26 Nov 2020 09:07:17 +0100
parents f94a7c50a28d
children 7d73e664f702
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
306
43ee619a8657 Update to use lspconfig
zegervdv <zegervdv@me.com>
parents: 305
diff changeset
1 local lsp = require'lspconfig'
310
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
2 local lsputil = require'lspconfig.util'
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
3
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
4 require "nvim-treesitter.highlight"
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
5
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
6 require'nvim-treesitter.configs'.setup {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
7 highlight = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
8 enable = true,
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
9 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
10 incremental_selection = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
11 enable = true,
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
12 keymaps = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
13 init_selection = "gnn",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
14 node_incremental = "grn",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
15 scope_incremental = "grc",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
16 node_decremental = "grm",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
17 }
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
18 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
19 refactor = {
287
7168baf3c352 treesitter: highlight definitions/uses of the variable under the cursor
zegervdv <zegervdv@me.com>
parents: 285
diff changeset
20 highlight_definitions = { enable = true },
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
21 smart_rename = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
22 enable = true,
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
23 keymaps = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
24 smart_rename = "grr",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
25 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
26 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
27 navigation = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
28 enable = true,
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
29 keymaps = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
30 goto_definition = "gnd",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
31 list_definitions = "gnD",
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
32 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
33 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
34 },
305
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
35 textobjects = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
36 move = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
37 enable = true,
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
38 goto_next_start = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
39 ["]]"] = "@block.outer",
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
40 },
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
41 goto_previous_start = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
42 ["[["] = "@block.outer",
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
43 },
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
44 goto_next_end = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
45 ["]["] = "@block.outer",
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
46 },
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
47 goto_previous_end = {
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
48 ["[]"] = "@block.outer",
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
49 },
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
50 },
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
51 },
282
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
52 playground = {
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
53 enable = true,
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
54 disable = {},
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
55 updatetime = 25,
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
56 persist_queries = false
6279917e1aaa Switch to vim-one colorscheme
zegervdv <zegervdv@me.com>
parents: 281
diff changeset
57 }
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
58 }
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
59
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
60 local chain_complete_list = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
61 default = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
62 default = {
312
f94a7c50a28d Provide LSP completion in a separate source
Zeger Van de Vannet <zegervdv@me.com>
parents: 311
diff changeset
63 {complete_items = {'lsp'}},
305
10078cb76622 Add treesitter refactor and textobjects plugins
zegervdv <zegervdv@me.com>
parents: 301
diff changeset
64 {complete_items = {'lsp', 'snippet', 'ts', 'buffer'}},
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
65 {complete_items = {'path'}, triggered_only = {'/'}},
285
d48b05b03ddf Add treesitter based completion
zegervdv <zegervdv@me.com>
parents: 282
diff changeset
66 {complete_items = {'ts'}},
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
67 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
68 string = {
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
69 {complete_items = {'path'}, triggered_only = {'/'}},
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
70 },
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
71 comment = {},
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
72 }
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
73 }
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
74
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
75 local on_attach = function(client)
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
76 require'completion'.on_attach({
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
77 sorting = 'alphabet',
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
78 matching_strategy_list = {'exact', 'fuzzy'},
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
79 chain_complete_list = chain_complete_list,
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
80 })
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
81 -- This came from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/lsp_config.lua
311
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
82 local mapper = function(mode, key, result, noremap)
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
83 if noremap == nil then
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
84 noremap = true
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
85 end
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
86 vim.fn.nvim_buf_set_keymap(0, mode, key, result, {noremap=noremap, silent=true})
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
87 end
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
88
301
f1590ff676ab Remove diagnostics plugin and upgrade config to built-in diagnostics
zegervdv <zegervdv@me.com>
parents: 298
diff changeset
89 vim.api.nvim_command('autocmd CursorHold <buffer> lua vim.lsp.diagnostic.show_line_diagnostics()')
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
90 mapper('n', 'gd', '<cmd>lua vim.lsp.buf.declaration()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
91 mapper('n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
92 mapper('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
93 mapper('n', 'gD', '<cmd>lua vim.lsp.buf.implementation()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
94 mapper('n', '1gD', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
95 mapper('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
96 mapper('n', 'g0', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
97 mapper('i', '<c-l>', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
301
f1590ff676ab Remove diagnostics plugin and upgrade config to built-in diagnostics
zegervdv <zegervdv@me.com>
parents: 298
diff changeset
98 mapper('n', '<leader>f', '<cmd>lua vim.lsp.buf.code_action()<CR>')
307
b1578effa848 Add <c-p> as map to reformat using lsp
zegervdv <zegervdv@me.com>
parents: 306
diff changeset
99 mapper('n', '<c-p>', '<cmd>lua vim.lsp.buf.formatting()<CR>')
311
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
100 mapper("i", "<c-n>", "<Plug>(completion_trigger)", false)
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
101 mapper("i", "<c-j>", "<Plug>(completion_next_source)", false)
8cefee2cbe37 Add mappings to trigger completion and switch sources
zegervdv <zegervdv@me.com>
parents: 310
diff changeset
102 mapper("i", "<c-k>", "<Plug>(completion_prev_source)", false)
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
103 end
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
104
313
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
105 vim.lsp.handlers["textDocument/formatting"] = function(err, _, result, _, bufnr)
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
106 if err ~= nil or result == nil then
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
107 return
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
108 end
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
109 if not vim.api.nvim_buf_get_option(bufnr, "modified") then
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
110 local view = vim.fn.winsaveview()
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
111 vim.lsp.util.apply_text_edits(result, bufnr)
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
112 vim.fn.winrestview(view)
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
113 -- Fix to reload Treesitter
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
114 vim.api.nvim_command("edit")
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
115 end
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
116 end
a1ed17cc354b Add a post-formatting handler to reload the buffer
Zeger Van de Vannet <zegervdv@me.com>
parents: 312
diff changeset
117
280
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
118 lsp.pyls.setup{
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
119 cmd = {"pyls"},
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
120 on_attach = on_attach;
dd8b9d0c0e41 Move lua config to lua.init
zegervdv <zegervdv@me.com>
parents:
diff changeset
121 }
298
a7901c1366de Add veridian language server
Zeger Van de Vannet <zegervdv@me.com>
parents: 295
diff changeset
122
308
33b9f4c5ae6a Add check to see if veridian is installed before loading it as lsp
zegervdv <zegervdv@me.com>
parents: 307
diff changeset
123 if (vim.fn.executable('veridian') == 1) then
33b9f4c5ae6a Add check to see if veridian is installed before loading it as lsp
zegervdv <zegervdv@me.com>
parents: 307
diff changeset
124 lsp.veridian.setup{
33b9f4c5ae6a Add check to see if veridian is installed before loading it as lsp
zegervdv <zegervdv@me.com>
parents: 307
diff changeset
125 on_attach = on_attach;
33b9f4c5ae6a Add check to see if veridian is installed before loading it as lsp
zegervdv <zegervdv@me.com>
parents: 307
diff changeset
126 }
33b9f4c5ae6a Add check to see if veridian is installed before loading it as lsp
zegervdv <zegervdv@me.com>
parents: 307
diff changeset
127 end
310
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
128
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
129 if (vim.fn.executable('efm-langserver') == 1) then
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
130 lsp.efm.setup{
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
131 on_attach = on_attach;
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
132 root_dir = lsputil.root_pattern('.git', '.hg');
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
133 }
386f7d66c031 Add efm-langserver for formatting and linting
zegervdv <zegervdv@me.com>
parents: 308
diff changeset
134 end