diff --git a/home/editors/default.nix b/home/editors/default.nix index 8e422b4..47e7d23 100644 --- a/home/editors/default.nix +++ b/home/editors/default.nix @@ -2,9 +2,9 @@ { imports = [ + ./lsp.nix ./neovim.nix ./vscode.nix - ./omnisharp.nix ]; home.packages = with pkgs; [ diff --git a/home/editors/omnisharp.nix b/home/editors/lsp.nix similarity index 66% rename from home/editors/omnisharp.nix rename to home/editors/lsp.nix index f1e9396..7e257de 100644 --- a/home/editors/omnisharp.nix +++ b/home/editors/lsp.nix @@ -14,6 +14,17 @@ in { home.packages = with pkgs; [ omnisharp-roslyn + rnix-lsp + terraform-lsp + nodePackages.bash-language-server + nodePackages.vim-language-server + nodePackages.yaml-language-server + # nodePackages.vscode-json-languageserver-bin + nodePackages.vscode-css-languageserver-bin + nodePackages.vscode-html-languageserver-bin + nodePackages.typescript-language-server + nodePackages.dockerfile-language-server-nodejs + haskellPackages.haskell-language-server ]; # UseLegacySdkResolver: true is currently required diff --git a/home/editors/lsp.vim b/home/editors/lsp.vim index 9cb420f..a9bcc3e 100644 --- a/home/editors/lsp.vim +++ b/home/editors/lsp.vim @@ -32,6 +32,7 @@ nnoremap lua vim.lsp.buf.signature_help() nnoremap 1gD lua vim.lsp.buf.type_definition() nnoremap gr lua vim.lsp.buf.references() nnoremap g0 lua vim.lsp.buf.document_symbol() +nnoremap gW lua vim.lsp.buf.workspace_symbol() nnoremap f lua vim.lsp.buf.formatting() nnoremap a lua vim.lsp.buf.code_action() nnoremap r lua vim.lsp.buf.rename() @@ -44,7 +45,7 @@ local configs = require'nvim_lsp/configs' local util = require'nvim_lsp/util' -- remove once omnisharp support is merged -configs.omnisharp_lsp = { +configs.omnisharp = { default_config = { cmd = {"omnisharp","-lsp"}; filetypes = {"cs"}; @@ -53,20 +54,27 @@ configs.omnisharp_lsp = { }; } -nvim_lsp.tsserver.setup{} -nvim_lsp.omnisharp_lsp.setup{} +-- format on save +-- TODO often takes way longer to save than 1000 ms (e.g. 7000 ms in fitnesspilot-web) +local diagnosticls_on_attach = function(_, bufnr) + vim.api.nvim_command("au BufWritePre lua vim.lsp.buf.formatting_sync(nil, 1000)") +end --- TODO install globally or use :LspInstall nvim_lsp.bashls.setup{} +nvim_lsp.jsonls.setup{} -- TODO setup lsp or use :LspInstall +nvim_lsp.yamlls.setup{} nvim_lsp.html.setup{} nvim_lsp.cssls.setup{} -nvim_lsp.yamlls.setup{} -nvim_lsp.jsonls.setup{} nvim_lsp.vimls.setup{} nvim_lsp.dockerls.setup{} +nvim_lsp.rnix.setup{} +nvim_lsp.tsserver.setup{} +nvim_lsp.omnisharp.setup{} +nvim_lsp.terraformls.setup{} -- based on: https://github.com/mikew/vimrc/blob/master/src/nvim/coc-settings.json nvim_lsp.diagnosticls.setup{ + on_attach = diagnosticls_on_attach; filetypes = { "javascript", "javascript.jsx",