| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | -- 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.lsp.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
 |