Add nvim-local-config-docker.md
This commit is contained in:
parent
066bed20c7
commit
86c38f6ecf
213
config/nvim-local-config-docker.md
Normal file
213
config/nvim-local-config-docker.md
Normal file
@ -0,0 +1,213 @@
|
||||
Neovim has the [exrc option](https://neovim.io/doc/user/options.html#'exrc'),
|
||||
which enables project-local configuration.
|
||||
|
||||
First, the option hast to 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
|
||||
})
|
||||
```
|
||||
Loading…
Reference in New Issue
Block a user