diff options
| -rw-r--r-- | install-win.cmd | 64 | ||||
| -rw-r--r-- | neovim-windows-setup.md | 92 | ||||
| -rw-r--r-- | windows/bin/gmake.cmd | 11 |
3 files changed, 167 insertions, 0 deletions
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 @@ | |||
| 1 | @echo off | ||
| 2 | setlocal enabledelayedexpansion | ||
| 3 | |||
| 4 | rem Windows-natives Pendant zu install.sh. | ||
| 5 | rem Kopiert (statt zu verlinken) die relevanten Konfigurationen an ihre | ||
| 6 | rem nativen Windows-Zielorte. install.sh bleibt unveraendert; dieses | ||
| 7 | rem Skript ist bewusst eigenstaendig, da FreeBSD/macOS und Windows zu | ||
| 8 | rem unterschiedlich sind fuer eine gemeinsame Installationsroutine. | ||
| 9 | rem | ||
| 10 | rem Hinweis: Nach Aenderungen an nvim/ oder git/ dieses Skript erneut | ||
| 11 | rem ausfuehren, um die Kopien zu aktualisieren (keine Symlinks). | ||
| 12 | |||
| 13 | set "SCRIPT_DIR=%~dp0" | ||
| 14 | |||
| 15 | set "NVIM_SRC=%SCRIPT_DIR%nvim" | ||
| 16 | set "NVIM_DST=%LOCALAPPDATA%\nvim" | ||
| 17 | |||
| 18 | set "GIT_CONFIG_SRC=%SCRIPT_DIR%git\config" | ||
| 19 | set "GIT_CONFIG_DST=%USERPROFILE%\.gitconfig" | ||
| 20 | |||
| 21 | set "GIT_UP2PARTS_SRC=%SCRIPT_DIR%git\config-up2parts" | ||
| 22 | set "GIT_XDG_DIR=%USERPROFILE%\.config\git" | ||
| 23 | set "GIT_UP2PARTS_DST=%GIT_XDG_DIR%\config-up2parts" | ||
| 24 | |||
| 25 | set "NPMRC_SRC=%SCRIPT_DIR%npm\npmrc" | ||
| 26 | set "NPMRC_DST=%USERPROFILE%\.npmrc" | ||
| 27 | |||
| 28 | echo === nvim === | ||
| 29 | robocopy "%NVIM_SRC%" "%NVIM_DST%" /MIR /NFL /NDL /NJH /NJS >nul | ||
| 30 | if %ERRORLEVEL% GEQ 8 ( | ||
| 31 | echo Fehler: nvim-Konfiguration konnte nicht nach "%NVIM_DST%" kopiert werden. | ||
| 32 | exit /b 1 | ||
| 33 | ) | ||
| 34 | echo OK: %NVIM_DST% | ||
| 35 | |||
| 36 | echo === git === | ||
| 37 | copy /Y "%GIT_CONFIG_SRC%" "%GIT_CONFIG_DST%" >nul | ||
| 38 | if errorlevel 1 ( | ||
| 39 | echo Fehler: git-Konfiguration konnte nicht nach "%GIT_CONFIG_DST%" kopiert werden. | ||
| 40 | exit /b 1 | ||
| 41 | ) | ||
| 42 | echo OK: %GIT_CONFIG_DST% | ||
| 43 | |||
| 44 | if not exist "%GIT_XDG_DIR%" mkdir "%GIT_XDG_DIR%" | ||
| 45 | copy /Y "%GIT_UP2PARTS_SRC%" "%GIT_UP2PARTS_DST%" >nul | ||
| 46 | if errorlevel 1 ( | ||
| 47 | echo Fehler: config-up2parts konnte nicht nach "%GIT_UP2PARTS_DST%" kopiert werden. | ||
| 48 | exit /b 1 | ||
| 49 | ) | ||
| 50 | echo OK: %GIT_UP2PARTS_DST% ^(wird per includeIf aus .gitconfig eingebunden^) | ||
| 51 | |||
| 52 | echo === npm === | ||
| 53 | if exist "%NPMRC_DST%" ( | ||
| 54 | echo Uebersprungen: %NPMRC_DST% existiert bereits. | ||
| 55 | ) else ( | ||
| 56 | copy /Y "%NPMRC_SRC%" "%NPMRC_DST%" >nul | ||
| 57 | echo OK: %NPMRC_DST% | ||
| 58 | ) | ||
| 59 | |||
| 60 | echo. | ||
| 61 | echo Fertig. Dateien wurden KOPIERT, nicht verlinkt. | ||
| 62 | echo Nach Aenderungen im Repo dieses Skript erneut ausfuehren. | ||
| 63 | |||
| 64 | 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 @@ | |||
| 1 | # Neovim-Setup unter Windows (nativ) | ||
| 2 | |||
| 3 | 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. | ||
| 4 | |||
| 5 | ## 1. Grundwerkzeuge installieren | ||
| 6 | |||
| 7 | ```powershell | ||
| 8 | winget install Neovim.Neovim | ||
| 9 | winget install Git.Git | ||
| 10 | winget install OpenJS.NodeJS.LTS | ||
| 11 | winget install Python.Python.3.12 | ||
| 12 | ``` | ||
| 13 | |||
| 14 | 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). | ||
| 15 | |||
| 16 | ## 2. Konfiguration einrichten (Windows-nativer Weg) | ||
| 17 | |||
| 18 | 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): | ||
| 19 | |||
| 20 | - `nvim/` → `%LOCALAPPDATA%\nvim` | ||
| 21 | - `git/config` → `%USERPROFILE%\.gitconfig` | ||
| 22 | - `git/config-up2parts` → `%USERPROFILE%\.config\git\config-up2parts` (Pfad ist im `includeIf` von `git/config` hartkodiert) | ||
| 23 | - `npm/npmrc` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) | ||
| 24 | |||
| 25 | Nach Änderungen im Repo `install-win.cmd` erneut ausführen, um die Kopien zu aktualisieren. | ||
| 26 | |||
| 27 | ## 3. Externe Abhängigkeiten | ||
| 28 | |||
| 29 | `bootstrap/neovim.sh` bricht unter Windows sofort ab (`Nicht unterstütztes Betriebssystem`) – die Pakete müssen manuell installiert werden: | ||
| 30 | |||
| 31 | **Tools** | ||
| 32 | ```powershell | ||
| 33 | winget install BurntSushi.ripgrep.MSVC | ||
| 34 | winget install sharkdp.fd | ||
| 35 | winget install tree-sitter.tree-sitter | ||
| 36 | ``` | ||
| 37 | |||
| 38 | **C-Compiler** (nötig, damit `nvim-treesitter` Parser kompilieren kann): | ||
| 39 | ```powershell | ||
| 40 | winget install zig.zig | ||
| 41 | ``` | ||
| 42 | (zig funktioniert als `cc`-Ersatz für Treesitter; alternativ MSVC Build Tools oder MinGW-w64) | ||
| 43 | |||
| 44 | **Make** (für `opt.makeprg = "gmake"`): | ||
| 45 | ```powershell | ||
| 46 | winget install GnuWin32.Make | ||
| 47 | ``` | ||
| 48 | Anschließend `windows\bin` (enthält `gmake.cmd`, einen Wrapper der an `make` durchreicht) einmalig zum PATH hinzufügen: | ||
| 49 | ```powershell | ||
| 50 | setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" | ||
| 51 | ``` | ||
| 52 | |||
| 53 | **Formatter** (conform.nvim): | ||
| 54 | ```powershell | ||
| 55 | winget install jqlang.jq | ||
| 56 | npm install -g prettier | ||
| 57 | pip install ruff | ||
| 58 | winget install mvdan.shfmt | ||
| 59 | winget install JohnnyMorganz.StyLua | ||
| 60 | winget install google.yamlfmt | ||
| 61 | winget install GnuWin32.Gawk | ||
| 62 | ``` | ||
| 63 | `xmllint` (für XML/XSD) ist in libxml2 enthalten – z. B. über `winget install GnuWin32.Libxml2` oder in Git for Windows bereits vorhanden. | ||
| 64 | |||
| 65 | **LSP-Server**: | ||
| 66 | ```powershell | ||
| 67 | npm install -g basedpyright | ||
| 68 | npm install -g bash-language-server | ||
| 69 | npm install -g vscode-langservers-extracted | ||
| 70 | npm install -g @prisma/language-server | ||
| 71 | npm install -g @vtsls/language-server | ||
| 72 | winget install LLVM.LLVM # clangd | ||
| 73 | winget install koalaman.shellcheck | ||
| 74 | winget install LuaLS.lua-language-server | ||
| 75 | ``` | ||
| 76 | |||
| 77 | ## 4. Bekannte Stolpersteine | ||
| 78 | |||
| 79 | - **`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.) | ||
| 80 | - **`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). | ||
| 81 | - **`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. | ||
| 82 | - **Clipboard** (`unnamedplus`): funktioniert nativ unter Windows-Neovim ohne Zusatztool – anders als unter WSL, wo `win32yank` nötig wäre. | ||
| 83 | - **`opt.guifont`**: wirkt nur bei GUI-Frontends wie Neovide. Im Windows Terminal muss die Schriftart dort separat eingestellt werden. | ||
| 84 | |||
| 85 | ## 5. Verifizieren | ||
| 86 | |||
| 87 | ``` | ||
| 88 | nvim | ||
| 89 | :checkhealth | ||
| 90 | ``` | ||
| 91 | |||
| 92 | `: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 @@ | |||
| 1 | @echo off | ||
| 2 | rem Wrapper, damit opt.makeprg = "gmake" (aus nvim/lua/config/options.lua) | ||
| 3 | rem unter Windows funktioniert, ohne die bestehende Config anzupassen. | ||
| 4 | rem Reicht alle Argumente an das im PATH gefundene "make" weiter. | ||
| 5 | rem | ||
| 6 | rem Einmalig einrichten: dieses Verzeichnis (windows\bin) zum PATH | ||
| 7 | rem hinzufuegen, z.B. ueber: | ||
| 8 | rem setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" | ||
| 9 | |||
| 10 | make %* | ||
| 11 | exit /b %ERRORLEVEL% | ||
