diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2022-11-11 17:46:12 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2022-11-11 17:46:12 +0100 |
| commit | 70f3bc54f2ba254645b0f7d4676443e034456d7a (patch) | |
| tree | 8accaaf324d3ddd12967ff1d0fefc88244e49f16 /neovim/lua | |
| parent | 91fb3eff2cf2cdc16a0bef278cd7fb64cde796b8 (diff) | |
feat(flake): no more hardcoding!
Diffstat (limited to 'neovim/lua')
| -rw-r--r-- | neovim/lua/vimrc.lua | 49 | ||||
| -rw-r--r-- | neovim/lua/vimrc/lsp.lua | 232 |
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 |
