-- ~/.config/nvim/init.lua -- 1. BOOTSTRAP PAQ (Der Manager selbst) local data_path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/" local paq_path = data_path .. "paq-nvim" if vim.fn.empty(vim.fn.glob(paq_path)) > 0 then print("Installiere Paq...") vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", paq_path }) vim.cmd("packadd paq-nvim") end -- 2. PLUGINS LADEN local plugins = require("plugins") local paq = require("paq") paq(plugins) -- 3. AUTO-CHECK FÜR NEUE PLUGINS local missing_plugins = false for _, plugin in ipairs(plugins) do local name = plugin:match(".*/(.*)") if name and vim.fn.empty(vim.fn.glob(data_path .. name)) > 0 then missing_plugins = true break end end if missing_plugins then paq.install() end -- 4. DEINE RUHE-OPTIONEN (A11y / Screenreader optimiert) local opt = vim.opt opt.number = false -- Keine Zeilennummern opt.relativenumber = false -- Keine relativen Nummern opt.showcmd = false -- Keine Anzeige unfertiger Befehle opt.laststatus = 0 -- Statuszeile aus (weniger Lärm) opt.ruler = false -- Keine Cursor-Position unten rechts opt.showmode = false -- "-- INSERT --" Anzeige aus opt.mouse = "" -- Maus deaktiviert opt.shortmess:append("atI") -- Kürzere Meldungen, kein Intro-Screen opt.hidden = true -- Buffer im Hintergrund erlauben -- 5. LSP SCHUTZ & DIAGNOSTICS local ok_lsp, lspconfig = pcall(require, "lspconfig") if ok_lsp then vim.diagnostic.config({ virtual_text = false, -- Verhindert, dass Text in der Zeile "schwebt" underline = true, -- Fehler werden unterstrichen signs = false, -- Keine Icons am Rand }) end -- 6. KEYMAPS (LEADER-TASTE) vim.g.mapleader = " " vim.keymap.set("n", "e", vim.diagnostic.setqflist) -- Fehler in Liste zeigen -- Leertaste + b öffnet das Dashboard vim.keymap.set("n", "b", function() local ok, dashboard = pcall(require, "config.dashboard") if ok then dashboard.open() else print("Dashboard konnte nicht geladen werden!") end end, { desc = "Zurück zum Dashboard" }) local updater =require("core.update") vim.keymap.set("n", "U", updater.update, { desc = "Update MonoVim Core" }) -- 7. MINI.BUFREMOVE SETUP local ok_mini, bufremove = pcall(require, "mini.bufremove") if ok_mini then bufremove.setup({}) end -- 8. DASHBOARD LOGIK (VERHINDERT LEERE BUFFER) local function force_dashboard() vim.schedule(function() local listed = vim.fn.getbufinfo({buflisted = 1}) -- Wenn keine Buffer mehr da sind ODER nur noch ein leerer Buffer existiert if #listed == 0 or (#listed == 1 and listed[1].name == "" and vim.bo[listed[1].bufnr].filetype == "") then local ok_dash, dashboard = pcall(require, "config.dashboard") if ok_dash then dashboard.open() end end end) end -- LAZYVIM-STYLE CLOSE: Leertaste + d vim.keymap.set("n", "d", function() if vim.bo.modified then local choice = vim.fn.confirm("Änderungen speichern?", "&Ja\n&Nein\n&Abbrechen", 1) if choice == 1 then vim.cmd("write") if ok_mini then bufremove.delete(0, false) else vim.cmd("bd") end elseif choice == 2 then if ok_mini then bufremove.delete(0, true) else vim.cmd("bd!") end end else if ok_mini then bufremove.delete(0, false) else vim.cmd("bd") end end end, { desc = "Buffer schließen und Dashboard prüfen" }) -- 9. AUTOCMDS FÜR DAS DASHBOARD -- Beim Starten ohne Datei vim.api.nvim_create_autocmd("VimEnter", { callback = function() if vim.fn.argc() == 0 and vim.api.nvim_buf_get_name(0) == "" then force_dashboard() end end, }) -- Wenn ein Buffer gelöscht wird (z.B. durch :bd oder d) vim.api.nvim_create_autocmd("BufDelete", { callback = force_dashboard })