@@ -99,30 +99,55 @@ local on_attach = function(client, bufnr)
9999 nmap (' ,m' , ' <cmd>lua require("ccls.protocol").request("textDocument/references",{role=64})<cr>' ) -- macro
100100 nmap (' ,r' , ' <cmd>lua require("ccls.protocol").request("textDocument/references",{role=8})<cr>' ) -- read
101101 nmap (' ,w' , ' <cmd>lua require("ccls.protocol").request("textDocument/references",{role=16})<cr>' ) -- write
102- nmap (' <M-,>' , ' <cmd>lua vim.lsp.buf.references()<CR>' , ' References' )
103- nmap (' <M-j>' , ' <cmd>lua vim.lsp.buf.definition()<CR>' , ' Definitions' )
104- nmap (' <space>=' , ' <cmd>lua vim.lsp.buf.formatting()<CR>' )
105- nmap (' <space>e' , ' <cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>' )
106- nmap (' <space>lc' , ' <cmd>lua vim.lsp.buf.code_action()<CR>' )
107- nmap (' <space>lr' , ' <cmd>lua vim.lsp.buf.rename()<CR>' , ' Rename' )
108- nmap (' <space>wa' , ' <cmd>lua vim.lsp.buf.add_workspace_folder()<CR>' )
109- nmap (' <space>wl' , ' <cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>' )
110- nmap (' <space>wr' , ' <cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>' )
111- nmap (' K' , ' <cmd>lua vim.lsp.buf.hover()<CR>' , ' Hover' )
112- nmap (' [e' , ' <cmd>lua vim.diagnostic.goto_prev()<CR>' )
113- nmap (' ]e' , ' <cmd>lua vim.diagnostic.goto_next()<CR>' )
114- nmap (' gD' , ' <cmd>lua vim.lsp.buf.declaration()<CR>' , ' Declarations' )
102+ -- nmap('<M-,>', '<cmd>lua vim.lsp.buf.references()<CR>', 'References')
103+ nmap (' <M-,>' , ' <cmd>Telescope lsp_references<CR>' , ' References' )
104+ -- nmap('<M-j>', '<cmd>lua vim.lsp.buf.definition()<cr>', 'Definitions')
105+ nmap (' <M-j>' , ' <cmd>Telescope lsp_definitions<cr>' , ' Definitions' )
106+ nmap (' <space>=' , ' <cmd>lua vim.lsp.buf.formatting()<cr>' )
107+ nmap (' <space>e' , ' <cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<cr>' )
108+ nmap (' <space>lc' , ' <cmd>lua vim.lsp.buf.code_action()<cr>' )
109+ nmap (' <space>li' , ' <cmd>Inspect<cr>' )
110+ nmap (' <space>lr' , ' <cmd>lua vim.lsp.buf.rename()<cr>' , ' Rename' )
111+ nmap (' <space>wa' , ' <cmd>lua vim.lsp.buf.add_workspace_folder()<cr>' )
112+ nmap (' <space>wl' , ' <cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<cr>' )
113+ nmap (' <space>wr' , ' <cmd>lua vim.lsp.buf.remove_workspace_folder()<cr>' )
114+ nmap (' K' , ' <cmd>lua vim.lsp.buf.hover()<cr>' , ' Hover' )
115+ nmap (' [e' , ' <cmd>lua vim.diagnostic.goto_prev()<cr>' )
116+ nmap (' ]e' , ' <cmd>lua vim.diagnostic.goto_next()<cr>' )
117+ nmap (' gD' , ' <cmd>lua vim.lsp.buf.declaration()<cr>' , ' Declarations' )
118+ nmap (' ga' , ' <cmd>Telescope lsp_dynamic_workspace_symbols<cr>' , ' Workspace symbols' )
115119 nmap (' xB' , ' <cmd>CclsBaseHierarchy<cr>' )
116120 nmap (' xC' , ' <cmd>CclsOutgoingCalls<cr>' , ' callee' )
117121 nmap (' xD' , ' <cmd>CclsDerivedHierarchy<cr>' )
118122 nmap (' xM' , ' <cmd>CclsMemberHierarchy<cr>' , ' member' )
119123 nmap (' xb' , ' <cmd>CclsBase<cr>' )
120124 nmap (' xc' , ' <cmd>CclsIncomingCalls<cr>' , ' caller' )
121125 nmap (' xd' , ' <cmd>CclsDerived<cr>' )
122- nmap (' xi' , ' <cmd>lua vim.lsp.buf.implementation()<CR >' , ' Implementation' )
126+ nmap (' xi' , ' <cmd>lua vim.lsp.buf.implementation()<cr >' , ' Implementation' )
123127 nmap (' xm' , ' <cmd>CclsMember<cr>' , ' member' )
124- nmap (' xt' , ' <cmd>lua vim.lsp.buf.type_definition()<CR >' , ' Type definition' )
128+ nmap (' xt' , ' <cmd>lua vim.lsp.buf.type_definition()<cr >' , ' Type definition' )
125129 nmap (' xv' , ' <cmd>CclsVars<cr>' , ' vars' )
130+
131+ if client .supports_method ' textDocument/documentHighlight' then
132+ vim .api .nvim_create_augroup (' lsp_document_highlight' , {clear = true })
133+ vim .api .nvim_clear_autocmds {buffer = bufnr , group = ' lsp_document_highlight' }
134+ vim .api .nvim_create_autocmd (' CursorHold' , {
135+ callback = vim .lsp .buf .document_highlight ,
136+ buffer = bufnr ,
137+ group = ' lsp_document_highlight' ,
138+ desc = ' Document Highlight' ,
139+ })
140+ vim .api .nvim_create_autocmd (' CursorMoved' , {
141+ callback = vim .lsp .buf .clear_references ,
142+ buffer = bufnr ,
143+ group = ' lsp_document_highlight' ,
144+ desc = ' Clear All the References' ,
145+ })
146+ end
147+
148+ if client .server_capabilities .semanticTokensProvider then
149+ vim .treesitter .stop (bufnr )
150+ end
126151end
127152local servers = {' ccls' , ' lua_ls' , ' nimls' , ' pyright' , ' rust_analyzer' , ' ts_ls' }
128153for _ , lsp in ipairs (servers ) do
@@ -139,6 +164,9 @@ for _, lsp in ipairs(servers) do
139164 threads = 0 ,
140165 initialBlacklist = {" /(test|unittests)/" },
141166 };
167+ highlight = {
168+ rainbow = 10 ,
169+ };
142170 }
143171 })
144172 elseif lsp == ' lua_ls' then
@@ -220,11 +248,50 @@ cmp.setup {
220248 completion = {completeopt = ' menu,menuone,noinsert' }
221249}
222250
223- vim .api .nvim_exec (' hi default link CocHoverRange NONE' , true )
224-
225251require (' mason' ).setup ()
226252require (' mason-lspconfig' ).setup ()
227253
254+ local func_colors = {
255+ ' #e5b124' , ' #927754' , ' #eb992c' , ' #e2bf8f' , ' #d67c17' ,
256+ ' #88651e' , ' #e4b953' , ' #a36526' , ' #b28927' , ' #d69855' ,
257+ }
258+ local type_colors = {
259+ ' #e1afc3' , ' #d533bb' , ' #9b677f' , ' #e350b6' , ' #a04360' ,
260+ ' #dd82bc' , ' #de3864' , ' #ad3f87' , ' #dd7a90' , ' #e0438a' ,
261+ }
262+ local param_colors = {
263+ ' #e5b124' , ' #927754' , ' #eb992c' , ' #e2bf8f' , ' #d67c17' ,
264+ ' #88651e' , ' #e4b953' , ' #a36526' , ' #b28927' , ' #d69855' ,
265+ }
266+ local var_colors = {
267+ ' #429921' , ' #58c1a4' , ' #5ec648' , ' #36815b' , ' #83c65d' ,
268+ ' #419b2f' , ' #43cc71' , ' #7eb769' , ' #58bf89' , ' #3e9f4a' ,
269+ }
270+ local all_colors = {
271+ class = type_colors ,
272+ enum = type_colors ,
273+ enumMember = var_colors ,
274+ field = var_colors ,
275+ [' function' ] = func_colors ,
276+ method = func_colors ,
277+ parameter = param_colors ,
278+ struct = type_colors ,
279+ typeAlias = type_colors ,
280+ typeParameter = type_colors ,
281+ variable = var_colors
282+ }
283+ for type , colors in pairs (all_colors ) do
284+ for i = 1 ,# colors do
285+ vim .api .nvim_set_hl (0 , string.format (' @lsp.typemod.%s.id%s.cpp' , type , i - 1 ), {fg = colors [i ]})
286+ end
287+ end
288+
289+ vim .cmd ([[
290+ hi @lsp.mod.classScope.cpp gui=italic
291+ hi @lsp.mod.static.cpp gui=bold
292+ hi @lsp.typemod.variable.namespaceScope.cpp gui=bold,underline
293+ ]] )
294+
228295require (' nvim_comment' ).setup ()
229296
230297-- Default map: <leader>h ]c [c
0 commit comments