summaryrefslogtreecommitdiff
path: root/neovim/lua
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2022-11-11 17:46:12 +0100
committerMike Vink <mike1994vink@gmail.com>2022-11-11 17:46:12 +0100
commit70f3bc54f2ba254645b0f7d4676443e034456d7a (patch)
tree8accaaf324d3ddd12967ff1d0fefc88244e49f16 /neovim/lua
parent91fb3eff2cf2cdc16a0bef278cd7fb64cde796b8 (diff)
feat(flake): no more hardcoding!
Diffstat (limited to 'neovim/lua')
-rw-r--r--neovim/lua/vimrc.lua49
-rw-r--r--neovim/lua/vimrc/lsp.lua232
2 files changed, 102 insertions, 179 deletions
diff --git a/neovim/lua/vimrc.lua b/neovim/lua/vimrc.lua
index 587f9e2..817ec92 100644
--- a/neovim/lua/vimrc.lua
+++ b/neovim/lua/vimrc.lua
@@ -11,6 +11,37 @@ augroup end
]])
end
+function M.setup_cmp()
+ local cmp = require 'cmp'
+ cmp.setup({
+ snippet = {
+ -- REQUIRED - you must specify a snippet engine
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
+ end,
+ },
+ completion = {
+ autocomplete = false
+ },
+ window = {
+ -- completion = cmp.config.window.bordered(),
+ -- documentation = cmp.config.window.bordered(),
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-A>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.abort(),
+ ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ { name = 'path' },
+ })
+ })
+end
+
function M.setup_treesitter()
if vim.o.loadplugins == false then
return
@@ -34,6 +65,7 @@ function M.setup_treesitter()
},
indent = {
enable = true,
+ disable = { "python", "yaml" },
},
}
vim.cmd [[hi link TSParameter Todo]]
@@ -120,12 +152,13 @@ function M.setup_build_function()
local pipeline = os.getenv('AZURE_YAML_DEFINITION_ID')
local branch = os.getenv('AZURE_YAML_BRANCH')
- local url = [[https://dev.azure.com/]] .. ado_org .. [[/]] .. ado_proj .. [[/_apis/pipelines/]] .. pipeline .. [[/preview?api-version=7.1-preview.1]]
+ local url = [[https://dev.azure.com/]] ..
+ ado_org .. [[/]] .. ado_proj .. [[/_apis/pipelines/]] .. pipeline .. [[/preview?api-version=7.1-preview.1]]
local auth_header = [[Authorization: Basic ]] .. auth
local yaml_file = cwd .. "/" .. file
local shell_script = string.format(
-[[yaml_string="
+ [[yaml_string="
$(cat ${PWD}/${AZURE_YAML_DEBUG_SNIPPET})
$(cat %s)
"
@@ -143,7 +176,7 @@ curl -s -X POST '%s' -H 'Content-Type: application/json' -H '%s' --data-binary @
},
"yamlOverride":"$yaml_string"
}
-THEEND]],
+THEEND]] ,
yaml_file, url, auth_header, branch, branch
)
local cmd = {
@@ -175,15 +208,15 @@ M.reload_package_complete = function(_, _, _)
end
M.reload_packages_and_init = function()
- for name,_ in pairs(package.loaded) do
+ for name, _ in pairs(package.loaded) do
if name:match('^vimrc') then
package.loaded[name] = nil
end
end
-
- vim.opt.runtimepath:prepend({ os.getenv("NVIM_RELOAD_PATH"), os.getenv("NVIM_RELOAD_PATH") .. [[/lua]] })
- dofile(os.getenv("NVIM_RELOAD_PATH") .. [[/init.lua]])
- vim.opt.runtimepath:remove({ os.getenv("NVIM_RELOAD_PATH"), os.getenv("NVIM_RELOAD_PATH") .. [[/lua]] })
+ local reload_path = os.getenv("NVIM_RELOAD_PATH") or [[/home/mike/dotnix/neovim]]
+ vim.opt.runtimepath:prepend({ reload_path, reload_path .. [[/lua]] })
+ dofile(reload_path .. [[/init.lua]])
+ vim.opt.runtimepath:remove({ reload_path, reload_path .. [[/lua]] })
vim.notify("Reloaded vim", vim.log.levels.INFO)
end
diff --git a/neovim/lua/vimrc/lsp.lua b/neovim/lua/vimrc/lsp.lua
index 94a2cc2..8b23fc6 100644
--- a/neovim/lua/vimrc/lsp.lua
+++ b/neovim/lua/vimrc/lsp.lua
@@ -123,195 +123,85 @@ function M.setup()
end
local buffer_setup_no_format = function(client)
- client.server_capabilities.document_formatting = false
buffer_setup(client)
end
-- lspconfig {{{
- local lspconfig = require 'lspconfig'
- -- check if docker is executable first?
- local runtime_path = vim.split(package.path, ';')
- table.insert(runtime_path, "lua/?.lua")
- table.insert(runtime_path, "lua/?/init.lua")
+ local lspconfig = require('lspconfig')
+ local capabilities = require('cmp_nvim_lsp').default_capabilities()
-- always load lua lsp
- require('nlua.lsp.nvim').setup(require('lspconfig'), {
- cmd = { "/lsp/bin/lua-language-server", "-E", "/lsp/main.lua" },
- on_attach = buffer_setup_no_format,
-
- -- Include globals you want to tell the LSP are real :)
- globals = {
- -- Colorbuddy
- "Color", "c", "Group", "g", "s",
- }
+ require('nlua.lsp.nvim').setup(lspconfig, {
+ cmd = {
+ Flake.lua_language_server .. "/bin/lua-language-server",
+ "-E", Flake.lua_language_server .. "/share/lua-language-server/main.lua"
+ },
+ capabilities = capabilities,
+ on_attach = buffer_setup_no_format,
+
+ -- Include globals you want to tell the LSP are real :)
+ globals = {
+ -- Colorbuddy
+ "Color", "c", "Group", "g", "s", "Flake",
+ }
})
- -- lspconfig.sumneko_lua.setup {
- -- filetypes = { "lua" },
- -- on_attach = buffer_setup_no_format,
- -- settings = {
- -- Lua = {
- -- completion = {
- -- keywordSnippet = "Disable",
- -- showWord = "Disable",
- -- },
- -- diagnostics = {
- -- enable = true,
- -- globals = vim.list_extend({
- -- -- Neovim
- -- "vim",
- -- -- Busted
- -- "describe", "it", "before_each", "after_each", "teardown", "pending", "clear"
- -- }, {})
- -- },
- -- runtime = {
- -- version = "LuaJIT",
- -- },
- -- workspace = {
- -- vim.list_extend(get_lua_runtime(), {}),
- -- maxPreload = 10000,
- -- preloadFileSize = 10000,
- -- },
- -- }
- -- }
- -- }
-
- -- out = vim.fn.system('docker images -q mvinkio/azure-pipelines-lsp')
- -- if string.len(out) ~= 0 then
- -- lspconfig.yamlls.setup {
- -- before_init = function(params)
- -- params.processId = vim.NIL
- -- end,
- -- on_new_config = function(new_config, new_root_dir)
- -- new_config.cmd = {
- -- "node",
- -- new_root_dir,
- -- home .. "/projects/devops-pipelines/node_modules/azure-pipelines-language-server/out/server.js",
- -- "--stdio"
- -- }
- -- end,
- -- filetypes = { "yaml" },
- -- root_dir = lspconfig.util.root_pattern(".git", vim.fn.getcwd()),
- -- on_attach = buffer_setup_no_format,
- -- settings = {
- -- yaml = {
- -- format = {
- -- enable = true
- -- },
- -- schemas = {
- -- [home .. "/projects/devops-pipelines/schema"] = "/*"
- -- },
- -- validate = true
- -- }
- -- }
- -- }
- -- else
- -- utils.log_warning("No image mvinkio/azure-pipelines-lsp.", "vimrc/lsp", true)
- -- end
-
- local out = vim.fn.system('docker images -q mvinkio/python')
- if string.len(out) ~= 0 then
- lspconfig.pyright.setup {
- cmd = {
- "docker",
- "run",
- "--rm",
- "--env-file=" .. vim.fn.getcwd() .. "/.env",
- "--interactive",
- "--workdir=" .. vim.fn.getcwd(),
- "--volume=" .. vim.fn.getcwd() .. ":" .. vim.fn.getcwd(),
- "mvinkio/python",
- "pyright-langserver", "--stdio"
+ lspconfig.pyright.setup {
+ root_dir = lspconfig.util.root_pattern(".git", vim.fn.getcwd()),
+ on_attach = buffer_setup_no_format,
+ }
+
+ lspconfig.gopls.setup {
+ before_init = function(params)
+ params.processId = vim.NIL
+ end,
+ capabilities = capabilities,
+ filetypes = { "go", "gomod", "gotmpl" },
+ on_attach = buffer_setup_no_format,
+ settings = {
+ gopls = {
+ experimentalPostfixCompletions = true,
+ analyses = {
+ unusedparams = true,
+ shadow = true,
+ },
+ staticcheck = true,
},
- on_new_config = function(new_config, new_root_dir)
- new_config.cmd = {
- "docker",
- "run",
- "--rm",
- "--env-file=" .. new_root_dir .. "/.env",
- "--interactive",
- "--workdir=" .. new_root_dir,
- "--volume=" .. new_root_dir .. ":" .. new_root_dir,
- "mvinkio/python",
- "pyright-langserver", "--stdio"
- }
- end,
- filetypes = { "python" },
- root_dir = lspconfig.util.root_pattern(".git", vim.fn.getcwd()),
- on_attach = buffer_setup_no_format,
- }
- else
- utils.log_warning("No image mvinkio/python.", "vimrc/lsp", true)
- end
-
- out = vim.fn.system('docker images -q mvinkio/go')
- if string.len(out) ~= 0 then
- lspconfig.gopls.setup {
- before_init = function(params)
- params.processId = vim.NIL
- end,
- on_new_config = function(new_config, new_root_dir)
- new_config.cmd = {
- "docker",
- "run",
- "--rm",
- "--interactive",
- "-e=GOPROXY=https://proxy.golang.org",
- "-e=GOOS=linux",
- "-e=GOARCH=amd64",
- "-e=GOPATH=" .. new_root_dir .. "/go",
- "-e=GOCACHE=" .. new_root_dir .. "/.cache/go-build",
- "--workdir=" .. new_root_dir,
- "--volume=" .. new_root_dir .. ":" .. new_root_dir,
- "--network=bridge",
- "mvinkio/go",
- "gopls"
- }
- end,
- -- cmd = { "docker", "run", "--rm", "-i", "-v", home .. ":" .. home, "mvinkio/gopls" },
- filetypes = { "go", "gomod", "gotmpl" },
- on_attach = buffer_setup_no_format,
+ },
+ init_options = {
+ usePlaceholders = true,
}
- else
- utils.log_warning("No image mvinkio/go.", "vimrc/lsp", true)
- end
-
- -- out = vim.fn.system('docker images -q mvinkio/sveltels')
- -- if string.len(out) ~= 0 then
- -- lspconfig.svelte.setup {
- -- before_init = function(params)
- -- params.processId = vim.NIL
- -- end,
- -- cmd = {
- -- "docker",
- -- "run",
- -- "--rm",
- -- "--interactive",
- -- "--volume=" .. home .. ":" .. home,
- -- "--network=none",
- -- "mvinkio/sveltels"
- -- },
- -- on_attach = buffer_setup,
- -- }
- -- else
- -- utils.log_warning("No image mvinkio/sveltels.", "vimrc/lsp", true)
- -- end
-
+ }
+
+ lspconfig.yamlls.setup {
+ schemas = {
+ ["https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.18.0-standalone-strict/all.json"] = "/*.k8s.yaml",
+ },
+ capabilities = capabilities,
+ on_attach = function(client)
+ buffer_setup_no_format(client)
+ local bufnr = vim.api.nvim_get_current_buf()
+ if vim.bo[bufnr].buftype ~= ""
+ or vim.bo[bufnr].filetype == "helm" then
+ vim.diagnostic.disable(bufnr)
+ vim.defer_fn(function()
+ vim.diagnostic.reset(nil, bufnr)
+ end, 1000)
+ end
+ end,
+ }
-- }}}
local null_ls = require("null-ls")
- local my_black = null_ls.builtins.formatting.black.with({
- filetypes = { "python" },
- command = "black",
- args = { "$FILENAME" }
- })
null_ls.setup({
debug = vim.fn.expand("$VIMRC_NULL_LS_DEBUG") == "1",
update_on_insert = false,
on_attach = buffer_setup,
sources = {
- my_black,
- null_ls.builtins.completion.luasnip
+ -- nix linter: statix
+ null_ls.builtins.code_actions.statix,
+ null_ls.builtins.diagnostics.statix,
+ null_ls.builtins.formatting.alejandra,
}
})
end