From 31501f173719eef66c0cf68a21c37b5b908cb6ab Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 8 Apr 2026 00:39:08 +0200 Subject: [PATCH] wrote source code --- .DS_Store | Bin 0 -> 8196 bytes init.lua | 113 +++++++++++++++++++++++++++++++++++++++ lua/.DS_Store | Bin 0 -> 6148 bytes lua/config/dashboard.lua | 67 +++++++++++++++++++++++ lua/core/update.lua | 18 +++++++ lua/plugins.lua | 7 +++ 6 files changed, 205 insertions(+) create mode 100644 .DS_Store create mode 100644 init.lua create mode 100644 lua/.DS_Store create mode 100644 lua/config/dashboard.lua create mode 100644 lua/core/update.lua create mode 100644 lua/plugins.lua diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5c90707e03fb3d48c52be004180a1d13bf168d60 GIT binary patch literal 8196 zcmeHMO-~a+7=8y(wxY5KC~8a^dod9a1PR6%O2H3e48#&Fiq`$2Y}n2;yIZOflAiVC z4>0lS)su;dF<$h-)sx1bpjS`&&PSzEz(f-xai+{X@67wLGtcbq>{UzT#hnU zc#GF&7z^y0Y}vEESIL`QKjmU(YWEMamwE833YQgRoE5f0U09@t=d-E;4(H_hBHp-tC%g9vvy^gJr!O)V@$UYx6w=kjKI z> zhQ%=}=6r`y+4FW07OT^t$3vz@zeo~O>8my2gcM9jNdX^~u9~Efq+YvEg*-zU^%AM{ zwA3WCo$i}%oDe(N)#?w{PZD!^&kH*L^+A3+$XKDDiK>S>4N}4gDx}!f0cpnVrL?S literal 0 HcmV?d00001 diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..eea471b --- /dev/null +++ b/init.lua @@ -0,0 +1,113 @@ +-- ~/.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 +}) diff --git a/lua/.DS_Store b/lua/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2dbca32723a82093be9975b7f942e829edfe0f1a GIT binary patch literal 6148 zcmeHK%}*0S6n_I1wji=VtB5ga?8O9vd<8YePzpvHV<47b5wLEz+p=Lh)9h|RAS6BO z$v?ovt5;7ZUW^yLn0V5Y@lQ~Xp7hPf21@-17h}l279x1E^|0FZR8I0~Qx zfQHI3(t*V9Cn#j9gO`ml= zSXH#6^LW>ZZoQ|suP4?MkH=4*>OVbjW+1Qk6%2E|?DE;pFo(Hmr)DjeUAvgA8m3Ll zIp2EVXYFk(ulF7Zy=@im?YS1Vsu&a7bBOM)yOu>oe{-dhXZg8(_EKK&_Dq*K&OGyM z-)3}a#Y3($zE#Q462lQUkmtE7Z}Ju`*F$W|$t@YKYtXWl-dc5xg5}K7H1mB{$=N2O za^~HlTddBz7Vk1S^;I&NOx+BO^U}~EDGj_mVu7WQBwrPu3VVSvYDJT&dD#-hn`RKE z;T9~yI&8yZcmmJhCA@`C@CCk;cA}GWWROgdt7MAYAQ^I(m}HIE#FZVi1RwgWtOq6W z&}#V5PI)wIvPw0GIM`lcv$N{QtzDe@`0f4cH`C2A#lOZ>*Zw@tM%JYcqh;)y&%G0> z;6M$^xEU#UFf3}uzH60l%QWi#ZHd*xi=s;FJbY@H5i$@maKstl=R*ROV@hFNqBuIR z5KjQa2)c!!&Ce&ElTesaSeJ+`C`6_r%2cAB7(}L{KcV7M3hNSOIuJ23_M=87>V-nY z=;%*~a3Cp(VHq+IGSJ9CtE}q${=fG7_kUwjSPK~l88}i5kjQLymcJ;}-P*J`e%B^Y u@1t_zadn9z1q*c@3xi+9{is5)Ex`@Ml)}11^q_=)1OyFX5i;;k8Tbk0bp`VP literal 0 HcmV?d00001 diff --git a/lua/config/dashboard.lua b/lua/config/dashboard.lua new file mode 100644 index 0000000..067bd39 --- /dev/null +++ b/lua/config/dashboard.lua @@ -0,0 +1,67 @@ +local M = {} + +-- Hilfsfunktion zum Zeichnen des Menüs +local function draw_menu(lines, keymaps) + local buf = vim.api.nvim_create_buf(false, true) + vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines) + vim.api.nvim_set_current_buf(buf) + + -- Lokale Einstellungen für das Menü-Fenster + vim.opt_local.number = false + vim.opt_local.relativenumber = false + vim.opt_local.buftype = "nofile" + vim.opt_local.bufhidden = "wipe" + vim.opt_local.cursorline = true + + -- Keymaps für dieses Menü setzen + local opts = { buffer = buf, noremap = true, silent = true } + for key, cmd in pairs(keymaps) do + vim.keymap.set("n", key, cmd, opts) + end +end + +-- Das Plugin-Untermenü (wird bei 'p' aufgerufen) +function M.open_plugins_menu() + local lines = { + " PLUGINS VERWALTEN", + "========================", + "", + " [u] Update (Sync)", + " [i] Install", + " [a] Add (Öffne Liste)", + " [b] Zurück", + "", + "========================", + } + local keys = { + u = ":PaqSync", + i = ":PaqInstall", + a = ":edit ~/.config/nvim/lua/plugins.lua", + b = function() M.open() end, -- Geht zurück zum Hauptmenü + } + draw_menu(lines, keys) +end + +-- Das Hauptmenü +function M.open() + local lines = { + " Mono VIM - 0.16", + "========================", + "", + " [n] New File", + " [r] Recent Files", + " [p] Plugins...", + " [q] Quit", + "", + "========================", + } + local keys = { + n = ":ene | startinsert", + r = ":oldfiles", + p = function() M.open_plugins_menu() end, + q = ":q!", + } + draw_menu(lines, keys) +end + +return M \ No newline at end of file diff --git a/lua/core/update.lua b/lua/core/update.lua new file mode 100644 index 0000000..6c03786 --- /dev/null +++ b/lua/core/update.lua @@ -0,0 +1,18 @@ +-- ~/.config/nvim/lua/monovim/updater.lua +local M = {} + +M.update = function() + print("MonoVim Core wird aktualisiert...") + local config_path = vim.fn.stdpath("config") + local handle = io.popen("cd " .. config_path .. " && git pull 2>&1") + local result = handle:read("*a") + handle:close() + + if result:find("Already up to date") then + print("MonoVim ist bereits aktuell.") + else + print("Update erfolgreich! Bitte neu starten.") + end +end + +return M diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..e14b1cf --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,7 @@ +return { + "savq/paq-nvim", -- Der Manager selbst + "neovim/nvim-lspconfig", -- LSP Support + "nvim-treesitter/nvim-treesitter", -- Syntax Highlighting + "tpope/vim-fugitive", + "echasnovski/mini.nvim", +} \ No newline at end of file