From 1ed739253485621d165341bcb69f857aa9d13a01 Mon Sep 17 00:00:00 2001 From: rob Date: Sun, 4 Jul 2021 15:07:11 +0100 Subject: Prevent startup errors on first run (#645) --- lua/lsp/emmet-ls.lua | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lua/lsp') diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua index 46d6c90d..badacce3 100644 --- a/lua/lsp/emmet-ls.lua +++ b/lua/lsp/emmet-ls.lua @@ -1,3 +1,7 @@ +if not package.loaded['lspconfig'] then + return +end + local nvim_lsp = require'lspconfig' local configs = require'lspconfig/configs' local capabilities = vim.lsp.protocol.make_client_capabilities() -- cgit v1.2.3 From 0d14b91e1e44bac124e796a82776085126699536 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 4 Jul 2021 10:22:16 -0400 Subject: seems to disable everything we may have to use a more complicated method --- lua/lsp/emmet-ls.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lua/lsp') diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua index badacce3..277adc7f 100644 --- a/lua/lsp/emmet-ls.lua +++ b/lua/lsp/emmet-ls.lua @@ -1,6 +1,6 @@ -if not package.loaded['lspconfig'] then - return -end +-- if not package.loaded['lspconfig'] then +-- return +-- end local nvim_lsp = require'lspconfig' local configs = require'lspconfig/configs' -- cgit v1.2.3 From d2324d14e166a17b2573006485fd3e4e8c971100 Mon Sep 17 00:00:00 2001 From: maxime50 <51096534+maxime50@users.noreply.github.com> Date: Sun, 4 Jul 2021 18:22:10 -0400 Subject: Better JS/TS Development Experience (#667) Co-authored-by: Maxime --- lua/lsp/init.lua | 42 +++++++++++++++++++++++++++++++++++++++++- lua/lsp/ts-fmt-lint.lua | 30 +----------------------------- 2 files changed, 42 insertions(+), 30 deletions(-) (limited to 'lua/lsp') diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 8bc8984f..7c78d054 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -106,8 +106,48 @@ if O.document_highlight then end function lsp_config.tsserver_on_attach(client, bufnr) - lsp_config.common_on_attach(client, bufnr) + -- lsp_config.common_on_attach(client, bufnr) client.resolved_capabilities.document_formatting = false + + local ts_utils = require("nvim-lsp-ts-utils") + + -- defaults + ts_utils.setup { + debug = false, + disable_commands = false, + enable_import_on_completion = false, + import_all_timeout = 5000, -- ms + + -- eslint + eslint_enable_code_actions = true, + eslint_enable_disable_comments = true, + eslint_bin = O.lang.tsserver.linter, + eslint_config_fallback = nil, + eslint_enable_diagnostics = true, + + -- formatting + enable_formatting = O.lang.tsserver.autoformat, + formatter = O.lang.tsserver.formatter, + formatter_config_fallback = nil, + + -- parentheses completion + complete_parens = false, + signature_help_in_parens = false, + + -- update imports on file move + update_imports_on_move = false, + require_confirmation_on_move = false, + watch_dir = nil, + } + + -- required to fix code action ranges + ts_utils.setup_client(client) + + -- TODO: keymap these? + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gs", ":TSLspOrganize", {silent = true}) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "qq", ":TSLspFixCurrent", {silent = true}) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", ":TSLspRenameFile", {silent = true}) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", ":TSLspImportAll", {silent = true}) end diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua index 3ca97d71..5cca9c60 100644 --- a/lua/lsp/ts-fmt-lint.lua +++ b/lua/lsp/ts-fmt-lint.lua @@ -17,46 +17,18 @@ M.setup = function() } end - -- TODO global eslint? - - local eslint = { - lintCommand = "./node_modules/.bin/eslint -f unix --stdin --stdin-filename ${INPUT}", - lintIgnoreExitCode = true, - lintStdin = true, - lintFormats = {"%f:%l:%c: %m"}, - -- formatCommand = "./node_modules/.bin/eslint -f unix --fix --stdin-filename ${INPUT}", -- TODO check if eslint is the formatter then add this - formatStdin = true - } - - if O.lang.tsserver.formatter == 'prettier' then - table.insert(tsserver_args, prettier) - end - - if O.lang.tsserver.linter == 'eslint' then - table.insert(tsserver_args, eslint) - end - require"lspconfig".efm.setup { -- init_options = {initializationOptions}, cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"}, init_options = {documentFormatting = true, codeAction = false}, - filetypes = { - "javascriptreact", "javascript", "typescript", "typescriptreact", - "html", "css", "yaml", "vue" - }, + filetypes = {"html", "css", "yaml", "vue"}, settings = { rootMarkers = {".git/", "package.json"}, languages = { - javascript = tsserver_args, - javascriptreact = tsserver_args, - typescript = tsserver_args, - typescriptreact = tsserver_args, html = {prettier}, css = {prettier}, json = {prettier}, yaml = {prettier} - -- javascriptreact = {prettier, eslint}, - -- javascript = {prettier, eslint}, -- markdown = {markdownPandocFormat, markdownlint}, } } -- cgit v1.2.3 From 0b251be44cf941cde2d49909b29855e97bc97d45 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 4 Jul 2021 22:49:47 -0400 Subject: shelfing null-ls for now, seems to slow things down significantly --- lua/lsp/ts-fmt-lint.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lua/lsp') diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua index 5cca9c60..1ebf2e20 100644 --- a/lua/lsp/ts-fmt-lint.lua +++ b/lua/lsp/ts-fmt-lint.lua @@ -21,7 +21,7 @@ M.setup = function() -- init_options = {initializationOptions}, cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"}, init_options = {documentFormatting = true, codeAction = false}, - filetypes = {"html", "css", "yaml", "vue"}, + filetypes = {"html", "css", "yaml", "vue", "javascript", "javascriptreact", "typescript", "typescriptreact"}, settings = { rootMarkers = {".git/", "package.json"}, languages = { @@ -29,7 +29,6 @@ M.setup = function() css = {prettier}, json = {prettier}, yaml = {prettier} - -- markdown = {markdownPandocFormat, markdownlint}, } } } -- cgit v1.2.3 From 33761183044522286cda2fd0378f469270eb802a Mon Sep 17 00:00:00 2001 From: christianchiarulli Date: Sun, 4 Jul 2021 22:56:20 -0400 Subject: emmet-ls technically doesn't support react --- lua/lsp/emmet-ls.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lsp') diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua index 277adc7f..fcb7f62d 100644 --- a/lua/lsp/emmet-ls.lua +++ b/lua/lsp/emmet-ls.lua @@ -10,7 +10,7 @@ capabilities.textDocument.completion.completionItem.snippetSupport = true configs.emmet_ls = { default_config = { cmd = {'emmet-ls', '--stdio'}; - filetypes = {'html', 'css', 'javascript', 'javascriptreact', 'typescript', 'typescriptreact'}; + filetypes = {'html', 'css', 'javascript', 'typescript'}; root_dir = function() return vim.loop.cwd() end; -- cgit v1.2.3 From b4a9023c9e531ad021cf9da7e701350f489aba45 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 5 Jul 2021 02:57:06 -0400 Subject: remove lspsaga --- lua/lsp/init.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'lua/lsp') diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 7c78d054..ad8985d8 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -20,14 +20,12 @@ vim.cmd("nnoremap gd lua vim.lsp.buf.definition()") vim.cmd("nnoremap gD lua vim.lsp.buf.declaration()") vim.cmd("nnoremap gr lua vim.lsp.buf.references()") vim.cmd("nnoremap gi lua vim.lsp.buf.implementation()") -vim.cmd("nnoremap K :Lspsaga hover_doc") +vim.cmd("nnoremap K :lua vim.lsp.buf.hover()") -- vim.cmd('nnoremap lua vim.lsp.buf.signature_help()') -vim.cmd("nnoremap :Lspsaga diagnostic_jump_prev") -vim.cmd("nnoremap :Lspsaga diagnostic_jump_next") +vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_prev()") +vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_next()") -- scroll down hover doc or scroll in definition preview -vim.cmd("nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)") -- scroll up hover doc -vim.cmd("nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)") vim.cmd('command! -nargs=0 LspVirtualTextToggle lua require("lsp/virtual_text").toggle()') -- Set Default Prefix. -- cgit v1.2.3 From bd9296c4e86b9223cce9ee3dd0d04c3f9e7cc370 Mon Sep 17 00:00:00 2001 From: Robin Kautz Date: Mon, 5 Jul 2021 09:21:41 +0200 Subject: fixes condition to use local prettier (#678) --- lua/lsp/ts-fmt-lint.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lsp') diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua index 1ebf2e20..36d4ca8a 100644 --- a/lua/lsp/ts-fmt-lint.lua +++ b/lua/lsp/ts-fmt-lint.lua @@ -10,7 +10,7 @@ M.setup = function() formatStdin = true } - if vim.fn.glob("node_modules/.bin/prettier") then + if vim.fn.glob("node_modules/.bin/prettier") ~= "" then prettier = { formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}", formatStdin = true -- cgit v1.2.3 From 5eed5cf3ec13de0ce2a82ff032a1967e759d6a26 Mon Sep 17 00:00:00 2001 From: kjssad Date: Mon, 5 Jul 2021 14:43:37 +0000 Subject: Add borders to lsp popups (#686) * feat(lsp): add single type border to hover popup * feat(lsp): add single type border to signatureHelp * feat(lsp): add border to line diagnostic popup * feat(lsp): use global option to configure borders --- lua/lsp/init.lua | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lua/lsp') diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index ad8985d8..0292064a 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -22,8 +22,8 @@ vim.cmd("nnoremap gr lua vim.lsp.buf.references()") vim.cmd("nnoremap gi lua vim.lsp.buf.implementation()") vim.cmd("nnoremap K :lua vim.lsp.buf.hover()") -- vim.cmd('nnoremap lua vim.lsp.buf.signature_help()') -vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_prev()") -vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_next()") +vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})") +vim.cmd("nnoremap :lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})") -- scroll down hover doc or scroll in definition preview -- scroll up hover doc vim.cmd('command! -nargs=0 LspVirtualTextToggle lua require("lsp/virtual_text").toggle()') @@ -41,6 +41,18 @@ vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( } ) +vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( + vim.lsp.handlers.hover, { + border = O.lsp.popup_border + } +) + +vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( + vim.lsp.handlers.signature_help, { + border = O.lsp.popup_border + } +) + -- symbols for autocomplete vim.lsp.protocol.CompletionItemKind = { "  (Text) ", -- cgit v1.2.3