From 660a005fa15e99c4aa1cef3d844a488cfde65010 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 07:30:36 +0200 Subject: windows: install-win.cmd, gmake.cmd und Windows-Setup-Anleitung hinzugefuegt Eigenstaendiger, Windows-nativer Installationsweg fuer nvim/git/npm-Config (Kopieren statt Symlinks, keine Admin-Rechte noetig). install.sh und die bestehenden bootstrap-Skripte bleiben unveraendert. --- install-win.cmd | 64 ++++++++++++++++++++++++++++++++++ neovim-windows-setup.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ windows/bin/gmake.cmd | 11 ++++++ 3 files changed, 167 insertions(+) create mode 100644 install-win.cmd create mode 100644 neovim-windows-setup.md create mode 100644 windows/bin/gmake.cmd diff --git a/install-win.cmd b/install-win.cmd new file mode 100644 index 0000000..007516d --- /dev/null +++ b/install-win.cmd @@ -0,0 +1,64 @@ +@echo off +setlocal enabledelayedexpansion + +rem Windows-natives Pendant zu install.sh. +rem Kopiert (statt zu verlinken) die relevanten Konfigurationen an ihre +rem nativen Windows-Zielorte. install.sh bleibt unveraendert; dieses +rem Skript ist bewusst eigenstaendig, da FreeBSD/macOS und Windows zu +rem unterschiedlich sind fuer eine gemeinsame Installationsroutine. +rem +rem Hinweis: Nach Aenderungen an nvim/ oder git/ dieses Skript erneut +rem ausfuehren, um die Kopien zu aktualisieren (keine Symlinks). + +set "SCRIPT_DIR=%~dp0" + +set "NVIM_SRC=%SCRIPT_DIR%nvim" +set "NVIM_DST=%LOCALAPPDATA%\nvim" + +set "GIT_CONFIG_SRC=%SCRIPT_DIR%git\config" +set "GIT_CONFIG_DST=%USERPROFILE%\.gitconfig" + +set "GIT_UP2PARTS_SRC=%SCRIPT_DIR%git\config-up2parts" +set "GIT_XDG_DIR=%USERPROFILE%\.config\git" +set "GIT_UP2PARTS_DST=%GIT_XDG_DIR%\config-up2parts" + +set "NPMRC_SRC=%SCRIPT_DIR%npm\npmrc" +set "NPMRC_DST=%USERPROFILE%\.npmrc" + +echo === nvim === +robocopy "%NVIM_SRC%" "%NVIM_DST%" /MIR /NFL /NDL /NJH /NJS >nul +if %ERRORLEVEL% GEQ 8 ( + echo Fehler: nvim-Konfiguration konnte nicht nach "%NVIM_DST%" kopiert werden. + exit /b 1 +) +echo OK: %NVIM_DST% + +echo === git === +copy /Y "%GIT_CONFIG_SRC%" "%GIT_CONFIG_DST%" >nul +if errorlevel 1 ( + echo Fehler: git-Konfiguration konnte nicht nach "%GIT_CONFIG_DST%" kopiert werden. + exit /b 1 +) +echo OK: %GIT_CONFIG_DST% + +if not exist "%GIT_XDG_DIR%" mkdir "%GIT_XDG_DIR%" +copy /Y "%GIT_UP2PARTS_SRC%" "%GIT_UP2PARTS_DST%" >nul +if errorlevel 1 ( + echo Fehler: config-up2parts konnte nicht nach "%GIT_UP2PARTS_DST%" kopiert werden. + exit /b 1 +) +echo OK: %GIT_UP2PARTS_DST% ^(wird per includeIf aus .gitconfig eingebunden^) + +echo === npm === +if exist "%NPMRC_DST%" ( + echo Uebersprungen: %NPMRC_DST% existiert bereits. +) else ( + copy /Y "%NPMRC_SRC%" "%NPMRC_DST%" >nul + echo OK: %NPMRC_DST% +) + +echo. +echo Fertig. Dateien wurden KOPIERT, nicht verlinkt. +echo Nach Aenderungen im Repo dieses Skript erneut ausfuehren. + +endlocal diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md new file mode 100644 index 0000000..7c8e7f3 --- /dev/null +++ b/neovim-windows-setup.md @@ -0,0 +1,92 @@ +# Neovim-Setup unter Windows (nativ) + +Checkliste für die Übernahme der bestehenden `nvim/`-Config aus dem Dotfiles-Repo auf ein natives Windows-System (kein WSL). Repo selbst bleibt unverändert. + +## 1. Grundwerkzeuge installieren + +```powershell +winget install Neovim.Neovim +winget install Git.Git +winget install OpenJS.NodeJS.LTS +winget install Python.Python.3.12 +``` + +Git for Windows bringt Git Bash mit – eine POSIX-Shell, mit der `install.sh` und die `bootstrap/*.sh`-Skripte direkt lauffähig sind (kein Portieren nach PowerShell nötig). + +## 2. Konfiguration einrichten (Windows-nativer Weg) + +Statt `install.sh` samt XDG-Umgebungsvariablen zu verbiegen: `install-win.cmd` im Repo-Root ausführen. Es kopiert (keine Symlinks, keine Admin-Rechte nötig): + +- `nvim/` → `%LOCALAPPDATA%\nvim` +- `git/config` → `%USERPROFILE%\.gitconfig` +- `git/config-up2parts` → `%USERPROFILE%\.config\git\config-up2parts` (Pfad ist im `includeIf` von `git/config` hartkodiert) +- `npm/npmrc` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) + +Nach Änderungen im Repo `install-win.cmd` erneut ausführen, um die Kopien zu aktualisieren. + +## 3. Externe Abhängigkeiten + +`bootstrap/neovim.sh` bricht unter Windows sofort ab (`Nicht unterstütztes Betriebssystem`) – die Pakete müssen manuell installiert werden: + +**Tools** +```powershell +winget install BurntSushi.ripgrep.MSVC +winget install sharkdp.fd +winget install tree-sitter.tree-sitter +``` + +**C-Compiler** (nötig, damit `nvim-treesitter` Parser kompilieren kann): +```powershell +winget install zig.zig +``` +(zig funktioniert als `cc`-Ersatz für Treesitter; alternativ MSVC Build Tools oder MinGW-w64) + +**Make** (für `opt.makeprg = "gmake"`): +```powershell +winget install GnuWin32.Make +``` +Anschließend `windows\bin` (enthält `gmake.cmd`, einen Wrapper der an `make` durchreicht) einmalig zum PATH hinzufügen: +```powershell +setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" +``` + +**Formatter** (conform.nvim): +```powershell +winget install jqlang.jq +npm install -g prettier +pip install ruff +winget install mvdan.shfmt +winget install JohnnyMorganz.StyLua +winget install google.yamlfmt +winget install GnuWin32.Gawk +``` +`xmllint` (für XML/XSD) ist in libxml2 enthalten – z. B. über `winget install GnuWin32.Libxml2` oder in Git for Windows bereits vorhanden. + +**LSP-Server**: +```powershell +npm install -g basedpyright +npm install -g bash-language-server +npm install -g vscode-langservers-extracted +npm install -g @prisma/language-server +npm install -g @vtsls/language-server +winget install LLVM.LLVM # clangd +winget install koalaman.shellcheck +winget install LuaLS.lua-language-server +``` + +## 4. Bekannte Stolpersteine + +- **`g.python3_host_prog`** in `nvim/lua/config/options.lua` ist hart auf einen Unix-Pfad (`$HOME/.local/venv/nvim/bin/python`) gesetzt. Unter Windows existiert weder dieses `HOME`-Layout noch `bin/python` (dort `Scripts\python.exe`). Aktuell nutzt kein installiertes Plugin die Python-Provider-API – daher unkritisch, kann ignoriert werden, solange `:python3`-Funktionen nicht gebraucht werden. (Erwägenswert: `g.loaded_python3_provider = 0` setzen, dann verschwindet das Problem ganz – separat besprochen, noch nicht umgesetzt.) +- **`scripts/sonarqube.sh`** (`:SonarIssues`): reines POSIX-Shellskript. Läuft nur, wenn ein `sh` im PATH liegt (z. B. `sh.exe` aus Git for Windows im PATH verfügbar machen). +- **`bootstrap/neovim-dict.sh`** (deutsche Rechtschreibprüfung): unter Git Bash direkt ausführbar. Lädt die Dateien nach `~/.local/share/nvim/site/spell`; unter nativem Windows-Neovim stattdessen manuell nach `%LOCALAPPDATA%\nvim-data\site\spell` legen. +- **Clipboard** (`unnamedplus`): funktioniert nativ unter Windows-Neovim ohne Zusatztool – anders als unter WSL, wo `win32yank` nötig wäre. +- **`opt.guifont`**: wirkt nur bei GUI-Frontends wie Neovide. Im Windows Terminal muss die Schriftart dort separat eingestellt werden. + +## 5. Verifizieren + +``` +nvim +:checkhealth +``` + +`:checkhealth` zeigt fehlende Provider/Tools direkt an – guter letzter Schritt nach der Installation. diff --git a/windows/bin/gmake.cmd b/windows/bin/gmake.cmd new file mode 100644 index 0000000..89f3a29 --- /dev/null +++ b/windows/bin/gmake.cmd @@ -0,0 +1,11 @@ +@echo off +rem Wrapper, damit opt.makeprg = "gmake" (aus nvim/lua/config/options.lua) +rem unter Windows funktioniert, ohne die bestehende Config anzupassen. +rem Reicht alle Argumente an das im PATH gefundene "make" weiter. +rem +rem Einmalig einrichten: dieses Verzeichnis (windows\bin) zum PATH +rem hinzufuegen, z.B. ueber: +rem setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" + +make %* +exit /b %ERRORLEVEL% -- cgit v1.3