From 34a3a3ae4d5d42f01e60525b0ea5bb43d36f7e91 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Tue, 24 Feb 2026 22:47:20 +0100 Subject: neovim: statusline zeigt nun auch den Copilot-Status an --- nvim/lua/config/statusline.lua | 52 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/nvim/lua/config/statusline.lua b/nvim/lua/config/statusline.lua index fb89a66..7c61956 100644 --- a/nvim/lua/config/statusline.lua +++ b/nvim/lua/config/statusline.lua @@ -63,10 +63,14 @@ vim.api.nvim_create_autocmd( -- Statusline-Sektionen (reine Darstellung, keine IO) ---------------------------------------------------------------------- +-- Git-Branch (buffer-lokal, gecached, kein redraw-spam) + local function git() return vim.b.git_branch or "" end +-- Git-Diff (buffer-lokal, kein redraw-spam) + local function git_diff() local gsd = vim.b.gitsigns_status_dict if not gsd then return "" end @@ -83,6 +87,10 @@ local function git_diff() return "" end +---------------------------------------------------------------------- +-- Dateiname mit Modifikationsstatus +---------------------------------------------------------------------- + local function filename() local name = vim.fn.expand("%:t") if name == "" then @@ -96,6 +104,10 @@ local function filename() return " " .. name .. " " end +------------------------------------------------------------------------ +-- Treesitter-Aktivität (buffer-lokal, kein redraw-spam) +------------------------------------------------------------------------ + local function treesitter() local ok = vim.treesitter.highlighter.active[vim.api.nvim_get_current_buf()] if ok then @@ -104,6 +116,10 @@ local function treesitter() return "" end +------------------------------------------------------------------------ +-- Diagnostik-Counts (buffer-lokal, kein redraw-spam) +------------------------------------------------------------------------ + local function diagnostics() local counts = { error = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }), @@ -126,16 +142,48 @@ local function diagnostics() return "" end +------------------------------------------------------------------------ +-- Filetype & Encoding (buffer-lokal, kein redraw-spam) +------------------------------------------------------------------------ + local function fileinfo() local ft = vim.bo.filetype ~= "" and vim.bo.filetype or "none" local enc = vim.bo.fileencoding ~= "" and vim.bo.fileencoding or vim.o.encoding - return string.format(" %s %s ", ft, enc) + return string.format(" %s %s ", ft, enc) end +------------------------------------------------------------------------ +-- Cursor-Position (kein redraw-spam) +------------------------------------------------------------------------ + local function position() return string.format(" %d:%d ", vim.fn.line("."), vim.fn.col(".")) end +------------------------------------------------------------------------- +-- Copilot-Status (buffer-lokal, kein redraw-spam) +------------------------------------------------------------------------- + +local function copilot() + if vim.fn.exists("*copilot#Enabled") == 0 then + return "" + end + + if vim.fn["copilot#Enabled"]() == 0 then + return "  OFF " + end + + if vim.b.copilot_suggestion and vim.b.copilot_suggestion.is_visible then + return "  SUG " + end + + if vim.b.copilot_suggestion_auto_trigger == false then + return "  MAN " + end + + return "  ON " +end + ---------------------------------------------------------------------- -- Öffentliche Statusline-Funktion ---------------------------------------------------------------------- @@ -153,9 +201,9 @@ function M.statusline() "%=", -- RIGHT: Feedback & Meta + copilot(), diagnostics(), treesitter(), - "%#StatusLineNC#", fileinfo(), " %p%% ", position(), -- cgit v1.3