diff options
| -rwxr-xr-x | bootstrap/neovim.sh | 7 | ||||
| -rw-r--r-- | neovim-windows-setup.md | 4 | ||||
| -rw-r--r-- | nvim/lua/plugins/lint.lua | 3 |
3 files changed, 12 insertions, 2 deletions
diff --git a/bootstrap/neovim.sh b/bootstrap/neovim.sh index 1508401..4c91075 100755 --- a/bootstrap/neovim.sh +++ b/bootstrap/neovim.sh | |||
| @@ -172,13 +172,20 @@ install_lsp() { | |||
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | install_analysis() { | 174 | install_analysis() { |
| 175 | # yamllint wird von nvim-lint fuer YAML-Dateien aufgerufen. Unter FreeBSD ist | ||
| 176 | # der Paketname python-versioniert (py311-yamllint), deshalb der Origin-Pfad. | ||
| 177 | # | ||
| 175 | # sonar-scanner wird direkt von nvim/lua/config/usercmds.lua (:SonarScan) | 178 | # sonar-scanner wird direkt von nvim/lua/config/usercmds.lua (:SonarScan) |
| 176 | # und nvim/scripts/sonarqube.sh (:SonarIssues) genutzt. Nur beruflich | 179 | # und nvim/scripts/sonarqube.sh (:SonarIssues) genutzt. Nur beruflich |
| 177 | # unter macOS im Einsatz, deshalb kein FreeBSD-Zweig. | 180 | # unter macOS im Einsatz, deshalb kein FreeBSD-Zweig. |
| 178 | case "$OS" in | 181 | case "$OS" in |
| 179 | Darwin) | 182 | Darwin) |
| 183 | install_pkg yamllint yamllint | ||
| 180 | install_pkg sonar-scanner sonar-scanner | 184 | install_pkg sonar-scanner sonar-scanner |
| 181 | ;; | 185 | ;; |
| 186 | FreeBSD) | ||
| 187 | install_pkg yamllint devel/py-yamllint | ||
| 188 | ;; | ||
| 182 | esac | 189 | esac |
| 183 | } | 190 | } |
| 184 | 191 | ||
diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md index 801beef..72f2b25 100644 --- a/neovim-windows-setup.md +++ b/neovim-windows-setup.md | |||
| @@ -9,7 +9,7 @@ Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein | |||
| 9 | - **`winget` selbst muss vorhanden sein** ("App Installer" aus dem Microsoft Store) – `bootstrap-win/neovim.ps1` prüft das und bricht mit klarer Meldung ab, kann `winget` aber nicht selbst nachinstallieren. | 9 | - **`winget` selbst muss vorhanden sein** ("App Installer" aus dem Microsoft Store) – `bootstrap-win/neovim.ps1` prüft das und bricht mit klarer Meldung ab, kann `winget` aber nicht selbst nachinstallieren. |
| 10 | - **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. | 10 | - **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. |
| 11 | - **PATH-Registrierung stichprobenartig prüfen** – manche winget-Pakete tragen sich nicht automatisch in den PATH ein (im Praxistest z. B. `LLVM.LLVM`: bereits installiert, aber `clangd` nicht im PATH, vermutlich weil der `--silent`-Installer die PATH-Registrierung überspringt). Nach einem neuen Terminal kurz `Get-Command clangd, jq, make` aufrufen; fehlt eins, dessen Installationsordner (bei LLVM z. B. `C:\Program Files\LLVM\bin`) manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`). | 11 | - **PATH-Registrierung stichprobenartig prüfen** – manche winget-Pakete tragen sich nicht automatisch in den PATH ein (im Praxistest z. B. `LLVM.LLVM`: bereits installiert, aber `clangd` nicht im PATH, vermutlich weil der `--silent`-Installer die PATH-Registrierung überspringt). Nach einem neuen Terminal kurz `Get-Command clangd, jq, make` aufrufen; fehlt eins, dessen Installationsordner (bei LLVM z. B. `C:\Program Files\LLVM\bin`) manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`). |
| 12 | - **yamlfmt, gawk, xmllint (libxml2), djlint manuell installieren, falls benötigt** – im Praxistest bestätigt, dass es dafür keine winget-Pakete gibt ("Es wurde kein Paket gefunden, das den Eingabekriterien entspricht"), deshalb absichtlich nicht in `bootstrap-win/neovim.ps1` enthalten. Betrifft die Formatierung von awk-, xml/xsd-, yaml- und jinja-Dateien (`conform.nvim` fällt sonst auf LSP-Formatierung zurück, für `jinja` gibt es aktuell keinen LSP-Fallback). Bekannte Alternativen: yamlfmt via `go install github.com/google/yamlfmt/cmd/yamlfmt@latest` (falls Go installiert) oder Binary von den GitHub-Releases; djlint ist ein reines Python-Paket, daher `pip install djlint` bzw. `pipx install djlint` (Python muss dafür separat installiert sein, siehe Abschnitt 1); für gawk/xmllint keine verifizierte Windows-native Quelle gefunden, ggf. `winget search gawk` / `winget search libxml2` selbst prüfen. | 12 | - **yamlfmt, gawk, xmllint (libxml2), djlint, yamllint manuell installieren, falls benötigt** – im Praxistest bestätigt, dass es dafür keine winget-Pakete gibt ("Es wurde kein Paket gefunden, das den Eingabekriterien entspricht"), deshalb absichtlich nicht in `bootstrap-win/neovim.ps1` enthalten. Betrifft die Formatierung von awk-, xml/xsd-, yaml- und jinja-Dateien (`conform.nvim` fällt sonst auf LSP-Formatierung zurück, für `jinja` gibt es aktuell keinen LSP-Fallback). Bekannte Alternativen: yamlfmt via `go install github.com/google/yamlfmt/cmd/yamlfmt@latest` (falls Go installiert) oder Binary von den GitHub-Releases; djlint und yamllint sind reine Python-Pakete, daher `pip install djlint yamllint` bzw. `pipx install djlint` und `pipx install yamllint` (Python muss dafür separat installiert sein, siehe Abschnitt 1) – ohne yamllint linted `nvim-lint` YAML-Dateien unter Windows einfach nicht; für gawk/xmllint keine verifizierte Windows-native Quelle gefunden, ggf. `winget search gawk` / `winget search libxml2` selbst prüfen. |
| 13 | - **Reihenfolge**: `install-win.ps1`, `bootstrap-win/git.ps1`, `bootstrap-win/neovim.ps1` und `bootstrap-win/neovim-dict.ps1` sind unabhängig voneinander. Empfehlenswert: erst Neovim/Node (Abschnitt 1) installieren, dann alle 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). | 13 | - **Reihenfolge**: `install-win.ps1`, `bootstrap-win/git.ps1`, `bootstrap-win/neovim.ps1` und `bootstrap-win/neovim-dict.ps1` sind unabhängig voneinander. Empfehlenswert: erst Neovim/Node (Abschnitt 1) installieren, dann alle 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). |
| 14 | - **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. | 14 | - **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. |
| 15 | 15 | ||
| @@ -56,7 +56,7 @@ Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu a | |||
| 56 | .\bootstrap-win\neovim.ps1 | 56 | .\bootstrap-win\neovim.ps1 |
| 57 | ``` | 57 | ``` |
| 58 | 58 | ||
| 59 | Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua), Tools (ripgrep, fd, tree-sitter-cli, make über `ezwinports.make`) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Im Praxistest (24.07.2026) erfolgreich; yamlfmt/gawk/xmllint/djlint bewusst nicht enthalten (siehe Abschnitt 0). Einzelne Pakete, die trotzdem fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen, inklusive der letzten Zeilen der winget-Fehlermeldung. | 59 | Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua), Tools (ripgrep, fd, tree-sitter-cli, make über `ezwinports.make`) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Im Praxistest (24.07.2026) erfolgreich; yamlfmt/gawk/xmllint/djlint/yamllint bewusst nicht enthalten (siehe Abschnitt 0). Einzelne Pakete, die trotzdem fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen, inklusive der letzten Zeilen der winget-Fehlermeldung. |
| 60 | 60 | ||
| 61 | 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). | 61 | 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). |
| 62 | 62 | ||
diff --git a/nvim/lua/plugins/lint.lua b/nvim/lua/plugins/lint.lua index f1d3b78..2bfcfc7 100644 --- a/nvim/lua/plugins/lint.lua +++ b/nvim/lua/plugins/lint.lua | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | -- shellcheck läuft in bashls, clang-tidy in clangd, ansible-lint in ansiblels. | 4 | -- shellcheck läuft in bashls, clang-tidy in clangd, ansible-lint in ansiblels. |
| 5 | 5 | ||
| 6 | local ruff = { "ruff" } -- bereits als Formatter installiert, siehe plugins/format.lua | 6 | local ruff = { "ruff" } -- bereits als Formatter installiert, siehe plugins/format.lua |
| 7 | local yamllint = { "yamllint" } -- brew install yamllint, pkg install devel/py-yamllint | ||
| 7 | local zsh = { "zsh" } -- kein zusätzliches Werkzeug: ruft `zsh --no-exec` auf | 8 | local zsh = { "zsh" } -- kein zusätzliches Werkzeug: ruft `zsh --no-exec` auf |
| 8 | 9 | ||
| 9 | return { | 10 | return { |
| @@ -15,6 +16,8 @@ return { | |||
| 15 | lint.linters_by_ft = { | 16 | lint.linters_by_ft = { |
| 16 | -- ergänzt die Typprüfung von basedpyright um die Lint-Regeln (F, E, UP, B ...) | 17 | -- ergänzt die Typprüfung von basedpyright um die Lint-Regeln (F, E, UP, B ...) |
| 17 | python = ruff, | 18 | python = ruff, |
| 19 | -- kein Sprachserver für YAML im Einsatz; Regeln kommen aus .yamllint des Projekts | ||
| 20 | yaml = yamllint, | ||
| 18 | -- Syntaxprüfung ohne Ausführung; bashls deckt nur sh und bash ab | 21 | -- Syntaxprüfung ohne Ausführung; bashls deckt nur sh und bash ab |
| 19 | zsh = zsh, | 22 | zsh = zsh, |
| 20 | } | 23 | } |
