nvim config stolen from @Lukacms

This commit is contained in:
2023-11-03 11:24:41 +01:00
parent e881d7c7f5
commit 50c4761b4b
42 changed files with 1809 additions and 0 deletions

85
nvim/lua/utils.lua Normal file
View File

@@ -0,0 +1,85 @@
local default_options = {
noremap = true,
silent = true,
}
return {
map = function(mode, keys, action, opts)
local options = default_options
if opts then
options = vim.tbl_extend("force", options, opts)
end
vim.keymap.set(mode, keys, action, options)
end,
buf_map = function(buffer, mode, keys, action, opts)
local options = default_options
options.buffer = buffer
if opts then
options = vim.tbl_extend("force", options, opts)
end
vim.keymap.set(mode, keys, action, options)
end,
buf_command = function(bufnr, name, fn, opts)
vim.api.nvim_buf_create_user_command(bufnr, name, fn, opts or {})
end,
highlight = function(group, color)
local command = "hi " .. group .. " "
if color.style then
command = command .. " gui=" .. color.style
end
if color.fg then
command = command .. " guifg=" .. color.fg
end
if color.bg then
command = command .. " guibg=" .. color.bg
end
if color.sp then
command = command .. " guisp=" .. color.sp
end
vim.cmd(command)
end,
fold_handler = function(virt_text, fold_start_line, fold_end_line, width, truncate)
local new_virt_text = {}
local suffix = ("  %d "):format(fold_end_line - fold_start_line)
local suf_width = vim.fn.strdisplaywidth(suffix)
local target_width = width - suf_width
local cur_width = 0
local fold_hl_group = nil
for _, chunk in ipairs(virt_text) do
local chunk_text = chunk[1]
local chunk_width = vim.fn.strdisplaywidth(chunk_text)
fold_hl_group = chunk[2] -- Not 100% guarantee to have the good hl group if
-- there is something after the fold character but most likely to.
if target_width > cur_width + chunk_width then
table.insert(new_virt_text, chunk)
else
chunk_text = truncate(chunk_text, target_width - cur_width)
local hl_group = chunk[2]
table.insert(new_virt_text, { chunk_text, hl_group })
chunk_width = vim.fn.strdisplaywidth(chunk_text)
-- str width returned from truncate() may less than 2nd argument, need padding
if cur_width + chunk_width < target_width then
suffix = suffix .. (" "):rep(target_width - cur_width - chunk_width)
end
break
end
cur_width = cur_width + chunk_width
end
table.insert(new_virt_text, { suffix, "MoreMsg" })
table.insert(new_virt_text, { vim.fn.trim(vim.fn.getline(fold_end_line)), fold_hl_group })
return new_virt_text
end,
}