Documentación / El IDE
Servidores de lenguaje y build
Los servidores de lenguaje que Yuli instala y mantiene por ti, sin npm ni Node del sistema, y los adaptadores de build para Python, Go, .NET, sbt, Bazel y Node.
Para cada lenguaje, Yuli usa el servidor de lenguaje (LSP) de referencia y lo gestiona por ti: lo descarga con tu permiso, lo verifica y lo mantiene fuera de tus proyectos. Java tiene su propio motor nativo y CSS, SCSS y LESS los resuelve el editor.
Servidores gestionados
| Lenguaje | Servidor | Se instala desde |
|---|---|---|
| TypeScript y JavaScript | typescript-language-server con typescript (el tsserver real) |
Registro npm |
| Python | Pyright | Registro npm |
| Go | gopls | go install |
| Kotlin | kotlin-language-server | Zip de GitHub |
| C# | csharp-ls | dotnet tool |
| PHP | Intelephense | Registro npm |
| Ruby | ruby-lsp | gem |
| C y C++ | clangd 19.1.2 | Zip de GitHub |
| Bash | bash-language-server | Registro npm |
| Dockerfile | dockerfile-language-server-nodejs | Registro npm |
| Rust | rust-analyzer | Binario de GitHub |
Sin npm ni Node en tu equipo
- Los paquetes se descargan directo del registro npm y se comprueban contra la suma SHA-512 que publica el registro.
- No se ejecutan scripts de instalación ni dependencias opcionales.
- Corren sobre el propio Electron de Yuli en modo Node, o sobre un Node que descarga Yuli. No hace falta que tengas npm ni Node instalados.
- Se guardan en
<runtimes>/<servidor>/<versión>/. - Una descarga se corta solo si deja de llegar información durante 60 segundos; una descarga lenta pero activa no se interrumpe.
La carpeta de runtimes de Yuli (<runtimes>) depende del sistema:
%LOCALAPPDATA%\.yulicode\runtimes
~/Library/Caches/.yulicode/runtimes
$XDG_CACHE_HOME/yulicode/runtimes (por defecto, ~/.cache/yulicode/runtimes)
Con tu permiso
Si falta el servidor de un lenguaje, el editor muestra «Sin servidor de lenguaje para…» con estas opciones:
| Opción | Qué hace |
|---|---|
| Autorizar descarga / Autorizar instalación | Yuli lo instala y lo arranca |
| Ahora no | No pregunta más durante esta sesión |
| No volver a preguntar | Recuerda tu decisión para ese servidor |
No se descargará ni ejecutará nada sin tu autorización. Las decisiones se guardan en lsp-install-consent.json, junto a tu configuración, por servidor y por destino (este equipo o un host remoto).
En Opciones globales → Servidores de lenguaje puedes indicar la ruta de un servidor que ya tengas o una URL o espejo de confianza.
Adaptadores de build
Yuli detecta cómo se construye cada proyecto por sus archivos, sin ejecutar nada para averiguarlo, y usa esas herramientas para compilar, ejecutar, probar y mostrar resultados en el panel Tests.
- Gestores: pip (
requirements*.txt,setup.pyo unpyproject.tomlsimple), Poetry, uv, Pipenv y Hatch. - Entorno: usa el entorno virtual del proyecto (
.venv/venv, las carpetas de Poetry y Pipenv o la de Hatch). Sin entorno, usa elrundel gestor y, si no, el Python del sistema. - Pruebas: pytest si el proyecto lo configura o depende de él; si no, unittest.
- El mismo entorno se le pasa a Pyright, así el autocompletado ve tus dependencias.
go build,go runygo test ./....- Las pruebas se leen en formato
-jsonpara el explorador de pruebas, y la consola muestra el texto como con-v.
- Proyectos
.sln,.csproj,.fsprojy.vbproj. - Los resultados de las pruebas llegan en formato TRX.
- Proyectos con
build.sbt. - Los resultados de las pruebas se leen del JUnit XML de
target/test-reports.
- Proyectos con
MODULE.bazeloWORKSPACE. bazel build //...,bazel test //...ybazel run <etiqueta>; usa bazelisk si lo tienes instalado.
- Gestor de paquetes: el campo
packageManagerdelpackage.jsony, si no está, el lockfile:pnpm-lock.yaml,yarn.lock,bun.lockbopackage-lock.json. - Cobertura: con la herramienta que ya tiene el proyecto, en este orden: vitest, jest, c8 y nyc. Yuli lee
coverage/coverage-summary.json. Sin ninguna de ellas no hay cobertura.
Maven, Gradle, Ant y Cargo siguen como siempre; ver Ejecutar y depurar.
▶ en el margen
Junto al código aparece un ▶ para ejecutar o depurar lo que tienes delante. Solo se muestra cuando el proyecto es de verdad de ese tipo.
| Lenguaje | Ejecutar | Depurar |
|---|---|---|
| Python | if __name__ == "__main__": y pruebas de pytest o unittest |
if __name__ == "__main__": |
| Go | func main y func TestX |
func main y func TestX |
| C# | Pruebas de xUnit, NUnit y MSTest | static void Main( |
Además, en un package.json cada script tiene su ▶ (se ejecuta con el gestor del proyecto), y en Java hay ▶ para clases con main, pruebas y tareas de Maven y Gradle.
Ver Depuración para las sesiones de depuración y Editor y lenguajes para el resto del editor.