212 lines
5.2 KiB
Markdown
212 lines
5.2 KiB
Markdown
Neovim has the [exrc option](https://neovim.io/doc/user/options.html#'exrc'),
|
|
which enables project-local configuration. This option be enabled in the
|
|
neovim config:
|
|
|
|
```lua
|
|
vim.opt.exrc = true
|
|
```
|
|
|
|
Upon starting neovim in a directory, any code in `./nvim.lua`, will be aplied
|
|
as a local configuration after the global one. As an example, consider the
|
|
following configuration, which
|
|
|
|
- modifies the LSP settings for `clangd` to run in a docker container
|
|
- adds overseer templates to generate, build and flash a project using docker
|
|
|
|
```lua
|
|
-- The user and group ids for the docker container can be found using `id -u` and `stat -c %g /dev/ttyACM0`
|
|
--
|
|
--
|
|
-- Set up LSP to run in docker container
|
|
--
|
|
--
|
|
local lspconfig = require('lspconfig')
|
|
|
|
for _, client in pairs(vim.lsp.get_clients({
|
|
name = "clangd"
|
|
})) do vim.lsp.stop_client(client.id) end
|
|
|
|
lspconfig.clangd.setup({
|
|
cmd = {
|
|
"docker",
|
|
"run",
|
|
"--rm",
|
|
"-v",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new:/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-i",
|
|
"-u",
|
|
"1000:1001",
|
|
"toolassist",
|
|
"clangd-18",
|
|
"--background-index",
|
|
"--clang-tidy",
|
|
"--completion-style=bundled",
|
|
"--cross-file-rename",
|
|
"--header-insertion=iwyu",
|
|
"--query-driver=/**/*g++",
|
|
"--offset-encoding=utf-16"
|
|
}
|
|
})
|
|
|
|
--
|
|
--
|
|
-- Set up Overseer actions to run in docker containers
|
|
--
|
|
--
|
|
|
|
local overseer = require("overseer")
|
|
|
|
overseer.register_template({
|
|
name = "Flash (Docker)",
|
|
builder = function()
|
|
local file = vim.fn.expand("%:p")
|
|
return {
|
|
cmd = {
|
|
"docker"
|
|
},
|
|
args = {
|
|
"run",
|
|
"--rm",
|
|
"-v",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new:/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-w",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-i",
|
|
"-u",
|
|
"1000:1001",
|
|
"--device=/dev/ttyACM0",
|
|
-- "--device=/dev/ttyUSB0",
|
|
"toolassist",
|
|
"idf.py",
|
|
"flash"
|
|
},
|
|
components = {
|
|
{
|
|
"on_output_quickfix"
|
|
},
|
|
"default"
|
|
}
|
|
}
|
|
end,
|
|
condition = {
|
|
filetype = {
|
|
"cmake",
|
|
"cpp"
|
|
}
|
|
},
|
|
priority = 1
|
|
})
|
|
|
|
overseer.register_template({
|
|
name = "CMake Generate (Docker)",
|
|
params = {
|
|
build_type = {
|
|
type = "enum",
|
|
choices = {
|
|
"Debug",
|
|
"Release",
|
|
"RelWithDebInfo",
|
|
"MinSizeRel"
|
|
},
|
|
default = "Release"
|
|
},
|
|
generator = {
|
|
type = "enum",
|
|
choices = {
|
|
"Ninja",
|
|
"Unix Makefiles"
|
|
},
|
|
default = "Ninja"
|
|
},
|
|
compiler = {
|
|
type = "enum",
|
|
choices = {
|
|
"g++",
|
|
"clang++"
|
|
},
|
|
default = "g++"
|
|
}
|
|
},
|
|
builder = function(params)
|
|
return {
|
|
cmd = {
|
|
"docker"
|
|
},
|
|
args = {
|
|
"run",
|
|
"--rm",
|
|
"-v",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new:/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-w",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-i",
|
|
"-u",
|
|
"1000:1001",
|
|
"toolassist",
|
|
"cmake",
|
|
"-B",
|
|
"build",
|
|
"-S",
|
|
".",
|
|
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
|
|
"-DCMAKE_BUILD_TYPE=" .. params.build_type,
|
|
"-DCMAKE_CXX_COMPILER=" .. params.compiler,
|
|
"-G",
|
|
params.generator
|
|
},
|
|
components = {
|
|
"default"
|
|
}
|
|
}
|
|
end,
|
|
condition = {
|
|
filetype = {
|
|
"cmake",
|
|
"cpp"
|
|
}
|
|
},
|
|
priority = 1
|
|
})
|
|
|
|
overseer.register_template({
|
|
name = "CMake Build (Docker)",
|
|
builder = function()
|
|
local file = vim.fn.expand("%:p")
|
|
return {
|
|
cmd = {
|
|
"docker"
|
|
},
|
|
args = {
|
|
"run",
|
|
"--rm",
|
|
"-v",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new:/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-w",
|
|
"/home/andreas/workspace/work/kinemic/toolassist-fw-new",
|
|
"-i",
|
|
"-u",
|
|
"1000:1001",
|
|
"toolassist",
|
|
"cmake",
|
|
"--build",
|
|
"build",
|
|
"-j16"
|
|
},
|
|
components = {
|
|
{
|
|
"on_output_quickfix"
|
|
},
|
|
"default"
|
|
}
|
|
}
|
|
end,
|
|
condition = {
|
|
filetype = {
|
|
"cmake",
|
|
"cpp"
|
|
}
|
|
},
|
|
priority = 1
|
|
})
|
|
```
|