comparison dot_config/nvim/config.lua @ 319:b93f12d23fbd

Rename init.lua to config.lua init.lua is now automatically sourced, and runs before init.vim causing issues like lspconfig that cannot be found. Renaming to something that will not be sourced automatically and manually load it from init.vim when all plugins are loaded
author Zeger Van de Vannet <zegervdv@me.com>
date Thu, 17 Dec 2020 17:49:14 +0100
parents
children aa0a095f8759
comparison
equal deleted inserted replaced
318:93b8df942a20 319:b93f12d23fbd
1 local lsp = require'lspconfig'
2 local lsputil = require'lspconfig.util'
3
4 require "nvim-treesitter.highlight"
5
6 require'nvim-treesitter.configs'.setup {
7 highlight = {
8 enable = true,
9 },
10 incremental_selection = {
11 enable = true,
12 keymaps = {
13 init_selection = "gnn",
14 node_incremental = "grn",
15 scope_incremental = "grc",
16 node_decremental = "grm",
17 }
18 },
19 refactor = {
20 highlight_definitions = { enable = true },
21 smart_rename = {
22 enable = true,
23 keymaps = {
24 smart_rename = "grr",
25 },
26 },
27 navigation = {
28 enable = true,
29 keymaps = {
30 goto_definition = "gnd",
31 list_definitions = "gnD",
32 },
33 },
34 },
35 textobjects = {
36 move = {
37 enable = true,
38 goto_next_start = {
39 ["]]"] = "@block.outer",
40 },
41 goto_previous_start = {
42 ["[["] = "@block.outer",
43 },
44 goto_next_end = {
45 ["]["] = "@block.outer",
46 },
47 goto_previous_end = {
48 ["[]"] = "@block.outer",
49 },
50 },
51 },
52 playground = {
53 enable = true,
54 disable = {},
55 updatetime = 25,
56 persist_queries = false
57 }
58 }
59
60 local chain_complete_list = {
61 default = {
62 default = {
63 {complete_items = {'lsp'}},
64 {complete_items = {'lsp', 'snippet', 'ts', 'buffer'}},
65 {complete_items = {'path'}, triggered_only = {'/'}},
66 {complete_items = {'ts'}},
67 },
68 string = {
69 {complete_items = {'path'}, triggered_only = {'/'}},
70 },
71 comment = {},
72 }
73 }
74
75 local on_attach = function(client)
76 require'completion'.on_attach({
77 sorting = 'alphabet',
78 matching_strategy_list = {'exact', 'fuzzy'},
79 chain_complete_list = chain_complete_list,
80 })
81 -- This came from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/lsp_config.lua
82 local mapper = function(mode, key, result, noremap)
83 if noremap == nil then
84 noremap = true
85 end
86 vim.fn.nvim_buf_set_keymap(0, mode, key, result, {noremap=noremap, silent=true})
87 end
88
89 -- vim.api.nvim_command('autocmd CursorHold <buffer> lua vim.lsp.diagnostic.show_line_diagnostics()')
90 mapper('n', '<CR>', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>')
91 mapper('n', 'gd', '<cmd>lua vim.lsp.buf.declaration()<CR>')
92 mapper('n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<CR>')
93 mapper('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
94 mapper('n', 'gD', '<cmd>lua vim.lsp.buf.implementation()<CR>')
95 mapper('n', '1gD', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
96 -- mapper('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
97 mapper('n', 'gr', "<cmd>lua require'telescope.builtin'.lsp_references()<CR>")
98 mapper('n', 'g0', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')
99 mapper('i', '<c-l>', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
100 mapper('n', '<leader>f', '<cmd>lua vim.lsp.buf.code_action()<CR>')
101 mapper('n', '<c-p>', '<cmd>lua vim.lsp.buf.formatting()<CR>')
102 mapper("i", "<c-n>", "<Plug>(completion_trigger)", false)
103 mapper("i", "<c-j>", "<Plug>(completion_next_source)", false)
104 mapper("i", "<c-k>", "<Plug>(completion_prev_source)", false)
105 end
106
107
108 vim.lsp.handlers["textDocument/formatting"] = function(err, _, result, _, bufnr)
109 if err ~= nil or result == nil then
110 return
111 end
112 if not vim.api.nvim_buf_get_option(bufnr, "modified") then
113 local view = vim.fn.winsaveview()
114 vim.lsp.util.apply_text_edits(result, bufnr)
115 -- Fix to reload Treesitter
116 -- vim.api.nvim_command("edit")
117 vim.fn.winrestview(view)
118 end
119 end
120
121 lsp.pyls.setup{
122 cmd = {"pyls"},
123 on_attach = on_attach;
124 }
125
126 if (vim.fn.executable('veridian') == 1) then
127 lsp.veridian.setup{
128 on_attach = on_attach;
129 }
130 end
131
132 if (vim.fn.executable('efm-langserver') == 1) then
133 lsp.efm.setup{
134 on_attach = on_attach;
135 root_dir = lsputil.root_pattern('.git', '.hg');
136 }
137 end