Inteligência do editor
O editor de scripts conversa com um servidor de linguagem de verdade em todas as linguagens — o mesmo tipo que uma IDE de computador usa. Ele sugere nomes enquanto você digita, mostra a assinatura e a documentação de uma função ao passar o mouse, sublinha erros antes de você executar e salta para uma definição, até dentro de outro script do projeto. Os pacotes importados são instalados para o editor enquanto você digita, então os tipos e as sugestões aparecem na hora.
- Usar sugestões, cartões de hover e ir para a definição
- Ler as marcas de erro antes de executar
- Saber o que os indicadores de import e o selo do motor dizem
Um servidor de linguagem por linguagem
Quando você abre um script, o editor se conecta a um serviço de servidores de linguagem por WebSocket e mantém uma sessão privada para a sua aba. Cada linguagem tem o seu servidor:
| Linguagem | Servidor | Bom em |
|---|---|---|
| Python | pylsp (Jedi) | Sugestões a partir de type hints e pacotes instalados, nomes indefinidos, imports sem uso |
| TypeScript | typescript-language-server | Checagem de tipos completa, tipos dos pacotes, sugestão de caminhos |
| JavaScript | typescript-language-server | Tipos inferidos do código e do JSDoc |
| C / C++ | clangd | Sugestões e diagnósticos com os headers do gcc do worker e o waiso.h |
O SDK da plataforma também é conhecido: import waiso (ou from 'waiso') completa as funções dele, e as chamadas que executam outro script ou flow completam os caminhos dos scripts do projeto e os parâmetros deles.
Complete, passe o mouse, salte
- Complete
Comece a digitar um nome, ou digite um . depois de um. Escolha com as setas e Enter; Esc fecha a lista.
- Passe o mouse
Pare o mouse sobre uma função, variável ou pacote para ver um cartão com a assinatura, o tipo e a documentação.
- Vá para a definição
F12 ou Ctrl/⌘+clique leva até onde um nome é definido. Quando a definição está em outro script do projeto — uma biblioteca que você importa — esse script abre no editor.
Marcas de erro
Os erros são sublinhados enquanto você digita — erros em vermelho, alertas em âmbar — e passar o mouse na marca mostra a mensagem. Cada marca também vira uma linha na aba Problemas embaixo do código. Um erro de digitação que o servidor pega antes de executar:
def main(items: list[float] = [10.0, 2.5]):
total = sum(items)
return {"total": totl} # marked: undefined name 'totl'undefined name 'totl' pyflakes 3:22
Imports enquanto você digita
Em Python, TypeScript e JavaScript, cada linha de import de pacote tem um pequeno indicador no fim: instalando, instalado ou com erro. O editor instala o pacote na sua própria sessão do servidor de linguagem enquanto você digita — é isso que faz aparecerem os tipos, as sugestões e a documentação do pacote. Passe o mouse no indicador para ver a versão resolvida; clique para abrir um seletor de versão com o histórico de lançamentos (filtre em Filtrar versões…). waiso tem um indicador dizendo que já vem embutido — nada para instalar.
Imports do projeto são conferidos no servidor
Os imports dos seus scripts são conferidos pelo mesmo resolvedor que uma execução usa, e o editor recebe na sessão os scripts do projeto na mesma linguagem, então a sugestão conhece as funções deles. Um import que falharia fica sublinhado com as mesmas palavras com que a execução falharia — import "utils.mony": no script at utils/mony in this project — e aparece em Problemas com a origem imports.
O selo do motor
No rodapé do código, o selo do motor mostra o runtime e o estado do servidor de linguagem. Passe o mouse para ler o estado por extenso:
| Estado | Significa |
|---|---|
| Conectando ao language server… | A sessão está começando; as sugestões chegam em instantes |
| Language server conectado | Sugestões, hover e marcas estão funcionando |
| Language server desconectado | Você ainda edita, salva e executa — só sem sugestões nem marcas |
| Language server não configurado | A instalação não tem o serviço de servidor de linguagem |
O mesmo selo tem o seletor de versão do runtime — veja Versões do runtime.
Limites
- O servidor de linguagem só lê o seu código; nunca o executa. Um editor sem marcas não garante uma execução sem erro — entradas, dados e pacotes ainda podem falhar.
- C e C++ não têm indicadores de pacote: não instalam nada.
- As mensagens vêm do servidor de cada linguagem e ficam em inglês.