diff options
Diffstat (limited to 'bootstrap-win')
| -rw-r--r-- | bootstrap-win/neovim-dict.ps1 | 6 | ||||
| -rw-r--r-- | bootstrap-win/neovim.ps1 | 75 |
2 files changed, 13 insertions, 68 deletions
diff --git a/bootstrap-win/neovim-dict.ps1 b/bootstrap-win/neovim-dict.ps1 index 7909ffa..5aeb117 100644 --- a/bootstrap-win/neovim-dict.ps1 +++ b/bootstrap-win/neovim-dict.ps1 | |||
| @@ -2,13 +2,9 @@ | |||
| 2 | <# | 2 | <# |
| 3 | Windows-natives Pendant zu bootstrap/neovim-dict.sh. | 3 | Windows-natives Pendant zu bootstrap/neovim-dict.sh. |
| 4 | Laedt die deutschen Rechtschreib-Woerterbuecher fuer Neovim herunter. | 4 | Laedt die deutschen Rechtschreib-Woerterbuecher fuer Neovim herunter. |
| 5 | bootstrap/neovim-dict.sh bleibt unveraendert. | ||
| 6 | 5 | ||
| 7 | Aufruf: | 6 | Aufruf: |
| 8 | .\bootstrap-win\neovim-dict.ps1 | 7 | .\bootstrap-win\neovim-dict.ps1 |
| 9 | |||
| 10 | Falls die Ausfuehrung durch die Execution Policy blockiert wird: | ||
| 11 | powershell -ExecutionPolicy Bypass -File .\bootstrap-win\neovim-dict.ps1 | ||
| 12 | #> | 8 | #> |
| 13 | 9 | ||
| 14 | $ErrorActionPreference = "Stop" | 10 | $ErrorActionPreference = "Stop" |
| @@ -25,8 +21,6 @@ function Write-SkipMsg($msg) { | |||
| 25 | Write-Host "- $msg bereits vorhanden" -ForegroundColor DarkGray | 21 | Write-Host "- $msg bereits vorhanden" -ForegroundColor DarkGray |
| 26 | } | 22 | } |
| 27 | 23 | ||
| 28 | # Nativer Windows-Datenpfad von Neovim (kein XDG_DATA_HOME gesetzt): | ||
| 29 | # $env:LOCALAPPDATA\nvim-data\site\spell | ||
| 30 | $SpellDir = Join-Path $env:LOCALAPPDATA "nvim-data\site\spell" | 24 | $SpellDir = Join-Path $env:LOCALAPPDATA "nvim-data\site\spell" |
| 31 | 25 | ||
| 32 | $Urls = @( | 26 | $Urls = @( |
diff --git a/bootstrap-win/neovim.ps1 b/bootstrap-win/neovim.ps1 index 77abf83..32e2db7 100644 --- a/bootstrap-win/neovim.ps1 +++ b/bootstrap-win/neovim.ps1 | |||
| @@ -1,29 +1,14 @@ | |||
| 1 | #Requires -Version 5.1 | 1 | #Requires -Version 5.1 |
| 2 | <# | 2 | <# |
| 3 | Windows-natives Pendant zu bootstrap/neovim.sh (macOS/FreeBSD). | 3 | Windows-natives Pendant zu bootstrap/neovim.sh - nutzt winget/npm statt |
| 4 | bootstrap/neovim.sh bleibt unveraendert - dieses Skript ist bewusst | 4 | brew/pkg, daher eigenstaendiges Skript ohne Git-Bash-/WSL-Abhaengigkeit. |
| 5 | eigenstaendig, da sich die Paketquellen (winget/npm statt brew/pkg) und | ||
| 6 | das Fehlerverhalten zu stark unterscheiden fuer ein gemeinsames Skript. | ||
| 7 | 5 | ||
| 8 | Nutzt ausschliesslich native Windows-Werkzeuge (winget, npm, pwsh/ | 6 | Aufruf (keine Admin-Rechte noetig): |
| 9 | powershell.exe) - keine Git-Bash- oder WSL-Abhaengigkeit. | ||
| 10 | |||
| 11 | Aufruf (PowerShell, keine Admin-Rechte noetig): | ||
| 12 | .\bootstrap-win\neovim.ps1 | 7 | .\bootstrap-win\neovim.ps1 |
| 13 | 8 | ||
| 14 | Hinweis: yamlfmt, gawk und xmllint/libxml2 sind bewusst NICHT enthalten - | 9 | yamlfmt, gawk und xmllint sind bewusst nicht enthalten (siehe |
| 15 | im Praxistest (24.07.2026) bestaetigt, dass es dafuer keine winget-Pakete | 10 | neovim-windows-setup.md). Fehlgeschlagene Installationen werden als |
| 16 | unter den urspruenglich vermuteten IDs gibt. Siehe Install-Formatters und | 11 | Warnung gemeldet, das Skript bricht nicht ab. |
| 17 | neovim-windows-setup.md fuer manuelle Alternativen. mvdan.shfmt und | ||
| 18 | astral-sh.ruff liefen im Test erfolgreich durch. | ||
| 19 | |||
| 20 | Schlaegt eine winget-Installation trotzdem fehl, meldet das Skript das | ||
| 21 | als Warnung (bricht nicht ab) und zeigt die letzten Zeilen der winget- | ||
| 22 | Ausgabe zur Fehlersuche an. | ||
| 23 | |||
| 24 | C-Compiler fuer nvim-treesitter: kein winget-Paket enthalten, da MSVC auf | ||
| 25 | den Zielsystemen bereits vorhanden ist. Neovim muss dafuer aus einer | ||
| 26 | "Developer PowerShell for VS" gestartet werden (siehe Install-Tools). | ||
| 27 | #> | 12 | #> |
| 28 | 13 | ||
| 29 | $ErrorActionPreference = "Stop" | 14 | $ErrorActionPreference = "Stop" |
| @@ -51,10 +36,8 @@ function Test-CommandExists([string]$Name) { | |||
| 51 | } | 36 | } |
| 52 | 37 | ||
| 53 | function Find-BinaryDirectory([string]$Binary) { | 38 | function Find-BinaryDirectory([string]$Binary) { |
| 54 | # Sucht nach "<Binary>.exe" unter den ueblichen Installationswurzeln. | 39 | # Deckt den Fall ab, dass winget (v.a. --silent) korrekt installiert, |
| 55 | # Deckt den Fall ab, dass ein winget-Paket (v.a. im --silent-Modus) | 40 | # aber die PATH-Registrierung ausgelassen hat (beobachtet bei LLVM.LLVM). |
| 56 | # die PATH-Registrierung ausgelassen hat, obwohl es korrekt installiert | ||
| 57 | # wurde - beobachtet bei LLVM.LLVM/clangd. | ||
| 58 | $searchRoots = @( | 41 | $searchRoots = @( |
| 59 | $env:ProgramFiles, | 42 | $env:ProgramFiles, |
| 60 | ${env:ProgramFiles(x86)}, | 43 | ${env:ProgramFiles(x86)}, |
| @@ -98,12 +81,7 @@ function Install-WingetPackage([string]$Binary, [string]$Id) { | |||
| 98 | $lastLine = ($output | Select-Object -Last 3) -join " / " | 81 | $lastLine = ($output | Select-Object -Last 3) -join " / " |
| 99 | 82 | ||
| 100 | if ($text -match "bereits ein vorhandenes Paket|already installed|No applicable update") { | 83 | if ($text -match "bereits ein vorhandenes Paket|already installed|No applicable update") { |
| 101 | # Paket ist laut winget installiert, aber die Binary steht trotzdem | 84 | # Installiert, aber nicht im PATH - Binary suchen und PATH ergaenzen. |
| 102 | # nicht im PATH - z.B. weil der Installer (im --silent-Modus) die | ||
| 103 | # PATH-Registrierung uebersprungen hat. winget search hilft hier | ||
| 104 | # nicht weiter, da das Paket ja gefunden wurde - stattdessen selbst | ||
| 105 | # danach suchen und den User-PATH ergaenzen (dauerhaft + fuer diese | ||
| 106 | # Sitzung). | ||
| 107 | $dir = Find-BinaryDirectory $Binary | 85 | $dir = Find-BinaryDirectory $Binary |
| 108 | 86 | ||
| 109 | if ($dir) { | 87 | if ($dir) { |
| @@ -155,11 +133,7 @@ function Test-Prerequisites { | |||
| 155 | } | 133 | } |
| 156 | 134 | ||
| 157 | function Update-SessionPath { | 135 | function Update-SessionPath { |
| 158 | # winget/npm-Installer tragen PATH-Aenderungen in die Registry (User- | 136 | # Registry-PATH-Aenderungen durch winget/npm wirken erst nach diesem Refresh. |
| 159 | # und/oder Machine-Scope) ein, aber der laufende PowerShell-Prozess | ||
| 160 | # bekommt das nicht automatisch mit. Ohne diesen Refresh wuerde z.B. | ||
| 161 | # "npm" gleich im Anschluss an die Node-Installation als "nicht | ||
| 162 | # gefunden" gemeldet, obwohl es gerade erst installiert wurde. | ||
| 163 | $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") | 137 | $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") |
| 164 | $user = [Environment]::GetEnvironmentVariable("PATH", "User") | 138 | $user = [Environment]::GetEnvironmentVariable("PATH", "User") |
| 165 | $env:PATH = "$machine;$user" | 139 | $env:PATH = "$machine;$user" |
| @@ -178,14 +152,7 @@ function Install-Formatters { | |||
| 178 | Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt" | 152 | Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt" |
| 179 | Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua" | 153 | Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua" |
| 180 | 154 | ||
| 181 | # yamlfmt, gawk, xmllint: im Praxistest bestaetigt, dass es unter diesen | 155 | # yamlfmt, gawk, xmllint: kein winget-Paket gefunden, siehe neovim-windows-setup.md. |
| 182 | # IDs kein winget-Paket gibt ("Es wurde kein Paket gefunden, das den | ||
| 183 | # Eingabekriterien entspricht"). Kein verifizierter Ersatz gefunden, | ||
| 184 | # deshalb bewusst nicht automatisiert - siehe neovim-windows-setup.md | ||
| 185 | # fuer manuelle Alternativen. conform.nvim faellt bei fehlendem | ||
| 186 | # Formatter fuer die jeweilige Dateiart einfach auf LSP-Formatierung | ||
| 187 | # zurueck (default_format_opts.lsp_format = "fallback"), betrifft also | ||
| 188 | # nur awk/xml/xsd/yaml-Dateien. | ||
| 189 | } | 156 | } |
| 190 | 157 | ||
| 191 | function Install-Tools { | 158 | function Install-Tools { |
| @@ -193,24 +160,8 @@ function Install-Tools { | |||
| 193 | Install-WingetPackage -Binary "fd" -Id "sharkdp.fd" | 160 | Install-WingetPackage -Binary "fd" -Id "sharkdp.fd" |
| 194 | Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli" | 161 | Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli" |
| 195 | 162 | ||
| 196 | # C-Compiler fuer nvim-treesitter: kein winget-Paket noetig, MSVC (cl.exe) | 163 | # MSVC (cl.exe) ist bereits vorhanden, kein winget-Paket noetig - Neovim |
| 197 | # ist auf diesen Systemen bereits vorhanden. nvim-treesitter findet cl.exe | 164 | # dafuer aber aus einer "Developer PowerShell for VS" starten. |
| 198 | # automatisch, ABER nur wenn INCLUDE/LIB gesetzt sind - das passiert nicht | ||
| 199 | # in einer normalen PowerShell, sondern nur in einer "Developer PowerShell | ||
| 200 | # for VS" bzw. "x64 Native Tools Command Prompt". Neovim also immer aus | ||
| 201 | # so einer Shell heraus starten, sonst schlaegt die Parser-Kompilierung | ||
| 202 | # mit "cannot find <header>.h" o.ae. fehl, obwohl cl.exe selbst gefunden wird. | ||
| 203 | |||
| 204 | # opt.makeprg = "gmake" (nvim/lua/config/options.lua) - Alias liegt in | ||
| 205 | # windows/bin/gmake.cmd, reicht an "make" durch. Einmalig windows\bin | ||
| 206 | # zum PATH hinzufuegen (PowerShell, User-Scope, nicht setx mit %PATH% | ||
| 207 | # verwenden - das wuerde den gesamten Prozess-PATH inkl. System-Anteil | ||
| 208 | # dauerhaft in den User-PATH kopieren): | ||
| 209 | # $userPath = [Environment]::GetEnvironmentVariable("PATH", "User") | ||
| 210 | # [Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\dotfiles\windows\bin", "User") | ||
| 211 | # GnuWin32.Make ist im Praxistest fehlgeschlagen (Paket 2006er-Stand, | ||
| 212 | # unklar ob im winget-Repo ueberhaupt noch gepflegt). ezwinports.make | ||
| 213 | # ist ein aktiver gepflegter GNU-Make-Port fuer Windows. | ||
| 214 | Install-WingetPackage -Binary "make" -Id "ezwinports.make" | 165 | Install-WingetPackage -Binary "make" -Id "ezwinports.make" |
| 215 | } | 166 | } |
| 216 | 167 | ||
