It is a CMake lsp based on tower-lsp and treesitter
bash
cargo install neocmakelsp
The config of neocmakelsp is in nvim-lsp-config
, so just follow nvim-lsp-config
to setup it
neocmakelsp has two start ways: stdio
and Tcp
. Tcp
is for debug. If you want to help me and debug is , you should start it with Tcp
way.
lua
local configs = require("lspconfig.configs")
local nvim_lsp = require("lspconfig")
if not configs.neocmake then
configs.neocmake = {
default_config = {
cmd = { "neocmakelsp", "--stdio" },
filetypes = { "cmake" },
root_dir = function(fname)
return nvim_lsp.util.find_git_ancestor(fname)
end,
single_file_support = true,-- suggested
on_attach = on_attach -- on_attach is the on_attach function you defined
}
}
nvim_lsp.neocmake.setup({})
end
```lua if not configs.neocmake then configs.neocmake = { defaultconfig = { cmd = vim.lsp.rpc.connect('127.0.0.1','9257'), filetypes = { "cmake" }, rootdir = function(fname) return nvimlsp.util.findgitancestor(fname) end, singlefilesupport = true,-- suggested onattach = onattach -- onattach is the onattach function you defined } } nvimlsp.neocmake.setup({}) end
```
new version will not work on mac and windows, so I need your help
lua
capabilities = {
workspace = {
didChangeWatchedFiles = {
dynamicRegistration = true,
},
},
}
It will check CMakeCache.txt, and get weather the package is exist
Note: When formating files, make sure that your .editorconfig file is in your working directory
``` format the file
Usage: neocmakelsp {format|--format|-F} [OPTIONS]
Arguments:
Options: -o, --override override -h, --help Print help ```
It will read .editorconfig file to format files, just set like
ini
[CMakeLists.txt]
indent_style = space
indent_size = 4
If you don't want to format a part, just comment Not Format Me
before that block.
For example:
```cmake
ecmgenerateheaders(KCoreAddonsHEADERS HEADERNAMES KPluginFactory KPluginMetaData KStaticPluginHelpers REQUIREDHEADERS KCoreAddonsHEADERS ) ```