aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--install-win.cmd64
-rw-r--r--neovim-windows-setup.md92
-rw-r--r--windows/bin/gmake.cmd11
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
2setlocal enabledelayedexpansion
3
4rem Windows-natives Pendant zu install.sh.
5rem Kopiert (statt zu verlinken) die relevanten Konfigurationen an ihre
6rem nativen Windows-Zielorte. install.sh bleibt unveraendert; dieses
7rem Skript ist bewusst eigenstaendig, da FreeBSD/macOS und Windows zu
8rem unterschiedlich sind fuer eine gemeinsame Installationsroutine.
9rem
10rem Hinweis: Nach Aenderungen an nvim/ oder git/ dieses Skript erneut
11rem ausfuehren, um die Kopien zu aktualisieren (keine Symlinks).
12
13set "SCRIPT_DIR=%~dp0"
14
15set "NVIM_SRC=%SCRIPT_DIR%nvim"
16set "NVIM_DST=%LOCALAPPDATA%\nvim"
17
18set "GIT_CONFIG_SRC=%SCRIPT_DIR%git\config"
19set "GIT_CONFIG_DST=%USERPROFILE%\.gitconfig"
20
21set "GIT_UP2PARTS_SRC=%SCRIPT_DIR%git\config-up2parts"
22set "GIT_XDG_DIR=%USERPROFILE%\.config\git"
23set "GIT_UP2PARTS_DST=%GIT_XDG_DIR%\config-up2parts"
24
25set "NPMRC_SRC=%SCRIPT_DIR%npm\npmrc"
26set "NPMRC_DST=%USERPROFILE%\.npmrc"
27
28echo === nvim ===
29robocopy "%NVIM_SRC%" "%NVIM_DST%" /MIR /NFL /NDL /NJH /NJS >nul
30if %ERRORLEVEL% GEQ 8 (
31 echo Fehler: nvim-Konfiguration konnte nicht nach "%NVIM_DST%" kopiert werden.
32 exit /b 1
33)
34echo OK: %NVIM_DST%
35
36echo === git ===
37copy /Y "%GIT_CONFIG_SRC%" "%GIT_CONFIG_DST%" >nul
38if errorlevel 1 (
39 echo Fehler: git-Konfiguration konnte nicht nach "%GIT_CONFIG_DST%" kopiert werden.
40 exit /b 1
41)
42echo OK: %GIT_CONFIG_DST%
43
44if not exist "%GIT_XDG_DIR%" mkdir "%GIT_XDG_DIR%"
45copy /Y "%GIT_UP2PARTS_SRC%" "%GIT_UP2PARTS_DST%" >nul
46if errorlevel 1 (
47 echo Fehler: config-up2parts konnte nicht nach "%GIT_UP2PARTS_DST%" kopiert werden.
48 exit /b 1
49)
50echo OK: %GIT_UP2PARTS_DST% ^(wird per includeIf aus .gitconfig eingebunden^)
51
52echo === npm ===
53if 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
60echo.
61echo Fertig. Dateien wurden KOPIERT, nicht verlinkt.
62echo Nach Aenderungen im Repo dieses Skript erneut ausfuehren.
63
64endlocal
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
3Checkliste 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
8winget install Neovim.Neovim
9winget install Git.Git
10winget install OpenJS.NodeJS.LTS
11winget install Python.Python.3.12
12```
13
14Git 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
18Statt `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
25Nach Ä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
33winget install BurntSushi.ripgrep.MSVC
34winget install sharkdp.fd
35winget install tree-sitter.tree-sitter
36```
37
38**C-Compiler** (nötig, damit `nvim-treesitter` Parser kompilieren kann):
39```powershell
40winget 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
46winget install GnuWin32.Make
47```
48Anschließend `windows\bin` (enthält `gmake.cmd`, einen Wrapper der an `make` durchreicht) einmalig zum PATH hinzufügen:
49```powershell
50setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin"
51```
52
53**Formatter** (conform.nvim):
54```powershell
55winget install jqlang.jq
56npm install -g prettier
57pip install ruff
58winget install mvdan.shfmt
59winget install JohnnyMorganz.StyLua
60winget install google.yamlfmt
61winget 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
67npm install -g basedpyright
68npm install -g bash-language-server
69npm install -g vscode-langservers-extracted
70npm install -g @prisma/language-server
71npm install -g @vtsls/language-server
72winget install LLVM.LLVM # clangd
73winget install koalaman.shellcheck
74winget 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```
88nvim
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
2rem Wrapper, damit opt.makeprg = "gmake" (aus nvim/lua/config/options.lua)
3rem unter Windows funktioniert, ohne die bestehende Config anzupassen.
4rem Reicht alle Argumente an das im PATH gefundene "make" weiter.
5rem
6rem Einmalig einrichten: dieses Verzeichnis (windows\bin) zum PATH
7rem hinzufuegen, z.B. ueber:
8rem setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin"
9
10make %*
11exit /b %ERRORLEVEL%