config-new/modules/dotfiles/nvim/lua/thegeneralist/init.lua
TheGeneralist 572647d7c4
services: add jellyfin, archivebox, custom dns
- `internal.thegeneralist01.com` and `archive.thegeneralist01.com` are
  not public. I have Split DNS enabled on them (in Tailscale), with the
  IP of the DNS server set to a private Tailscale IP of my home server;
- CoreDNS (also on my home server) is used to resolve the two private
  domains' IPs to the home server itself;
- nginx only listens to its machine's (home server's) Tailscale IP;
- Therefore, all of it is hermetic!
2025-08-03 14:48:21 +02:00

76 lines
2.8 KiB
Lua

require("thegeneralist.remap")
require("thegeneralist.set")
require("thegeneralist.lazy_init")
local augroup = vim.api.nvim_create_augroup
local thegeneralist_group = augroup('thegeneralist', {})
local autocmd = vim.api.nvim_create_autocmd
local yank_group = augroup('HighlightYank', {})
autocmd('TextYankPost', {
group = yank_group,
pattern = '*',
callback = function()
vim.highlight.on_yank({
higroup = 'IncSearch',
timeout = 40,
})
end,
})
autocmd({ "BufWritePre" }, {
group = thegeneralist_group,
pattern = "*",
command = [[%s/\s\+$//e]],
})
autocmd('LspAttach', {
group = thegeneralist_group,
callback = function(e)
-- @param desc string
local function opts(desc)
return {
buffer = e.buf,
--noremap = true, -- Not sure about this
desc = "[LSP] " .. desc
}
end
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts("Go to Definition"))
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts("Go to Declaration"))
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts("Hover info"))
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts("Workspace Symbol"))
vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts("Open float?"))
vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts("View code actions"))
vim.keymap.set("i", "<C-]>", function() vim.lsp.buf.code_action() end, opts("View code actions"))
vim.keymap.set("n", "<leader>va", function()
local params = vim.lsp.util.make_range_params()
params.context = { diagnostics = vim.lsp.diagnostic.get_line_diagnostics() }
local result, err = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 1000)
if result and result[1] and result[1].result and result[1].result[1] then
local first_action = result[1].result[1]
vim.lsp.buf.execute_command(first_action.command)
else
print("No code actions available")
end
end, opts("Apply 1st code action"))
vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts("Show references"))
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts("Rename"))
vim.keymap.set("n", "[d", function()
vim.diagnostic.jump({
count = 1,
float = true,
})
end, opts("Previous diagnostic"))
vim.keymap.set("n", "]d", function()
vim.diagnostic.jump({
count = -1,
float = true,
})
end, opts("Next diagnostic"))
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts("Signature help"))
vim.keymap.set("n", "<leader>h", function() vim.lsp.buf.signature_help() end, opts("Signature help"))
end
})