| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | -- TODO figure out why this don't workvim.fn.sign_define(    "LspDiagnosticsSignError",    {texthl = "LspDiagnosticsSignError", text = "", numhl = "LspDiagnosticsSignError"})vim.fn.sign_define(    "LspDiagnosticsSignWarning",    {texthl = "LspDiagnosticsSignWarning", text = "", numhl = "LspDiagnosticsSignWarning"})vim.fn.sign_define(    "LspDiagnosticsSignHint",    {texthl = "LspDiagnosticsSignHint", text = "", numhl = "LspDiagnosticsSignHint"})vim.fn.sign_define(    "LspDiagnosticsSignInformation",    {texthl = "LspDiagnosticsSignInformation", text = "", numhl = "LspDiagnosticsSignInformation"})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 :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> :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-- scroll up hover docvim.cmd('command! -nargs=0 LspVirtualTextToggle lua require("lsp/virtual_text").toggle()')-- Set Default Prefix.-- Note: You can set a prefix per lsp server in the lv-globals.lua filevim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(  vim.lsp.diagnostic.on_publish_diagnostics, {    virtual_text = {      prefix = "",      spacing = 0,    },    signs = true,    underline = true,  })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 autocompletevim.lsp.protocol.CompletionItemKind = {    "   (Text) ",    "   (Method)",    "   (Function)",    "   (Constructor)",    " ﴲ  (Field)",    "[] (Variable)",    "   (Class)",    " ﰮ  (Interface)",    "   (Module)",    " 襁 (Property)",    "   (Unit)",    "   (Value)",    " 練 (Enum)",    "   (Keyword)",    "   (Snippet)",    "   (Color)",    "   (File)",    "   (Reference)",    "   (Folder)",    "   (EnumMember)",    " ﲀ  (Constant)",    " ﳤ  (Struct)",    "   (Event)",    "   (Operator)",    "   (TypeParameter)"}--[[ " autoformatautocmd BufWritePre *.js lua vim.lsp.buf.formatting_sync(nil, 100)autocmd BufWritePre *.jsx lua vim.lsp.buf.formatting_sync(nil, 100)autocmd BufWritePre *.lua lua vim.lsp.buf.formatting_sync(nil, 100) ]]-- Java-- autocmd FileType java nnoremap ca <Cmd>lua require('jdtls').code_action()<CR>local function documentHighlight(client, bufnr)    -- Set autocommands conditional on server_capabilities    if client.resolved_capabilities.document_highlight then        vim.api.nvim_exec(            [[      hi LspReferenceRead cterm=bold ctermbg=red guibg=#464646      hi LspReferenceText cterm=bold ctermbg=red guibg=#464646      hi LspReferenceWrite cterm=bold ctermbg=red guibg=#464646      augroup lsp_document_highlight        autocmd! * <buffer>        autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()        autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()      augroup END    ]],            false        )    endendlocal lsp_config = {}if O.document_highlight then    function lsp_config.common_on_attach(client, bufnr)        documentHighlight(client, bufnr)    endendfunction lsp_config.tsserver_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})endrequire('lv-utils').define_augroups({    _general_lsp = {        {'FileType', 'lspinfo', 'nnoremap <silent> <buffer> q :q<CR>'},    }})-- Use a loop to conveniently both setup defined servers-- and map buffer local keybindings when the language server attaches-- local servers = {"pyright", "tsserver"}-- for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup {on_attach = on_attach} endreturn lsp_config
 |