From bb70769ffdc3b93329f364f47c49148658a03d44 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 10:16:22 +0200 Subject: windows: cmd-Style %VAR%-Syntax in PowerShell-Kontexten korrigiert setx PATH "%PATH%;..." funktioniert in PowerShell nicht wie in cmd.exe (kein automatisches Expandieren von %VAR%) und haette zusaetzlich den kompletten Prozess-PATH inkl. System-Anteil dauerhaft in den User-PATH kopiert. Ersetzt durch [Environment]::GetEnvironmentVariable/SetEnviron- mentVariable("PATH", ..., "User") in bootstrap/neovim-win.ps1 und neovim-windows-setup.md. Ausserdem klargestellt, dass windows/bin/gmake.cmd bewusst die einzige Nicht-PowerShell-Datei im Windows-Zweig bleibt. --- neovim-windows-setup.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'neovim-windows-setup.md') diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md index bc27f4a..61c4b08 100644 --- a/neovim-windows-setup.md +++ b/neovim-windows-setup.md @@ -2,7 +2,7 @@ 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. -Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein WSL). Falls die Ausführung durch die Execution Policy blockiert wird, entweder pro Aufruf `powershell -ExecutionPolicy Bypass -File .\skript.ps1` verwenden, oder einmalig `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. +Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein WSL) – mit einer Ausnahme: `windows\bin\gmake.cmd` ist ein trivialer Ein-Zeiler-Wrapper, für den sich eine `.ps1`-Datei nicht lohnt. Falls die Ausführung der `.ps1`-Skripte durch die Execution Policy blockiert wird, entweder pro Aufruf `powershell -ExecutionPolicy Bypass -File .\skript.ps1` verwenden, oder einmalig `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. ## 1. Grundwerkzeuge installieren @@ -41,9 +41,10 @@ Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu a 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). -`windows\bin` (enthält `gmake.cmd`, Wrapper für `opt.makeprg = "gmake"`) danach einmalig zum PATH hinzufügen: +`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): ```powershell -setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" +$userPath = [Environment]::GetEnvironmentVariable("PATH", "User") +[Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\dotfiles\windows\bin", "User") ``` ## 4. Bekannte Stolpersteine -- cgit v1.3