On 23/09/19 12:45PM, Maciej Wieczór-Retman wrote: > On 2023-09-19 at 06:24:24 -0300, Ricardo B. Marliere wrote: > >On 23/09/19 09:45AM, Maciej Wieczór-Retman wrote: > >> Hi, > >> I'm using neovim for a long time now and I've been using ccls as the LSP > >> for anything in C. It's working very well with userspace programs (with > >> "bear -- make" to generate compile_commands.json) but it seems to take > >> up a lot of CPU power whenever I reboot and open any kernel code. > >> > >> The kernel provides it's own way to get compile_commands.json and I > >> understand that ccls needs a bit of time to index these thousands of > >> files. > >> > >> But does anyone know if there is a way to avoid indexing files so often? > >> Or maybe is there a better LSP for C? I couldn't really find anything > >> else and I'm running Arch Linux which suggests it's the recommended one > >> for C. > > > >Hey there Maciej! > > > >I've been using clangd with no problems, the indexing is expensive but > >after that it's a breeze. Are you cleaning your tree very often? > > Yes, quite often lately. Does it affect the indexing? I'll try using > output directory for .o files and binaries and I'll clean that less, maybe > that will help. Thanks. I think this is what's causing the constant re-indexing, then. Maybe use a 'static' tree-dir just for browsing the code using the LSP? The output directory is a good idea, I'll try it out aswell - thanks! > > >(...) > >local lspconfig = require("lspconfig") > >local get_servers = require("mason-lspconfig").get_installed_servers > >for _, server_name in ipairs(get_servers()) do > > if server_name == "clangd" then > > local compile_commands = vim.fn.getcwd() .. "/compile_commands.json" > > if vim.fn.filereadable(compile_commands) == 1 then > > lspconfig[server_name].setup({ > > on_attach = LSPAttach, > > capabilities = LSPCapabilities, > > offset_encoding = "utf-16", > > }) > > end > > else > > lspconfig[server_name].setup({ > > on_attach = LSPAttach, > > capabilities = LSPCapabilities, > > offset_encoding = "utf-16", > > }) > > end > >end > > > > I see you're using mason-lspconfig. Is the default nvim-lspconfig worse > somehow? I picked it because it seemed pretty simple and I wanted to > start with something straight forward but maybe mason handles some stuff > better? Mason is just a nice frontend for installing LSPs, DAPs, Linters and Formatters. I use it because sometimes I like to explore the available tooling :) I shared that snippet only to show the usecase of setting up all installed servers and starting clangd only if there is a compile_commands.json available. Thought it could be helpful. Good luck, - Ricardo _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies