diff options
| -rw-r--r-- | bootstrap/neovim-win.ps1 | 22 | ||||
| -rw-r--r-- | neovim-windows-setup.md | 8 |
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 | |||
| 22 | winget install OpenJS.NodeJS.LTS | 23 | winget 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 | ||
| 52 | Installiert 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). | 53 | Installiert 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 | |||
| 55 | Kein 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. |
