Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

109 lines
3.1 KiB

local function getTableKeys(tbl)
local keys = {}
for key in pairs(tbl) do
table.insert(keys, key)
end
return keys
end
local function mergeTables(t1, t2)
for k, v in pairs(t2) do
t1[k] = v
end
return t1
end
local function is_null_ls_formatting_enabled(bufnr)
local file_type = vim.api.nvim_buf_get_option(bufnr, "filetype")
local generators = require("null-ls.generators").get_available(
file_type,
require("null-ls.methods").internal.FORMATTING
)
return #generators > 0
end
local custom_attach = function(client, bufnr)
-- null-ls formatting support
if client.server_capabilities.documentFormattingProvider then
if
client.name == "null-ls" and is_null_ls_formatting_enabled(bufnr)
or client.name ~= "null-ls"
then
vim.bo[bufnr].formatexpr = "v:lua.vim.lsp.formatexpr()"
vim.keymap.set("n", "<leader>gq", "<cmd>lua vim.lsp.buf.format({ async = true })<CR>", opts)
else
vim.bo[bufnr].formatexpr = nil
end
end
vim.api.nvim_create_autocmd("CursorHold", {
buffer=bufnr,
callback = function()
local opts = {
focusable = false,
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" },
border = 'rounded',
source = 'always', -- show source in diagnostic popup window
prefix = ' '
}
if not vim.b.diagnostics_pos then
vim.b.diagnostics_pos = { nil, nil }
end
local cursor_pos = vim.api.nvim_win_get_cursor(0)
if (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) and
#vim.diagnostic.get() > 0
then
vim.diagnostic.open_float(nil, opts)
end
vim.b.diagnostics_pos = cursor_pos
end
})
-- Make K show hover menu if it is supported
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr })
-- The blow command will highlight the current variable and its usages in the buffer.
if client.server_capabilities.document_highlight then
vim.cmd([[
hi! link LspReferenceRead Visual
hi! link LspReferenceText Visual
hi! link LspReferenceWrite Visual
augroup lsp_document_highlight
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
augroup END
]])
end
if vim.g.logging_level == 'debug' then
local msg = string.format("Language server %s started!", client.name)
vim.notify(msg, 'info', {title = 'Nvim-config'})
end
end
local lspconfigs = {
clangd = {},
pyright = {},
bashls = {},
html = {},
tsserver = {},
lua_ls = require("config.lsp.lua_ls"),
cssls = {},
asm_lsp = {},
rust_analyzer = require("config.lsp.rust_analyzer"),
cmake = require("config.lsp.cmake"),
}
local mason_extras = {
"bash-debug-adapter"
}
return {
mason_servers = mergeTables(getTableKeys(lspconfigs), mason_extras),
lspconfigs = lspconfigs,
lsp_onattach = custom_attach
}