2.7 KiB
Configuring c++ on neovim https://www.youtube.com/watch?v=lsFoZIg-oDs
-
Installing clangd(LSP) In ensure_installed section then type
:MasonInstallAll. In lspconfig.lua add thislspconfig.clangd.setup{ on_attach=on_attach, capabilities=capabilities, init_options={ preferences={ disableSuggestions=true, } } }Add instead this in
lspconfig.luato remove warninglocal cmp_nvim_lsp = require "cmp_nvim_lsp" require("lspconfig").clangd.setup { on_attach = on_attach, capabilities = cmp_nvim_lsp.default_capabilities(), cmd = { "clangd", "--offset-encoding=utf-16", }, } -
Autoformatter Install clang-format. Add following in
plugins.lua{ "jose-elias-alvarez/null-ls.nvim", event="VeryLazy", opts=function () return require "custom.configs.null-ls" end, },Create
~/.config/nvim/lua/custom/configs/null-ls.luaand type thislocal null_ls= require("null-ls") local opts={ sources={ null_ls.builtins.formatting.clang_format, } } return optsPress space and type
fmto format it To have a custom file formatting we need to have.clang-formatin out project folder. Generate using this~/.local/share/nvim/mason/bin/clang-format --style GNU --dump-config > .clang-format -
Setup autoformat on save In
null-ls.luafile modify it like thislocal augroup=vim.api.nvim_create_augroup("LspFormatting",{}) local null_ls= require("null-ls") local opts={ sources={ null_ls.builtins.formatting.clang_format, }, on_attach=function (client,bufnr) if client.supports_method("textDocument/formatting") then vim.api.nvim_clear_autocmds({ group=augroup, buffer=bufnr, }) vim.api.nvim_create_autocmd("BufWritePre",{ group=augroup, buffer=bufnr, callback=function () vim.lsp.buf.format({bufnr=bufnr}) end, }) end end, } return opts -
Debugger With mason, install
codelldbplugin too. To able to debug them use--debugflag after gcc command when compiling like thisgcc --debug main.cpp -o mainAnd when running debugger mention name of executable file iemainhere Inplugins.luaadd this{ "mfussenegger/nvim-dap", config=function (_, _) require("core.utils").load_mappings("dap") end }, -- Also add this { "jay-babu/mason-nvim-dap.nvim", event="VeryLazy", dependencies={ "williamboman/mason.nvim", "mfussenegger/nvim-dap", }, opts={ handlers={} }, }, -- Add nvim-dap-ui too from javascript debugger tooAlso changes in
chadrc.luaand addmappings.lualike with js debugger too