initial commit for native-only neovim plugin configuration
This commit is contained in:
+56
-37
@@ -1,5 +1,6 @@
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -25,30 +26,33 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
local create_group = vim.api.nvim_create_augroup
|
||||
local create_cmd = vim.api.nvim_create_autocmd
|
||||
local function contains(tbl, value)
|
||||
for _, v in ipairs(tbl) do
|
||||
if v == value then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- briefly highlithg text that is yanked
|
||||
-- briefly highlight text that is yanked
|
||||
create_cmd("TextYankPost", {
|
||||
desc = "Highlight yanked text",
|
||||
group = create_group("cmd-highlight-yank", { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
-- recognize all scripts with bash shebang as bash filetype
|
||||
-- disable list chars in specific file types, e.g. netrw
|
||||
create_cmd("FileType", {
|
||||
desc = "Disable list characters for some filetypes",
|
||||
group = create_group("cmd-disable-listchars", { clear = true }),
|
||||
pattern = { "netrw" },
|
||||
callback = function(args)
|
||||
vim.opt_local.list = false
|
||||
end
|
||||
})
|
||||
|
||||
-- when recognizing a bash shebang, switch filetype to bash
|
||||
create_cmd({"BufRead", "BufNewFile"}, {
|
||||
desc = "Recognize bash shebang as bash filetype",
|
||||
group = create_group("cmd-recognize-bash-filetype", { clear = true }),
|
||||
@@ -59,38 +63,53 @@ create_cmd({"BufRead", "BufNewFile"}, {
|
||||
if first_line:match("^#!.*/bash") then
|
||||
vim.bo[buf].filetype = "bash"
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
-- disable list chars in specific filetypes, e.g. netrw
|
||||
create_cmd({"FileType"}, {
|
||||
desc = "Disable list chars for some filetypes",
|
||||
pattern = { "netrw" },
|
||||
callback = function(args)
|
||||
vim.opt_local.list = false
|
||||
end,
|
||||
})
|
||||
|
||||
-- automatically remove trailing whitespace on save file
|
||||
create_cmd({"BufWritePre"}, {
|
||||
desc = "Remove trailing whitespace when saving",
|
||||
-- when saving a file, remove trailing whitespace
|
||||
create_cmd("BufWritePre", {
|
||||
desc = "Remove trailing whitespace before saving a file",
|
||||
group = create_group("cmd-remove-trailing-whitespace", { clear = true }),
|
||||
pattern = "*",
|
||||
callback = function(args)
|
||||
vim.api.nvim_buf_call(args.buf, function()
|
||||
vim.cmd([[%s/\s\+$//e]])
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
vim.cmd([[keepjumps keeppatterns silent! %s/\s\+$//e]])
|
||||
vim.api.nvim_win_set_cursor(0, cursor)
|
||||
end)
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
-- automatically set textwidth if not set otherwise
|
||||
create_cmd({"FileType"}, {
|
||||
desc = "Automatically set textwidth",
|
||||
pattern = "*",
|
||||
callback = function(args)
|
||||
local buf = args.buf
|
||||
if vim.bo[buf].textwidth == 0 then
|
||||
vim.bo[buf].textwidth = vim.g.ui.textwidth[vim.bo[buf].filetype] or vim.g.ui.textwidth.default
|
||||
|
||||
-- highlight trailing whitespace when in normal mode
|
||||
local trailing_hl_group = create_group("cmd-highlight-trailing-whitespace", { clear = true })
|
||||
local trailing_hl_match_ids = {}
|
||||
-- Remove highlight in all non-normal modes
|
||||
create_cmd({"InsertEnter", "CmdlineEnter", "TermEnter" }, {
|
||||
desc = "Remove trailing whitespace highlight in non-normal mode",
|
||||
group = trailing_hl_group,
|
||||
callback = function()
|
||||
local window = vim.api.nvim_get_current_win()
|
||||
local id = trailing_hl_match_ids[window]
|
||||
if id then
|
||||
pcall(vim.fn.matchdelete, id)
|
||||
trailing_hl_match_ids[window] = nil
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
||||
-- Apply highlight in normal mode
|
||||
create_cmd({"InsertLeave", "CmdlineLeave", "TermLeave", "BufEnter", "WinEnter" }, {
|
||||
desc = "Add trailing whitespace highlight in normal mode",
|
||||
group = trailing_hl_group,
|
||||
callback = function()
|
||||
if vim.fn.mode() ~= "n" then
|
||||
return
|
||||
end
|
||||
local window = vim.api.nvim_get_current_win()
|
||||
local id = trailing_hl_match_ids[window]
|
||||
if id then
|
||||
pcall(vim.fn.matchdelete, id)
|
||||
end
|
||||
trailing_hl_match_ids[window] = vim.fn.matchadd("TrailingWhitespace", [[\s\+$]])
|
||||
end
|
||||
})
|
||||
|
||||
+11
-10
@@ -1,6 +1,6 @@
|
||||
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -26,22 +26,23 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
vim.diagnostic.config({
|
||||
update_in_insert = false,
|
||||
update_in_insert = true,
|
||||
severity_sort = true,
|
||||
float = {
|
||||
border = vim.g.ui.border,
|
||||
border = vim.g.ui.popupborder,
|
||||
source = true,
|
||||
},
|
||||
underline = true,
|
||||
-- underline only from a specified severity level
|
||||
-- underline = { severity = { min = vim.diagnostic.severity.WARN } },
|
||||
virtual_text = {
|
||||
prefix = vim.g.ui.symbols.diagnostic.virtual_text_prefix,
|
||||
severity = nil, -- show all severity
|
||||
severity = nil, -- show all severities
|
||||
spacing = 2, -- extra spacing between text and code
|
||||
virt_text_pos = "eol",
|
||||
source = "if_many",
|
||||
@@ -53,19 +54,19 @@ vim.diagnostic.config({
|
||||
INFO = vim.g.ui.symbols.diagnostic.sign_info,
|
||||
HINT = vim.g.ui.symbols.diagnostic.sign_hint,
|
||||
}
|
||||
return string.format("%s", diagnostic.message)
|
||||
return string.format("%s: %s", symbols[severity], diagnostic.message)
|
||||
end,
|
||||
|
||||
},
|
||||
virtual_lines = false,
|
||||
jump = {
|
||||
-- when jumping to a diagnostic message, automatically open the diagnostic float
|
||||
on_jump = function(_, bufnr)
|
||||
vim.diagnostic.open_float({
|
||||
bufnr = bufnr,
|
||||
scope = 'cursor',
|
||||
scope = "cursor",
|
||||
focus = false
|
||||
})
|
||||
end,
|
||||
end
|
||||
},
|
||||
signs = {
|
||||
-- icons in sign column
|
||||
|
||||
+17
-20
@@ -1,5 +1,6 @@
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -25,26 +26,24 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Pressing ESC twices leaves terminal mode
|
||||
map("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "exit terminanl" })
|
||||
-- pressing ESC twices leaves terminal mode
|
||||
map("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit Terminal Mode" })
|
||||
|
||||
-- Pressing ESC removes search highlights
|
||||
map("n", "<Esc>", "<Cmd>nohlsearch<Cr>")
|
||||
-- pressing ESC removes search highlights
|
||||
map("n", "<Esc>", "<Cmd>nohlsearch<CR>", { desc = "Remove search result highlights" })
|
||||
|
||||
-- Smart buffer switch (to alternative, previous, or next) if possible
|
||||
-- Smart buffer switch
|
||||
-- switch to the alternative buffer ("#"), if not available, switch to the
|
||||
-- previous buffer, if not possible, switch to the next buffer
|
||||
local function smart_buffer_switch(current)
|
||||
local alternative = vim.fn.bufnr("#")
|
||||
|
||||
-- get all listed buffers
|
||||
local buffers = vim.fn.getbufinfo({ buflisted = 1 })
|
||||
|
||||
-- find index of the current buffer
|
||||
local current_index = nil
|
||||
for index, buffer in ipairs(buffers) do
|
||||
if buffer.bufnr == current then
|
||||
@@ -52,13 +51,12 @@ local function smart_buffer_switch(current)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- try to switch to alternate buffer
|
||||
if alternative > 0 and vim.fn.buflisted(alternative) == 1 and alternative ~= current then
|
||||
vim.api.nvim_set_current_buf(alternative)
|
||||
-- try to switch to previous buffer
|
||||
elseif current_index and current_index > 1 then
|
||||
vim.api.nvim_set_current_buf(buffers[current_index -1].bufnr)
|
||||
vim.api.nvim_set_current_buf(buffers[current_index - 1].bufnr)
|
||||
-- try to switch to next buffer
|
||||
elseif current_index and current_index < #buffers then
|
||||
vim.api.nvim_set_current_buf(buffers[current_index + 1].bufnr)
|
||||
@@ -68,35 +66,34 @@ end
|
||||
local function smart_buffer_delete()
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
smart_buffer_switch(current)
|
||||
-- delete current buffer
|
||||
vim.cmd(":confirm bdelete " .. current)
|
||||
end
|
||||
map("n", "<leader>bd", smart_buffer_delete, { desc = "Close Current Buffer" })
|
||||
|
||||
local function smart_buffer_wipeout()
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
smart_buffer_switch(current)
|
||||
-- delete current buffer
|
||||
vim.cmd(":confirm bwipeout " .. current)
|
||||
end
|
||||
map("n", "<leader>bw", smart_buffer_wipeout, { desc = "Wipeout Current Buffer" })
|
||||
|
||||
local function delete_other_buffers()
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do
|
||||
for _, buffer in ipairs(vim.api.nvim_list_buffers()) do
|
||||
if buffer ~= current and vim.bo[buffer].buflisted and not vim.bo[buffer].modified then
|
||||
vim.api.nvim_buf_delete(buffer, {})
|
||||
end
|
||||
end
|
||||
end
|
||||
map("n", "<leader>bD", delete_other_buffers, { desc = "Close All Other Buffers" })
|
||||
|
||||
local function wipeout_other_buffers()
|
||||
local current = vim.api.nvim_get_current_buf()
|
||||
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do
|
||||
for _, buffer in ipairs(vim.api.nvim_list_buffers()) do
|
||||
if buffer ~= current and vim.bo[buffer].buflisted and not vim.bo[buffer].modified then
|
||||
vim.cmd("bwipeout " .. buffer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
map("n", "<leader>bd", smart_buffer_delete, { desc = "Close Current Buffer" })
|
||||
map("n", "<leader>bw", smart_buffer_wipeout, { desc = "Wipeout Current Buffer" })
|
||||
map("n", "<leader>bD", delete_other_buffers, { desc = "Close All Other Buffers" })
|
||||
map("n", "<leader>bW", wipeout_other_buffers, { desc = "Wipeout All Other Buffers" })
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
--[[
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠗⢀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣤⣀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣶⣤
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠐⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⠂
|
||||
⠀⠀⠀⠀⢀⣠⣴⣆⡈⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠃⠘⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢁⣰⣦⣄⡀
|
||||
⠀⠀⠐⠾⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠷⠂
|
||||
⠀⢸⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⡇
|
||||
⠀⢸⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⡇
|
||||
⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⡆⢰⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠃⠘⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⡇⢸⠿⠛⠉
|
||||
|
||||
__ _ _
|
||||
/ _|___ ___| |_ __ _ ___| | __
|
||||
| ||_ /____/ __| __/ _` |/ __| |/ /
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepository = "https://github.com/folke/lazy.nvim.git"
|
||||
local output = vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"--branch=stable",
|
||||
lazyrepository,
|
||||
lazypath
|
||||
})
|
||||
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to continue" },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
end
|
||||
end
|
||||
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ import = "plugins" }
|
||||
},
|
||||
install = { missing = true, colorscheme = { "catppucchin" } },
|
||||
ui = {
|
||||
border = vim.g.ui.border
|
||||
},
|
||||
checker = {
|
||||
enabled = false,
|
||||
notify = true,
|
||||
},
|
||||
})
|
||||
@@ -1,5 +1,6 @@
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -25,8 +26,8 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
-- Keep the current directory and the browsing directory synced.
|
||||
|
||||
+64
-43
@@ -1,5 +1,6 @@
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -25,65 +26,78 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
-- UI
|
||||
-- UI settings
|
||||
|
||||
vim.opt.background = vim.g.ui.background
|
||||
-- Colored columns and rows
|
||||
vim.opt.colorcolumn = "+1,+2"
|
||||
vim.opt.textwidth = 120
|
||||
vim.opt.cursorcolumn = true
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.cursorlineopt = "both"
|
||||
vim.opt.linebreak = true
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = vim.g.ui.listchars
|
||||
vim.opt.number = true
|
||||
vim.opt.numberwidth = 4
|
||||
vim.opt.relativenumber = false
|
||||
vim.opt.winborder = vim.g.ui.border
|
||||
vim.opt.pumborder = vim.g.ui.border
|
||||
vim.opt.cursorlineopt = "both" -- cursor line is displayed in line and in number
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.termguicolors = true
|
||||
-- Linebreak behaviour and scroll offset
|
||||
vim.opt.linebreak = true -- visually line break at word boundary
|
||||
vim.opt.showbreak = vim.g.ui.linebreak -- show line break indicator
|
||||
vim.opt.scrolloff = 5
|
||||
vim.opt.sidescrolloff = 3
|
||||
vim.opt.showbreak = vim.g.ui.linebreak
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.wrap = false -- by default, do not wrap long lines
|
||||
vim.opt.wrapmargin = 3
|
||||
-- Show special characters
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = vim.g.ui.listchars
|
||||
-- show line numbers
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.numberwidth = 4
|
||||
-- border settings
|
||||
vim.opt.winborder = vim.g.ui.windowborder
|
||||
vim.opt.pumborder = vim.g.ui.popupborder
|
||||
-- window split behaviour
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.textwidth = 120
|
||||
vim.opt.wrap = false
|
||||
-- when no textwidth is specified, automatically add <EOL> at the end of a long line 3
|
||||
-- characters before reaching the window edge. Will have no effect if textwidth is specified otherwise.
|
||||
-- Set to 0 to disable.
|
||||
vim.opt.wrapmargin = 3
|
||||
-- hide mode and serch count (displayed in lualine instead)
|
||||
vim.opt.showmode = false
|
||||
-- hide mode, displayed in lualine
|
||||
-- vim.opt.showmode = false
|
||||
vim.opt.shortmess:append("S")
|
||||
-- enable visual bell
|
||||
vim.opt.visualbell = true
|
||||
|
||||
-- Editing
|
||||
|
||||
-- Editing settings
|
||||
|
||||
vim.opt.autoindent = true
|
||||
vim.opt.backspace = {"indent", "eol", "start"}
|
||||
vim.opt.expandtab = false
|
||||
vim.opt.backspace = { "indent", "eol", "start" }
|
||||
vim.opt.preserveindent = true
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.breakindent = true
|
||||
vim.opt.breakindentopt:append({ min = 20, shift = -2, sbr = ture, list = -1 })
|
||||
-- tab settings
|
||||
vim.opt.expandtab = false
|
||||
vim.opt.shiftround = true
|
||||
vim.opt.shiftwidth = 0
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.softtabstop = -1
|
||||
vim.opt.smarttab = true
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.breakindent = true
|
||||
vim.opt.breakindentopt:append({ min = 20, shift = -2, sbr = true, list = -1 })
|
||||
vim.opt.matchpairs:append({"<:>"})
|
||||
-- matching pairs of symbols
|
||||
vim.opt.matchpairs:append({ "<:>" })
|
||||
|
||||
|
||||
-- Search settings
|
||||
|
||||
-- Search
|
||||
vim.opt.hlsearch = true
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.inccommand = "split"
|
||||
vim.opt.inccommand = split
|
||||
vim.opt.incsearch = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Files
|
||||
|
||||
-- Files settings
|
||||
|
||||
vim.opt.backup = false
|
||||
vim.opt.writebackup = false
|
||||
vim.opt.fileformat = "unix"
|
||||
@@ -91,25 +105,32 @@ vim.opt.fileencoding = "utf-8"
|
||||
vim.opt.undofile = true
|
||||
vim.opt.swapfile = true
|
||||
|
||||
-- Performance
|
||||
vim.opt.updatetime = 1000
|
||||
vim.opt.timeoutlen = 600
|
||||
|
||||
-- Mouse & Clipboard
|
||||
-- Performance settings
|
||||
|
||||
vim.opt.updatetime = 1000
|
||||
vim.opt.timeoutlen = 300
|
||||
|
||||
|
||||
-- Mouse and Clipboard settings
|
||||
|
||||
vim.opt.mouse = "a"
|
||||
vim.schedule(function() vim.opt.clipboard = "unnamedplus" end)
|
||||
|
||||
-- Folding
|
||||
|
||||
-- Folding settings
|
||||
|
||||
vim.opt.foldcolumn = "auto"
|
||||
vim.opt.foldmethod = "expr"
|
||||
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||
vim.opt.foldlevel = 99
|
||||
vim.opt.foldlevel = 10 -- keep this many levels of folds open by default
|
||||
|
||||
|
||||
-- Autocomplete settings
|
||||
|
||||
-- Autocompletion
|
||||
vim.opt.autocomplete = false
|
||||
vim.opt.autocompletedelay = 0
|
||||
vim.opt.autocompletetimeout = 0
|
||||
vim.opt.completeopt = {"menu", "menuone", "noinsert", "popup", "preview"}
|
||||
vim.opt.completeitemalign = {"abbr", "kind", "menu"}
|
||||
vim.opt.completeopt = { "menu", "menuone", "noinsert", "popup", "preview" }
|
||||
vim.opt.completeitemalign = { "abbr", "kind", "menu" }
|
||||
vim.opt.completetimeout = 0
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
--[[
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠗⢀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣤⣀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣶⣤
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠐⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⠂
|
||||
⠀⠀⠀⠀⢀⣠⣴⣆⡈⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠃⠘⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢁⣰⣦⣄⡀
|
||||
⠀⠀⠐⠾⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠷⠂
|
||||
⠀⢸⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⡇
|
||||
⠀⢸⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⡇
|
||||
⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⡆⢰⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠃⠘⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⠿⠛⠉
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⡇⢸⠿⠛⠉
|
||||
|
||||
__ _ _
|
||||
/ _|___ ___| |_ __ _ ___| | __
|
||||
| ||_ /____/ __| __/ _` |/ __| |/ /
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
local enabled_ft = {
|
||||
"bash",
|
||||
}
|
||||
|
||||
local parser_ft_map = {
|
||||
-- parser = { list of filetypes }
|
||||
bash = { "bash", "template" },
|
||||
}
|
||||
|
||||
-- Force enable syntax if it is not working automatically
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = enabled_ft,
|
||||
callback = function()
|
||||
vim.treesitter.start()
|
||||
end,
|
||||
})
|
||||
|
||||
for parser, ft in pairs(parser_ft_map) do
|
||||
vim.treesitter.language.register(parser, ft)
|
||||
end
|
||||
+7
-53
@@ -1,5 +1,6 @@
|
||||
--[[
|
||||
|
||||
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||
@@ -25,16 +26,13 @@
|
||||
| _/ /_____\__ \ || (_| | (__| <
|
||||
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||
|
||||
Neovim 0.12 configuration
|
||||
(c) Frank Zechert 2026
|
||||
Neovim v0.12 configuration
|
||||
(C) Frank Zechert 2026
|
||||
]]
|
||||
|
||||
-- General UI settings applied across different parts of the neovim configuration
|
||||
vim.g.ui = {
|
||||
backround = "dark",
|
||||
background = "dark",
|
||||
flavour = "macchiato",
|
||||
border = "single",
|
||||
linebreak = "↘",
|
||||
listchars = {
|
||||
eol = "↵",
|
||||
tab = "⇥ ",
|
||||
@@ -49,9 +47,9 @@ vim.g.ui = {
|
||||
conceal = "⋯",
|
||||
nbsp = "␣",
|
||||
},
|
||||
textwidth = {
|
||||
default = 120
|
||||
},
|
||||
linebreak = "↘",
|
||||
windowborder = "single",
|
||||
popupborder = "single",
|
||||
custom_highlights = function(colors, utils)
|
||||
return {
|
||||
whitespace = { fg = colors.overlay0 },
|
||||
@@ -61,9 +59,6 @@ vim.g.ui = {
|
||||
}
|
||||
end,
|
||||
symbols = {
|
||||
component_separators = { left = "│", right = "│" },
|
||||
section_separators = { left = "▒", right = "▒" },
|
||||
window = "",
|
||||
diagnostic = {
|
||||
prefix = "■",
|
||||
sign_error = "E",
|
||||
@@ -71,46 +66,5 @@ vim.g.ui = {
|
||||
sign_info = "I",
|
||||
sign_hint = "H",
|
||||
},
|
||||
git = {
|
||||
signs = {
|
||||
add = { text = "┃" },
|
||||
change = { text = "┃" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
signs_staged = {
|
||||
add = { text = "┃" },
|
||||
change = { text = "┃" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
},
|
||||
todo_comments = {
|
||||
error = {
|
||||
icon = "",
|
||||
},
|
||||
todo = {
|
||||
icon = "",
|
||||
},
|
||||
hack = {
|
||||
icon = "",
|
||||
},
|
||||
warn = {
|
||||
icon = "",
|
||||
},
|
||||
perf = {
|
||||
icon = "",
|
||||
},
|
||||
note = {
|
||||
icon = "",
|
||||
},
|
||||
test = {
|
||||
icon = "",
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user