Dokumentation / Die IDE
Language Server und Build
Die Language Server, die Yuli für dich installiert und pflegt, ohne npm oder Node im System, und die Build-Adapter für Python, Go, .NET, sbt, Bazel und Node.
Für jede Sprache nutzt Yuli den Referenz-Language-Server (LSP) und verwaltet ihn für dich: Es lädt ihn mit deiner Erlaubnis herunter, prüft ihn und hält ihn aus deinen Projekten heraus. Java hat eine eigene native Engine, und CSS, SCSS und LESS erledigt der Editor selbst.
Verwaltete Server
| Sprache | Server | Installiert über |
|---|---|---|
| TypeScript und JavaScript | typescript-language-server mit typescript (der echte tsserver) |
npm-Registry |
| Python | Pyright | npm-Registry |
| Go | gopls | go install |
| Kotlin | kotlin-language-server | Zip von GitHub |
| C# | csharp-ls | dotnet tool |
| PHP | Intelephense | npm-Registry |
| Ruby | ruby-lsp | gem |
| C und C++ | clangd 19.1.2 | Zip von GitHub |
| Bash | bash-language-server | npm-Registry |
| Dockerfile | dockerfile-language-server-nodejs | npm-Registry |
| Rust | rust-analyzer | Binärdatei von GitHub |
Ohne npm oder Node auf deinem Rechner
- Die Pakete werden direkt aus der npm-Registry heruntergeladen und gegen die SHA-512-Prüfsumme geprüft, die die Registry veröffentlicht.
- Es werden keine Installationsskripte und keine optionalen Abhängigkeiten ausgeführt.
- Sie laufen auf dem eigenen Electron von Yuli im Node-Modus oder auf einem Node, das Yuli herunterlädt. Du musst weder npm noch Node installiert haben.
- Sie werden unter
<runtimes>/<server>/<version>/abgelegt. - Ein Download wird nur abgebrochen, wenn 60 Sekunden lang keine Daten mehr ankommen; ein langsamer, aber aktiver Download wird nicht unterbrochen.
Der Runtime-Ordner von Yuli (<runtimes>) hängt vom System ab:
%LOCALAPPDATA%\.yulicode\runtimes
~/Library/Caches/.yulicode/runtimes
$XDG_CACHE_HOME/yulicode/runtimes (standardmäßig ~/.cache/yulicode/runtimes)
Mit deiner Erlaubnis
Fehlt der Server einer Sprache, zeigt der Editor „Kein Sprachserver für …“ mit diesen Optionen:
| Option | Was sie tut |
|---|---|
| Download erlauben / Installation erlauben | Yuli installiert und startet ihn |
| Jetzt nicht | Fragt in dieser Sitzung nicht mehr |
| Nicht mehr fragen | Merkt sich deine Entscheidung für diesen Server |
Ohne deine Erlaubnis wird nichts heruntergeladen oder ausgeführt. Die Entscheidungen werden in lsp-install-consent.json neben deiner Konfiguration gespeichert, pro Server und pro Ziel (dieser Rechner oder ein Remote-Host).
Unter Globale Optionen → Language Server kannst du den Pfad zu einem Server angeben, den du schon hast, oder eine vertrauenswürdige URL oder einen Mirror.
Build-Adapter
Yuli erkennt anhand der Dateien, wie jedes Projekt gebaut wird, ohne dafür etwas auszuführen, und nutzt diese Werkzeuge, um zu kompilieren, auszuführen, zu testen und die Ergebnisse im Panel Tests anzuzeigen.
- Paketmanager: pip (
requirements*.txt,setup.pyoder eine einfachepyproject.toml), Poetry, uv, Pipenv und Hatch. - Umgebung: nutzt die virtuelle Umgebung des Projekts (
.venv/venv, die Ordner von Poetry und Pipenv oder den von Hatch). Ohne Umgebung nimmt es dasrundes Paketmanagers und sonst das Python des Systems. - Tests: pytest, wenn das Projekt es konfiguriert oder davon abhängt; sonst unittest.
- Dieselbe Umgebung wird an Pyright übergeben, damit die Autovervollständigung deine Abhängigkeiten sieht.
go build,go runundgo test ./....- Die Tests werden für den Test-Explorer im Format
-jsongelesen, und die Konsole zeigt den Text wie mit-v.
- Projekte
.sln,.csproj,.fsprojund.vbproj. - Die Testergebnisse kommen im TRX-Format an.
- Projekte mit
build.sbt. - Die Testergebnisse werden aus dem JUnit-XML in
target/test-reportsgelesen.
- Projekte mit
MODULE.bazeloderWORKSPACE. bazel build //...,bazel test //...undbazel run <label>; nutzt bazelisk, wenn du es installiert hast.
- Paketmanager: das Feld
packageManagerin derpackage.jsonund, falls es fehlt, das Lockfile:pnpm-lock.yaml,yarn.lock,bun.lockboderpackage-lock.json. - Coverage: mit dem Werkzeug, das das Projekt schon hat, in dieser Reihenfolge: vitest, jest, c8 und nyc. Yuli liest
coverage/coverage-summary.json. Ohne eines davon gibt es keine Coverage.
Maven, Gradle, Ant und Cargo funktionieren wie immer; siehe Ausführen und debuggen.
▶ im Rand
Neben dem Code erscheint ein ▶, um auszuführen oder zu debuggen, was du vor dir hast. Es wird nur angezeigt, wenn das Projekt wirklich von diesem Typ ist.
| Sprache | Ausführen | Debuggen |
|---|---|---|
| Python | if __name__ == "__main__": und Tests mit pytest oder unittest |
if __name__ == "__main__": |
| Go | func main und func TestX |
func main und func TestX |
| C# | Tests mit xUnit, NUnit und MSTest | static void Main( |
Außerdem hat in einer package.json jedes Skript sein ▶ (es läuft mit dem Paketmanager des Projekts), und in Java gibt es ▶ für Klassen mit main, Tests und Tasks von Maven und Gradle.
Siehe Debugging für die Debugging-Sitzungen und Editor und Sprachen für den Rest des Editors.