Documentação / O IDE
Servidores de linguagem e build
Os servidores de linguagem que o Yuli instala e mantém por você, sem npm nem Node do sistema, e os adaptadores de build para Python, Go, .NET, sbt, Bazel e Node.
Para cada linguagem, o Yuli usa o servidor de linguagem (LSP) de referência e o gerencia por você: baixa-o com a sua permissão, verifica-o e o mantém fora dos seus projetos. O Java tem o seu próprio motor nativo, e CSS, SCSS e LESS são resolvidos pelo editor.
Servidores gerenciados
| Linguagem | Servidor | É instalado a partir de |
|---|---|---|
| TypeScript e JavaScript | typescript-language-server com typescript (o tsserver real) |
Registro npm |
| Python | Pyright | Registro npm |
| Go | gopls | go install |
| Kotlin | kotlin-language-server | Zip do GitHub |
| C# | csharp-ls | dotnet tool |
| PHP | Intelephense | Registro npm |
| Ruby | ruby-lsp | gem |
| C e C++ | clangd 19.1.2 | Zip do GitHub |
| Bash | bash-language-server | Registro npm |
| Dockerfile | dockerfile-language-server-nodejs | Registro npm |
| Rust | rust-analyzer | Binário do GitHub |
Sem npm nem Node no seu computador
- Os pacotes são baixados diretamente do registro npm e verificados contra a soma SHA-512 publicada pelo registro.
- Não são executados scripts de instalação nem dependências opcionais.
- Eles rodam sobre o próprio Electron do Yuli em modo Node, ou sobre um Node que o Yuli baixa. Você não precisa ter npm nem Node instalados.
- São guardados em
<runtimes>/<servidor>/<versão>/. - Um download só é interrompido se deixar de chegar informação durante 60 segundos; um download lento, mas ativo, não é interrompido.
A pasta de runtimes do Yuli (<runtimes>) depende do sistema:
%LOCALAPPDATA%\.yulicode\runtimes
~/Library/Caches/.yulicode/runtimes
$XDG_CACHE_HOME/yulicode/runtimes (por padrão, ~/.cache/yulicode/runtimes)
Com a sua permissão
Se faltar o servidor de uma linguagem, o editor mostra «Sem servidor de linguagem para…» com estas opções:
| Opção | O que faz |
|---|---|
| Autorizar download / Autorizar instalação | O Yuli o instala e o inicia |
| Agora não | Não pergunta mais durante esta sessão |
| Não perguntar novamente | Lembra a sua decisão para esse servidor |
Nada será baixado nem executado sem a sua autorização. As decisões são salvas em lsp-install-consent.json, junto à sua configuração, por servidor e por destino (este computador ou um host remoto).
Em Opções globais → Servidores de linguagem, você pode indicar o caminho de um servidor que já tenha ou uma URL ou espelho de confiança.
Adaptadores de build
O Yuli detecta como cada projeto é construído pelos seus arquivos, sem executar nada para descobrir, e usa essas ferramentas para compilar, executar, testar e mostrar resultados no painel Testes.
- Gerenciadores: pip (
requirements*.txt,setup.pyou umpyproject.tomlsimples), Poetry, uv, Pipenv e Hatch. - Ambiente: usa o ambiente virtual do projeto (
.venv/venv, as pastas do Poetry e do Pipenv ou a do Hatch). Sem ambiente, usa orundo gerenciador e, caso contrário, o Python do sistema. - Testes: pytest se o projeto o configura ou depende dele; caso contrário, unittest.
- O mesmo ambiente é passado ao Pyright, assim o autocompletar enxerga as suas dependências.
go build,go runego test ./....- Os testes são lidos no formato
-jsonpara o explorador de testes, e o console mostra o texto como com-v.
- Projetos
.sln,.csproj,.fsproje.vbproj. - Os resultados dos testes chegam no formato TRX.
- Projetos com
build.sbt. - Os resultados dos testes são lidos do JUnit XML de
target/test-reports.
- Projetos com
MODULE.bazelouWORKSPACE. bazel build //...,bazel test //...ebazel run <rótulo>; usa o bazelisk se você o tiver instalado.
- Gerenciador de pacotes: o campo
packageManagerdopackage.jsone, se não existir, o lockfile:pnpm-lock.yaml,yarn.lock,bun.lockboupackage-lock.json. - Cobertura: com a ferramenta que o projeto já tem, nesta ordem: vitest, jest, c8 e nyc. O Yuli lê
coverage/coverage-summary.json. Sem nenhuma delas, não há cobertura.
Maven, Gradle, Ant e Cargo continuam como sempre; veja Executar e depurar.
▶ na margem
Ao lado do código aparece um ▶ para executar ou depurar o que está à sua frente. Ele só é exibido quando o projeto é realmente desse tipo.
| Linguagem | Executar | Depurar |
|---|---|---|
| Python | if __name__ == "__main__": e testes de pytest ou unittest |
if __name__ == "__main__": |
| Go | func main e func TestX |
func main e func TestX |
| C# | Testes de xUnit, NUnit e MSTest | static void Main( |
Além disso, em um package.json cada script tem o seu ▶ (executado com o gerenciador do projeto), e no Java há ▶ para classes com main, testes e tarefas do Maven e do Gradle.
Veja Depuração para as sessões de depuração e Editor e linguagens para o restante do editor.