📤 Painel de Saída#
O Output Panel (src/ui/output_panel.py) é o painel de log centralizado do Codis. Ele exibe mensagens de todos os subsistemas em canais separados, com filtragem por nível.
Abrindo o Output Panel#
- Painel inferior → aba Output
- Menu Exibir → Output
Canais#
O Output Panel usa um sistema de canais para separar mensagens por origem:
| Canal | O que registra |
|---|---|
Codis |
Mensagens internas do editor (ações do usuário, eventos importantes) |
Python |
Resultados do lint Python (pyflakes, pylint, mypy, flake8) |
ESLint |
Resultados do lint JavaScript/TypeScript |
LSP |
Mensagens do servidor LSP ativo |
Extensions |
Logs do sistema de plugins (carregamento, erros) |
Git Clone |
Progresso e resultado de operações de clone |
<nome do plugin> |
Canal exclusivo criado por cada plugin via api.create_output_channel() |
Plugins podem criar canais adicionais arbitrários.
Níveis de Mensagem#
Cada mensagem tem um nível que determina sua cor de exibição:
| Nível | Cor | Uso |
|---|---|---|
info |
Texto padrão do tema | Informações gerais |
warn |
Amarelo | Avisos não críticos |
error |
Vermelho | Erros e falhas |
ok |
Verde | Operações concluídas com sucesso |
Bridge com o Sistema de Logging Python#
O Codis instala dois handlers no sistema de logging padrão do Python (logging) que encaminham mensagens para o Output Panel:
- Handler do logger
Codis(nívelWARNINGe acima) → canalCodis - Handler do logger raiz (nível
ERRORe acima) → canalCodis
Isso significa que qualquer chamada a logger.warning(...) ou logger.error(...) em qualquer módulo do Codis aparece automaticamente no Output Panel.
Plugins que usam api.get_logger() obtêm um logger prefixado com o ID do plugin, e suas mensagens aparecem no canal do próprio plugin.
Adicionando Mensagens ao Output#
Via código Python (por exemplo, em um plugin):
# Via OutputChannel (preferido para plugins)
canal = api.create_output_channel("Meu Plugin")
canal.append("Operação concluída.")
canal.appendLine("Outra mensagem.")
# Via logger padrão (aparece no canal "Codis")
import logging
logger = logging.getLogger("Codis.MeuModulo")
logger.warning("Algo inesperado aconteceu.")
logger.error("Falha crítica: %s", str(exc))
Mensagens Automáticas#
O Codis escreve automaticamente no Output Panel nas seguintes situações:
| Evento | Canal | Mensagem |
|---|---|---|
| Arquivo aberto | Codis |
📂 Aberto: <caminho> |
| Workspace aberto | Codis |
Workspace: <caminho> |
| Lint completado (com diagnósticos) | Python / ESLint |
Lista de erros e avisos |
| Diagnósticos LSP recebidos | LSP |
Contagem de diagnósticos |
| Plugin carregado | Extensions |
Plugins carregados: N |
| Erro de carregamento de plugin | Extensions |
Plugins com falha: N |
| Mensagem de log do servidor LSP | LSP |
Mensagem do servidor |
Formato das Mensagens de Lint#
Para cada arquivo analisado, o Output Panel exibe:
── nome_do_arquivo.py ──────────────────────────────────
✖ L42:8 Undefined variable 'foo' [undefined-variable]
⚠ L55:1 Line too long (82 > 79) [line-too-long]
2 problema(s) - 1 erro(s), 1 aviso(s)
Timestamp#
Mensagens podem incluir timestamp (timestamp=True). O formato é [HH:MM:SS]. A maioria das mensagens automáticas inclui timestamp; mensagens de lint não incluem para economizar espaço.
Filtragem#
O Output Panel permite filtrar mensagens por canal (dropdown) e por nível mínimo. Mensagens de canais não selecionados são ocultadas da visualização mas não descartadas.