diff options
Diffstat (limited to 'lua/lsp')
| -rw-r--r-- | lua/lsp/emmet-ls.lua | 6 | ||||
| -rw-r--r-- | lua/lsp/init.lua | 62 | ||||
| -rw-r--r-- | lua/lsp/ts-fmt-lint.lua | 33 | 
3 files changed, 63 insertions, 38 deletions
| diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua index 46d6c90d..fcb7f62d 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() @@ -6,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; diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 8bc8984f..0292064a 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -20,14 +20,12 @@ vim.cmd("nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>")  vim.cmd("nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>")  vim.cmd("nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>")  vim.cmd("nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>") -vim.cmd("nnoremap <silent> K :Lspsaga hover_doc<CR>") +vim.cmd("nnoremap <silent> K :lua vim.lsp.buf.hover()<CR>")  -- vim.cmd('nnoremap <silent> <C-k> <cmd>lua vim.lsp.buf.signature_help()<CR>') -vim.cmd("nnoremap <silent> <C-p> :Lspsaga diagnostic_jump_prev<CR>") -vim.cmd("nnoremap <silent> <C-n> :Lspsaga diagnostic_jump_next<CR>") +vim.cmd("nnoremap <silent> <C-p> :lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<CR>") +vim.cmd("nnoremap <silent> <C-n> :lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})<CR>")  -- scroll down hover doc or scroll in definition preview -vim.cmd("nnoremap <silent> <C-f> <cmd>lua require('lspsaga.action').smart_scroll_with_saga(1)<CR>")  -- scroll up hover doc -vim.cmd("nnoremap <silent> <C-b> <cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1)<CR>")  vim.cmd('command! -nargs=0 LspVirtualTextToggle lua require("lsp/virtual_text").toggle()')  -- Set Default Prefix. @@ -43,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) ", @@ -106,8 +116,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<CR>", {silent = true}) +    -- vim.api.nvim_buf_set_keymap(bufnr, "n", "qq", ":TSLspFixCurrent<CR>", {silent = true}) +    -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", ":TSLspRenameFile<CR>", {silent = true}) +    -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", ":TSLspImportAll<CR>", {silent = true})  end diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua index 3ca97d71..36d4ca8a 100644 --- a/lua/lsp/ts-fmt-lint.lua +++ b/lua/lsp/ts-fmt-lint.lua @@ -10,54 +10,25 @@ 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          }      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", "javascript", "javascriptreact", "typescript", "typescriptreact"},          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},              }          }      } | 
