Compare commits
3 Commits
5929cd53d7
...
3b707ada11
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b707ada11 | |||
| 7c428386d8 | |||
| cb1a941fe1 |
@@ -38,7 +38,7 @@ create_cmd("TextYankPost", {
|
|||||||
desc = "Highlight yanked text",
|
desc = "Highlight yanked text",
|
||||||
group = create_group("cmd-highlight-yank", { clear = true }),
|
group = create_group("cmd-highlight-yank", { clear = true }),
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.highlight.on_yank()
|
vim.hl.on_yank()
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ local function smart_buffer_switch(current)
|
|||||||
local current_index = nil
|
local current_index = nil
|
||||||
for index, buffer in ipairs(buffers) do
|
for index, buffer in ipairs(buffers) do
|
||||||
if buffer.bufnr == current then
|
if buffer.bufnr == current then
|
||||||
current_index = i
|
current_index = index
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ vim.opt.pumborder = vim.g.ui.popupborder
|
|||||||
vim.opt.splitbelow = true
|
vim.opt.splitbelow = true
|
||||||
vim.opt.splitright = true
|
vim.opt.splitright = true
|
||||||
-- hide mode, displayed in lualine
|
-- hide mode, displayed in lualine
|
||||||
-- vim.opt.showmode = false
|
vim.opt.showmode = false
|
||||||
vim.opt.shortmess:append("S")
|
vim.opt.shortmess:append("S")
|
||||||
-- enable visual bell
|
-- enable visual bell
|
||||||
vim.opt.visualbell = true
|
vim.opt.visualbell = true
|
||||||
@@ -75,7 +75,7 @@ vim.opt.backspace = { "indent", "eol", "start" }
|
|||||||
vim.opt.preserveindent = true
|
vim.opt.preserveindent = true
|
||||||
vim.opt.smartindent = true
|
vim.opt.smartindent = true
|
||||||
vim.opt.breakindent = true
|
vim.opt.breakindent = true
|
||||||
vim.opt.breakindentopt:append({ min = 20, shift = -2, sbr = ture, list = -1 })
|
vim.opt.breakindentopt:append({ min = 20, shift = -2, sbr = true, list = -1 })
|
||||||
-- tab settings
|
-- tab settings
|
||||||
vim.opt.expandtab = false
|
vim.opt.expandtab = false
|
||||||
vim.opt.shiftround = true
|
vim.opt.shiftround = true
|
||||||
@@ -91,7 +91,7 @@ vim.opt.matchpairs:append({ "<:>" })
|
|||||||
|
|
||||||
vim.opt.hlsearch = true
|
vim.opt.hlsearch = true
|
||||||
vim.opt.ignorecase = true
|
vim.opt.ignorecase = true
|
||||||
vim.opt.inccommand = split
|
vim.opt.inccommand = "split"
|
||||||
vim.opt.incsearch = true
|
vim.opt.incsearch = true
|
||||||
vim.opt.smartcase = true
|
vim.opt.smartcase = true
|
||||||
|
|
||||||
@@ -108,8 +108,8 @@ vim.opt.swapfile = true
|
|||||||
|
|
||||||
-- Performance settings
|
-- Performance settings
|
||||||
|
|
||||||
vim.opt.updatetime = 1000
|
vim.opt.updatetime = 1000 -- after this idle time, write backup, swap files etc.
|
||||||
vim.opt.timeoutlen = 300
|
vim.opt.timeoutlen = 500 -- timeout to wait for key combinations to complete.
|
||||||
|
|
||||||
|
|
||||||
-- Mouse and Clipboard settings
|
-- Mouse and Clipboard settings
|
||||||
|
|||||||
@@ -66,5 +66,9 @@ vim.g.ui = {
|
|||||||
sign_info = "I",
|
sign_info = "I",
|
||||||
sign_hint = "H",
|
sign_hint = "H",
|
||||||
},
|
},
|
||||||
|
component_separators = { left = "│", right = "│" },
|
||||||
|
section_separators = { left = "▒", right = "▒" },
|
||||||
|
window = "",
|
||||||
|
not_overline = "\u{0305}",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+161
-41
@@ -33,48 +33,168 @@ vim.pack.add({
|
|||||||
{ src = "https://github.com/neovim/nvim-lspconfig" },
|
{ src = "https://github.com/neovim/nvim-lspconfig" },
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.lsp.config("lua_ls", {
|
require("lsp.lua_ls")
|
||||||
on_init = function(client)
|
|
||||||
if client.workspace_folders then
|
local function run_healthcheck(section)
|
||||||
local path = client.workspace_folders[1].name
|
local before = {}
|
||||||
if
|
for _, b in ipairs(vim.api.nvim_list_bufs()) do
|
||||||
path ~= vim.fn.stdpath("config")
|
before[b] = true
|
||||||
and (
|
end
|
||||||
vim.uv.fs_stat(path .. "/.luarc.json")
|
|
||||||
or vim.uv.fs_stat(path .. "/.luarc.jsonc")
|
vim.cmd("silent checkhealth " .. section)
|
||||||
)
|
|
||||||
then
|
local after = vim.api.nvim_list_bufs()
|
||||||
-- Path is not neovim's config folder and
|
local health_buf = nil
|
||||||
-- the file .luarc.json or .luarc.jsonc exists
|
|
||||||
-- in the directory -> exit function and skip custom
|
for _, b in ipairs(after) do
|
||||||
-- configuration of the client below
|
if not before[b] then
|
||||||
return
|
health_buf = b
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not health_buf then
|
||||||
|
return { "Could not capture :checkhealth vim.lsp output" }
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Read lines
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(health_buf, 0, -1, false)
|
||||||
|
|
||||||
|
-- Close the health window
|
||||||
|
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||||
|
if vim.api.nvim_win_get_buf(win) == health_buf then
|
||||||
|
vim.api.nvim_win_close(win, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return lines
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_all_treesitter_languages()
|
||||||
|
local bufnr = 0
|
||||||
|
local ok, parser = pcall(vim.treesitter.get_parser, bufnr)
|
||||||
|
if not ok or not parser then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local langs = { parser:lang() }
|
||||||
|
for _, child in ipairs(parser:children()) do
|
||||||
|
table.insert(langs, child:lang())
|
||||||
|
end
|
||||||
|
return langs
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_treesitter_status()
|
||||||
|
local bufnr = 0
|
||||||
|
local ok, parser = pcall(vim.treesitter.get_parser, bufnr)
|
||||||
|
|
||||||
|
if not ok or not parser then
|
||||||
|
return {
|
||||||
|
"Treesitter:",
|
||||||
|
" active: no",
|
||||||
|
" parsers: none",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local langs = get_all_treesitter_languages()
|
||||||
|
return {
|
||||||
|
"Treesitter:",
|
||||||
|
" active: yes",
|
||||||
|
" parsers: " .. table.concat(langs, ", "),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function show_lsp_details()
|
||||||
|
local popup_buffer = vim.api.nvim_create_buf(false, true)
|
||||||
|
local lsp_clients = vim.lsp.get_clients({ bufnr = 0 })
|
||||||
|
local lines = {}
|
||||||
|
|
||||||
|
-- Treesitter status
|
||||||
|
table.insert(lines, "Treesitter Status")
|
||||||
|
table.insert(lines, "=================")
|
||||||
|
local ts = get_treesitter_status()
|
||||||
|
for _, l in ipairs(ts) do
|
||||||
|
table.insert(lines, l)
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(lines, "")
|
||||||
|
if #lsp_clients == 0 then
|
||||||
|
table.insert(lines, "No LSP clients attached.")
|
||||||
|
else
|
||||||
|
table.insert(lines, "Active LSP Clients:")
|
||||||
|
table.insert(lines, "===================")
|
||||||
|
for _, client in ipairs(lsp_clients) do
|
||||||
|
table.insert(lines, "")
|
||||||
|
table.insert(lines, "• " .. client.name)
|
||||||
|
|
||||||
|
-- Root folders
|
||||||
|
local roots = {}
|
||||||
|
if client.workspace_folders then
|
||||||
|
for _, workspace_folder in ipairs(client.workspace_folders) do
|
||||||
|
table.insert(roots, workspace_folder.name or workspace_folder.uri or "")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #roots > 0 then
|
||||||
|
table.insert(lines, " Roots:")
|
||||||
|
for _, root in ipairs(roots) do
|
||||||
|
table.insert(lines, " - " ..root)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
table.insert(lines, " Roots: none")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Capabilities
|
||||||
|
table.insert(lines, " Capabilities:")
|
||||||
|
for capability, _ in pairs(client.server_capabilities or {}) do
|
||||||
|
table.insert(lines, " - " .. capability)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
table.insert(lines, "")
|
||||||
runtime = {
|
table.insert(lines, "Health Check (vim.lsp):")
|
||||||
-- neovim uses LuaJIT runtime
|
table.insert(lines, "=======================")
|
||||||
version = "LuaJIT",
|
local health_lines = run_healthcheck("vim.lsp")
|
||||||
-- find lua modules the same way neovim does
|
for _, l in ipairs(health_lines) do
|
||||||
path = {
|
table.insert(lines, " " .. l)
|
||||||
"lua/?.lua",
|
end
|
||||||
"lua/?/init.lua",
|
|
||||||
}
|
table.insert(lines, "")
|
||||||
},
|
table.insert(lines, "Health Check (vim.treesitter):")
|
||||||
-- make the server aware of neovim runtime files
|
table.insert(lines, "=======================")
|
||||||
workspace = {
|
local health_lines = run_healthcheck("vim.treesitter")
|
||||||
checkThirdParty = false,
|
for _, l in ipairs(health_lines) do
|
||||||
library = {
|
table.insert(lines, " " .. l)
|
||||||
vim.env.VIMRUNTIME,
|
end
|
||||||
-- for LSP settings type annotations
|
|
||||||
vim.api.nvim_get_runtime_file("lua/lspconfig", false)[1],
|
|
||||||
}
|
vim.api.nvim_buf_set_lines(popup_buffer, 0, -1, false, lines)
|
||||||
}
|
vim.api.nvim_set_option_value("modifiable", false, { buf = popup_buffer })
|
||||||
})
|
vim.api.nvim_set_option_value("readonly", true, { buf = popup_buffer })
|
||||||
end,
|
local width = math.floor(vim.o.columns * 0.6)
|
||||||
settings = {
|
local height = math.floor(vim.o.lines * 0.6)
|
||||||
Lua = {}
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
}
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
|
||||||
|
local window = vim.api.nvim_open_win(popup_buffer, true, {
|
||||||
|
relative = "editor",
|
||||||
|
style = "minimal",
|
||||||
|
border = vim.g.ui.popupborder,
|
||||||
|
row = row,
|
||||||
|
col = col,
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "q", function()
|
||||||
|
if vim.api.nvim_win_is_valid(window) then
|
||||||
|
vim.api.nvim_win_close(window, true)
|
||||||
|
end
|
||||||
|
end, { buffer = popup_buffer, nowait = true, desc = "Close Window" })
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>li", show_lsp_details, {
|
||||||
|
desc = "Show detailed LSP info in a float"
|
||||||
})
|
})
|
||||||
vim.lsp.enable({ "lua_ls" })
|
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
--[[
|
||||||
|
|
||||||
|
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠗⢀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣤⣀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣶⣤
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠐⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⠂
|
||||||
|
⠀⠀⠀⠀⢀⣠⣴⣆⡈⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠃⠘⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢁⣰⣦⣄⡀
|
||||||
|
⠀⠀⠐⠾⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠷⠂
|
||||||
|
⠀⢸⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⡇
|
||||||
|
⠀⢸⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⡇
|
||||||
|
⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⡆⢰⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠃⠘⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⡇⢸⠿⠛⠉
|
||||||
|
|
||||||
|
__ _ _
|
||||||
|
/ _|___ ___| |_ __ _ ___| | __
|
||||||
|
| ||_ /____/ __| __/ _` |/ __| |/ /
|
||||||
|
| _/ /_____\__ \ || (_| | (__| <
|
||||||
|
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||||
|
|
||||||
|
Neovim v0.12 configuration
|
||||||
|
(C) Frank Zechert 2026
|
||||||
|
]]
|
||||||
|
|
||||||
|
vim.lsp.config("lua_ls", {
|
||||||
|
on_init = function(client)
|
||||||
|
if client.workspace_folders then
|
||||||
|
local path = client.workspace_folders[1].name
|
||||||
|
if
|
||||||
|
path ~= vim.fn.stdpath("config")
|
||||||
|
and (
|
||||||
|
vim.uv.fs_stat(path .. "/.luarc.json")
|
||||||
|
or vim.uv.fs_stat(path .. "/.luarc.jsonc")
|
||||||
|
)
|
||||||
|
then
|
||||||
|
-- Path is not neovim's config folder, or has custom
|
||||||
|
-- lua language server configuration, skip custom client configuration
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
||||||
|
runtime = {
|
||||||
|
-- neovim uses LuaJIT runtime
|
||||||
|
version = "LuaJIT",
|
||||||
|
-- find lua modules the same way neovim does
|
||||||
|
path = {
|
||||||
|
"lua/?.lua",
|
||||||
|
"lua/?/init.lua",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- make the server aware of neovim runtime files
|
||||||
|
workspace = {
|
||||||
|
checkThirdParty = false,
|
||||||
|
library = {
|
||||||
|
vim.env.VIMRUNTIME,
|
||||||
|
-- for LSP settings type annotations
|
||||||
|
vim.api.nvim_get_runtime_file("lua/lspconfig", false)[1],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
settings = {
|
||||||
|
Lua = {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable({ "lua_ls" })
|
||||||
@@ -31,3 +31,4 @@
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
require("plugins/catppuccin")
|
require("plugins/catppuccin")
|
||||||
|
require("plugins/lualine")
|
||||||
|
|||||||
@@ -0,0 +1,154 @@
|
|||||||
|
--[[
|
||||||
|
|
||||||
|
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠗⢀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣤⣀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣶⣤
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠐⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⠂
|
||||||
|
⠀⠀⠀⠀⢀⣠⣴⣆⡈⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠃⠘⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢁⣰⣦⣄⡀
|
||||||
|
⠀⠀⠐⠾⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠷⠂
|
||||||
|
⠀⢸⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⡇
|
||||||
|
⠀⢸⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⡇
|
||||||
|
⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⡆⢰⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠃⠘⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⠿⠛⠉
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⡇⢸⠿⠛⠉
|
||||||
|
|
||||||
|
__ _ _
|
||||||
|
/ _|___ ___| |_ __ _ ___| | __
|
||||||
|
| ||_ /____/ __| __/ _` |/ __| |/ /
|
||||||
|
| _/ /_____\__ \ || (_| | (__| <
|
||||||
|
|_|/___| |___/\__\__,_|\___|_|\_\
|
||||||
|
|
||||||
|
Neovim v0.12 configuration
|
||||||
|
(C) Frank Zechert 2026
|
||||||
|
]]
|
||||||
|
|
||||||
|
vim.pack.add({
|
||||||
|
{ src = "https://github.com/nvim-tree/nvim-web-devicons" },
|
||||||
|
{ src = "https://github.com/nvim-lualine/lualine.nvim" }
|
||||||
|
})
|
||||||
|
|
||||||
|
local function expandtabs()
|
||||||
|
if not vim.bo.expandtab then
|
||||||
|
return string.format("%s %d", vim.g.ui.listchars.leadtab, vim.bo.tabstop)
|
||||||
|
else
|
||||||
|
local width = vim.bo.shiftwidth
|
||||||
|
if width == 0 then
|
||||||
|
width = vim.bo.tabstop
|
||||||
|
end
|
||||||
|
return string.format("%s %d", vim.g.ui.listchars.nbsp, width)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function windownumber()
|
||||||
|
return string.format("%s %s", vim.g.ui.symbols.window, vim.fn.winnr())
|
||||||
|
end
|
||||||
|
|
||||||
|
local function treesitter_status()
|
||||||
|
local ok, parser = pcall(vim.treesitter.get_parser, 0)
|
||||||
|
if not ok or not parser then
|
||||||
|
return "T"..vim.g.ui.symbols.not_overline
|
||||||
|
else
|
||||||
|
return "T"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function lsp_status()
|
||||||
|
local clients = vim.lsp.get_clients({bufnr = 0})
|
||||||
|
if #clients == 0 then
|
||||||
|
-- no LSP is attached
|
||||||
|
return "L"..vim.g.ui.symbols.not_overline
|
||||||
|
end
|
||||||
|
|
||||||
|
local lsp_names = {}
|
||||||
|
for _, client in ipairs(clients) do
|
||||||
|
local roots = {}
|
||||||
|
if client.workspace_folders then
|
||||||
|
for _, workspace_folder in ipairs(client.workspace_folders) do
|
||||||
|
table.insert(roots, workspace_folder.name or workspace_folder.uri or "")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local has_root = (roots and #roots > 0)
|
||||||
|
local root_flag = has_root and "+R" or ""
|
||||||
|
table.insert(lsp_names, string.format("%s%s", client.name, root_flag))
|
||||||
|
end
|
||||||
|
return string.format("L: %s", table.concat(lsp_names, ", "))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
require('lualine').setup({
|
||||||
|
options = {
|
||||||
|
component_separators = vim.g.ui.symbols.component_separators,
|
||||||
|
section_separators = vim.g.ui.symbols.section_separators,
|
||||||
|
globalstatus = false,
|
||||||
|
refresh = {
|
||||||
|
refresh_time = 33, -- ~30 fps
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = { "mode" },
|
||||||
|
lualine_b = { "searchcount", "selectioncount" },
|
||||||
|
lualine_c = {
|
||||||
|
{ "filename", file_status = true, newfile_status = true, path = 1 },
|
||||||
|
},
|
||||||
|
lualine_x = {
|
||||||
|
"encoding",
|
||||||
|
{ "fileformat", icons_enabled = true, symbols = { unix = "LF", dos = "CRLF", mac = "CR" } },
|
||||||
|
expandtabs,
|
||||||
|
"filesize"
|
||||||
|
},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = { "location", "progress" },
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {
|
||||||
|
{ "filename", file_status = true, newfile_status = true, path = 1 },
|
||||||
|
},
|
||||||
|
lualine_x = {
|
||||||
|
"encoding",
|
||||||
|
{ "fileformat", icons_enabled = true, symbols = { unix = "LF", dos = "CRLF", mac = "CR" } },
|
||||||
|
expandtabs,
|
||||||
|
"filesize",
|
||||||
|
},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = { "location", "progress" },
|
||||||
|
},
|
||||||
|
tabline = {
|
||||||
|
lualine_a = {
|
||||||
|
{ "buffers", mode = 2, use_mode_colors = true },
|
||||||
|
},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {
|
||||||
|
{ "tabs", mode = 0, use_mode_colors = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
winbar = {
|
||||||
|
lualine_a = { windownumber },
|
||||||
|
lualine_b = { "filename", "filetype" },
|
||||||
|
lualine_c = { "diagnostics" },
|
||||||
|
lualine_x = { treesitter_status, lsp_status },
|
||||||
|
lualine_y = { "branch", "diff" },
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
inactive_winbar = {
|
||||||
|
lualine_a = { windownumber },
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
@@ -4,9 +4,17 @@
|
|||||||
"rev": "e068ab5f8261f23f6f71ffd8791ae40315b77b9c",
|
"rev": "e068ab5f8261f23f6f71ffd8791ae40315b77b9c",
|
||||||
"src": "https://github.com/catppuccin/nvim"
|
"src": "https://github.com/catppuccin/nvim"
|
||||||
},
|
},
|
||||||
|
"lualine.nvim": {
|
||||||
|
"rev": "221ce6b2d999187044529f49da6554a92f740a96",
|
||||||
|
"src": "https://github.com/nvim-lualine/lualine.nvim"
|
||||||
|
},
|
||||||
"nvim-lspconfig": {
|
"nvim-lspconfig": {
|
||||||
"rev": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e",
|
"rev": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e",
|
||||||
"src": "https://github.com/neovim/nvim-lspconfig"
|
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
},
|
||||||
|
"nvim-web-devicons": {
|
||||||
|
"rev": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c",
|
||||||
|
"src": "https://github.com/nvim-tree/nvim-web-devicons"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user