aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bootstrap/neovim-win.ps122
-rw-r--r--neovim-windows-setup.md8
2 files changed, 21 insertions, 9 deletions
diff --git a/bootstrap/neovim-win.ps1 b/bootstrap/neovim-win.ps1
index 1ea3b3c..8af6140 100644
--- a/bootstrap/neovim-win.ps1
+++ b/bootstrap/neovim-win.ps1
@@ -12,11 +12,14 @@
12 .\bootstrap\neovim-win.ps1 12 .\bootstrap\neovim-win.ps1
13 13
14 Hinweis: Einzelne winget-Paket-IDs (v.a. GnuWin32.Gawk, GnuWin32.Libxml2, 14 Hinweis: Einzelne winget-Paket-IDs (v.a. GnuWin32.Gawk, GnuWin32.Libxml2,
15 google.yamlfmt, mvdan.shfmt, astral-sh.ruff, zig.zig) konnten in dieser 15 google.yamlfmt, mvdan.shfmt, astral-sh.ruff) konnten in dieser Session
16 Session nicht gegen eine aktuelle winget-Quelle verifiziert werden. 16 nicht gegen eine aktuelle winget-Quelle verifiziert werden. Schlaegt eine
17 Schlaegt eine Installation fehl, meldet das Skript das als Warnung 17 Installation fehl, meldet das Skript das als Warnung (bricht nicht ab)
18 (bricht nicht ab) und nennt den Befehl zum manuellen Nachschlagen 18 und nennt den Befehl zum manuellen Nachschlagen ("winget search <name>").
19 ("winget search <name>"). 19
20 C-Compiler fuer nvim-treesitter: kein winget-Paket enthalten, da MSVC auf
21 den Zielsystemen bereits vorhanden ist. Neovim muss dafuer aus einer
22 "Developer PowerShell for VS" gestartet werden (siehe Install-Tools).
20#> 23#>
21 24
22$ErrorActionPreference = "Stop" 25$ErrorActionPreference = "Stop"
@@ -122,8 +125,13 @@ function Install-Tools {
122 Install-WingetPackage -Binary "fd" -Id "sharkdp.fd" 125 Install-WingetPackage -Binary "fd" -Id "sharkdp.fd"
123 Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli" 126 Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli"
124 127
125 # C-Compiler, damit nvim-treesitter Parser kompilieren kann. 128 # C-Compiler fuer nvim-treesitter: kein winget-Paket noetig, MSVC (cl.exe)
126 Install-WingetPackage -Binary "zig" -Id "zig.zig" 129 # ist auf diesen Systemen bereits vorhanden. nvim-treesitter findet cl.exe
130 # automatisch, ABER nur wenn INCLUDE/LIB gesetzt sind - das passiert nicht
131 # in einer normalen PowerShell, sondern nur in einer "Developer PowerShell
132 # for VS" bzw. "x64 Native Tools Command Prompt". Neovim also immer aus
133 # so einer Shell heraus starten, sonst schlaegt die Parser-Kompilierung
134 # mit "cannot find <header>.h" o.ae. fehl, obwohl cl.exe selbst gefunden wird.
127 135
128 # opt.makeprg = "gmake" (nvim/lua/config/options.lua) - Alias liegt in 136 # opt.makeprg = "gmake" (nvim/lua/config/options.lua) - Alias liegt in
129 # windows/bin/gmake.cmd, reicht an "make" durch. Einmalig windows\bin 137 # windows/bin/gmake.cmd, reicht an "make" durch. Einmalig windows\bin
diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md
index 935bb68..4faecd8 100644
--- a/neovim-windows-setup.md
+++ b/neovim-windows-setup.md
@@ -13,6 +13,7 @@ Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein
13- **Nach jedem Skript-Lauf ein neues Terminal öffnen**, bevor `nvim` das erste Mal gestartet wird. PATH-Änderungen (durch winget/npm-Installer oder `install-win.ps1`) landen in der Registry, aber die aktuell offene Shell bekommt das nicht automatisch mit. 13- **Nach jedem Skript-Lauf ein neues Terminal öffnen**, bevor `nvim` das erste Mal gestartet wird. PATH-Änderungen (durch winget/npm-Installer oder `install-win.ps1`) landen in der Registry, aber die aktuell offene Shell bekommt das nicht automatisch mit.
14- **PATH-Registrierung stichprobenartig prüfen**, vor allem bei den GnuWin32-Paketen (`jq`, `gawk`, `make`, `libxml2`/`xmllint`) – ältere/portable winget-Pakete tragen sich nicht immer automatisch in den PATH ein. Nach einem neuen Terminal kurz `Get-Command jq, gawk, make, xmllint` aufrufen; fehlt eins, dessen Installationsordner manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`). 14- **PATH-Registrierung stichprobenartig prüfen**, vor allem bei den GnuWin32-Paketen (`jq`, `gawk`, `make`, `libxml2`/`xmllint`) – ältere/portable winget-Pakete tragen sich nicht immer automatisch in den PATH ein. Nach einem neuen Terminal kurz `Get-Command jq, gawk, make, xmllint` aufrufen; fehlt eins, dessen Installationsordner manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`).
15- **Reihenfolge**: `install-win.ps1` und `bootstrap/neovim-win.ps1` sind unabhängig voneinander, `bootstrap/neovim-dict-win.ps1` ebenso. Empfehlenswert: erst Neovim/Git/Node (Abschnitt 1) installieren, dann beide Bootstrap-Skripte laufen lassen, dann neues Terminal öffnen, dann `nvim` starten (lädt beim ersten Start automatisch alle Lua-Plugins via `lazy.nvim` – Internetverbindung nötig). 15- **Reihenfolge**: `install-win.ps1` und `bootstrap/neovim-win.ps1` sind unabhängig voneinander, `bootstrap/neovim-dict-win.ps1` ebenso. Empfehlenswert: erst Neovim/Git/Node (Abschnitt 1) installieren, dann beide Bootstrap-Skripte laufen lassen, dann neues Terminal öffnen, dann `nvim` starten (lädt beim ersten Start automatisch alle Lua-Plugins via `lazy.nvim` – Internetverbindung nötig).
16- **Neovim immer aus einer "Developer PowerShell for VS" starten** (Startmenü-Eintrag, den Visual Studio/die Build Tools mitbringen), nicht aus normalem Windows Terminal/PowerShell. `cl.exe` (MSVC) braucht die `INCLUDE`/`LIB`-Umgebungsvariablen aus `vcvarsall.bat`, die nur in dieser Developer-Shell gesetzt sind – siehe Abschnitt 4.
16 17
17## 1. Grundwerkzeuge installieren 18## 1. Grundwerkzeuge installieren
18 19
@@ -22,7 +23,7 @@ winget install Git.Git
22winget install OpenJS.NodeJS.LTS 23winget install OpenJS.NodeJS.LTS
23``` 24```
24 25
25(Kein Python nötig – der Python-Provider ist in `options.lua` deaktiviert, siehe Abschnitt 4.) 26(Kein Python nötig – der Python-Provider ist in `options.lua` deaktiviert. Auch kein separater C-Compiler nötig – MSVC ist auf den Zielsystemen bereits vorhanden, siehe Abschnitt 3/4.)
26 27
27## 2. Konfiguration einrichten (Windows-nativer Weg) 28## 2. Konfiguration einrichten (Windows-nativer Weg)
28 29
@@ -49,7 +50,9 @@ Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu a
49.\bootstrap\neovim-win.ps1 50.\bootstrap\neovim-win.ps1
50``` 51```
51 52
52Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua, yamlfmt, gawk, xmllint), Tools (ripgrep, fd, tree-sitter-cli, zig als C-Compiler für Treesitter, make) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Einzelne Pakete, die fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen – Details siehe Kopfkommentar im Skript (einige winget-IDs, v. a. GnuWin32.Gawk/Libxml2, google.yamlfmt, mvdan.shfmt, astral-sh.ruff, zig.zig, sind ungeprüft). 53Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua, yamlfmt, gawk, xmllint), Tools (ripgrep, fd, tree-sitter-cli, make) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Einzelne Pakete, die fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen – Details siehe Kopfkommentar im Skript (einige winget-IDs, v. a. GnuWin32.Gawk/Libxml2, google.yamlfmt, mvdan.shfmt, astral-sh.ruff, sind ungeprüft).
54
55Kein C-Compiler-Paket enthalten: MSVC ist auf den Zielsystemen bereits vorhanden, `nvim-treesitter` nutzt `cl.exe`. Dafür muss Neovim aber aus einer "Developer PowerShell for VS" gestartet werden (siehe Abschnitt 4).
53 56
54`windows\bin` (enthält `gmake.cmd`, Wrapper für `opt.makeprg = "gmake"`) danach einmalig zum PATH hinzufügen (PowerShell, User-Scope – nicht `setx PATH "%PATH%;..."` verwenden, das würde den kompletten Prozess-PATH inkl. System-Anteil dauerhaft in den User-PATH kopieren): 57`windows\bin` (enthält `gmake.cmd`, Wrapper für `opt.makeprg = "gmake"`) danach einmalig zum PATH hinzufügen (PowerShell, User-Scope – nicht `setx PATH "%PATH%;..."` verwenden, das würde den kompletten Prozess-PATH inkl. System-Anteil dauerhaft in den User-PATH kopieren):
55```powershell 58```powershell
@@ -59,6 +62,7 @@ $userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
59 62
60## 4. Bekannte Stolpersteine 63## 4. Bekannte Stolpersteine
61 64
65- **C-Compiler für `nvim-treesitter` (MSVC)**: `cl.exe` findet `nvim-treesitter` automatisch, aber nur wenn `INCLUDE`/`LIB` gesetzt sind – das passiert ausschließlich in einer "Developer PowerShell for VS" bzw. "x64 Native Tools Command Prompt", nicht in einer normalen PowerShell/Windows Terminal-Sitzung. Ohne das schlägt die Parser-Kompilierung mit einer Meldung wie "cannot find `<header>`.h" fehl, obwohl `cl.exe` selbst gefunden wird. Neovim also immer aus dieser Developer-Shell heraus starten.
62- **Rechtschreibprüfung (Deutsch)**: `bootstrap/neovim-dict-win.ps1` ausführen – lädt `de.utf-8.spl`/`.sug` nach `%LOCALAPPDATA%\nvim-data\site\spell` (nativer Windows-Datenpfad von Neovim). 66- **Rechtschreibprüfung (Deutsch)**: `bootstrap/neovim-dict-win.ps1` ausführen – lädt `de.utf-8.spl`/`.sug` nach `%LOCALAPPDATA%\nvim-data\site\spell` (nativer Windows-Datenpfad von Neovim).
63- **`scripts/sonarqube.sh`** (`:SonarIssues`): reines POSIX-Shellskript, kein Windows-Pendant vorhanden. Läuft nur, wenn ein `sh` im PATH liegt (z. B. `sh.exe` aus Git for Windows im PATH verfügbar machen); ansonsten `:SonarIssues` auf Windows nicht nutzen. 67- **`scripts/sonarqube.sh`** (`:SonarIssues`): reines POSIX-Shellskript, kein Windows-Pendant vorhanden. Läuft nur, wenn ein `sh` im PATH liegt (z. B. `sh.exe` aus Git for Windows im PATH verfügbar machen); ansonsten `:SonarIssues` auf Windows nicht nutzen.
64- **Clipboard** (`unnamedplus`): funktioniert nativ unter Windows-Neovim ohne Zusatztool – anders als unter WSL, wo `win32yank` nötig wäre. 68- **Clipboard** (`unnamedplus`): funktioniert nativ unter Windows-Neovim ohne Zusatztool – anders als unter WSL, wo `win32yank` nötig wäre.