|
1 local diag_threshold = "WARN" |
|
2 |
1 vim.diagnostic.config({ |
3 vim.diagnostic.config({ |
2 virtual_text = { true, severity = "WARN", }, |
4 underline = { severity = {min = diag_threshold} }, |
|
5 virtual_text = { true, severity = {min = diag_threshold} }, |
|
6 }) |
|
7 |
|
8 -- Some options are more chill in text mode, this unchills them if a LSP is in |
|
9 -- play. Note they're global |
|
10 vim.api.nvim_create_autocmd("LspAttach", { |
|
11 once = true, |
|
12 group = "lsp_attach", |
|
13 callback = function(args) |
|
14 vim.opt.number = true |
|
15 vim.opt.updatetime = 250 |
|
16 end, |
3 }) |
17 }) |
4 |
18 |
5 vim.api.nvim_create_autocmd("LspAttach", { |
19 vim.api.nvim_create_autocmd("LspAttach", { |
6 once = true, |
20 group = "lsp_attach", |
7 callback = function(args) |
21 callback = function(args) |
8 vim.opt.number = true |
22 local bufnr = args.buf |
9 end, |
23 local client = vim.lsp.get_client_by_id(args.data.client_id) |
|
24 |
|
25 -- Enable highlight-under-cursor |
|
26 if client.server_capabilities.documentHighlightProvider then |
|
27 vim.cmd [[ |
|
28 hi! LspReferenceRead ctermfg=0 ctermbg=11 guifg=#f0a0c0 guibg=#302028 |
|
29 hi! LspReferenceText ctermfg=0 ctermbg=11 guifg=#f0a0c0 guibg=#302028 |
|
30 hi! LspReferenceWrite ctermfg=0 ctermbg=11 cterm=underline guifg=#f0a0c0 guibg=#302028 gui=underline |
|
31 ]] |
|
32 vim.api.nvim_create_augroup('lsp_document_highlight', { |
|
33 clear = false |
|
34 }) |
|
35 vim.api.nvim_clear_autocmds({ |
|
36 buffer = bufnr, |
|
37 group = 'lsp_document_highlight', |
|
38 }) |
|
39 vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { |
|
40 group = 'lsp_document_highlight', |
|
41 buffer = bufnr, |
|
42 callback = vim.lsp.buf.document_highlight, |
|
43 }) |
|
44 vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { |
|
45 group = 'lsp_document_highlight', |
|
46 buffer = bufnr, |
|
47 callback = vim.lsp.buf.clear_references, |
|
48 }) |
|
49 end |
|
50 |
|
51 -- enable auto diags in message area for below threshold |
|
52 vim.api.nvim_create_augroup('lsp_diags', {clear = false}) |
|
53 |
|
54 vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI"}, { |
|
55 group = "lsp_diags", |
|
56 buffer = bufnr, |
|
57 callback = function(opts, bufnr, line_nr, client_id) |
|
58 bufnr = bufnr or 0 |
|
59 line_nr = line_nr or (vim.api.nvim_win_get_cursor(0)[1] - 1) |
|
60 opts = opts or {['lnum'] = line_nr} |
|
61 |
|
62 local line_diagnostics = vim.diagnostic.get(bufnr, {lnum = line_nr, severity = {max = diag_threshold}}) |
|
63 if vim.tbl_isempty(line_diagnostics) then return end |
|
64 |
|
65 local diagnostic_message = "" |
|
66 for i, diagnostic in ipairs(line_diagnostics) do |
|
67 diagnostic_message = diagnostic_message .. string.format("%d: %s", i, diagnostic.message or "") |
|
68 print(diagnostic_message) |
|
69 if i ~= #line_diagnostics then |
|
70 diagnostic_message = diagnostic_message .. "\n" |
|
71 end |
|
72 end |
|
73 vim.api.nvim_echo({{diagnostic_message, "Normal"}}, false, {}) |
|
74 end, |
|
75 }) |
|
76 |
|
77 end |
10 }) |
78 }) |