Repository navigation
editor
O núcleo do Codis é o EditorPane - um editor de texto rico construído sobre o widget tk.Text. Esta página descreve todas as funcionalidades disponíveis no editor.
O destaque de sintaxe é baseado em expressões regulares compiladas em src/syntax/patterns.py. É importante distinguir dois níveis de suporte a linguagem no Codis:
-
Highlight de sintaxe real (
LANG_RE, 25 linguagens): JavaScript, TypeScript, Python, HTML, CSS, SCSS, Less, JSON, Markdown, YAML, TOML, INI, SQL, Shell, Rust, Go, C, C++, Java, Makefile, Dockerfile, GraphQL, XML, Vue e Svelte (estas duas últimas só acessíveis trocando a linguagem manualmente, sem detecção automática por extensão). -
Reconhecimento por extensão sem highlight (
EXT_LANG, mais 23 linguagens): Kotlin, Swift, C#, F#, VB.NET, Ruby, PHP, Lua, Perl, R, Julia, Haskell, Elixir, Erlang, Scala, Clojure, CoffeeScript, Groovy, HCL/Terraform, Protocol Buffers, Nix, Batch e PowerShell - o Codis identifica corretamente a linguagem (ícone, nome de exibição na barra de status, formatador associado), mas o texto é exibido sem coloração de sintaxe, já que essas linguagens não têm uma entrada emLANG_RE.
No total são 48 linguagens reconhecidas por extensão, das quais 25 têm highlight de sintaxe colorido.
A linguagem é detectada automaticamente pela extensão do arquivo. Para alterar manualmente, clique no nome da linguagem na Barra de Status.
Não confundir com o KDocs, que reconhece 27 linguagens diferentes para fins de parsing de docstring/comentário - uma lista parcialmente distinta da de highlight, já que KDocs e o highlighter de sintaxe são sistemas independentes.
O autocomplete combina três fontes:
- Palavras do arquivo atual - análise lexical do buffer.
-
Keywords da linguagem - lista curada por linguagem (definida em
src/constants.py). - Símbolos LSP - funções, classes e variáveis do servidor de linguagem ativo.
Configuração:
| Opção | Padrão | Descrição |
|---|---|---|
autocomplete |
true |
Ativa/desativa |
autocomplete_delay |
200 ms |
Tempo de espera após digitação |
autocomplete_min_chars |
1 |
Mínimo de caracteres para disparar |
autocomplete_max_items |
24 |
Máximo de sugestões exibidas |
A lista de autocomplete é navegável por ↑ / ↓ e fechada com Esc. Tab ou Enter confirma a sugestão selecionada.
Snippets são trechos de código reutilizáveis armazenados em ~/.codis/snippets/. O painel de Snippets (Ctrl+Shift+J ou Activity Bar → ✂️) permite gerenciar e inserir snippets.
Ao digitar o prefixo de um snippet e pressionar Tab, o snippet é expandido no cursor. Snippets suportam variáveis ${1}, ${2} para navegação entre campos de edição.
Ver Recursos Avançados → Snippets para detalhes sobre criação.
O editor fecha automaticamente os pares:
| Abre | Fecha |
|---|---|
( |
) |
[ |
] |
{ |
} |
" |
" |
' |
' |
` |
` |
Pressionar o caractere de fechamento sobre um par existente apenas move o cursor para fora, sem duplicar.
O minimapa é uma representação em miniatura do código à direita do editor.
-
Largura: 110 px (configurável via
minimap_width) -
Escala: 1:3 (configurável via
minimap_scale) - Marcadores coloridos de diagnósticos de lint são sobrepostos no minimapa.
- Para ocultar:
Exibir → MinimapaouCtrl+,→minimap: false.
Exibida à esquerda do editor. Pode exibir números absolutos ou relativos (estilo Vim):
-
line_numbers: true- exibe números de linha (padrão) -
relative_numbers: true- exibe números relativos ao cursor
Regiões de código definidas por indentação ou delimitadores de bloco podem ser dobradas/desdobradas. Clique no triângulo ▸ na margem esquerda ou use Ctrl+Shift+[ / Ctrl+Shift+] (se configurado via plugin).
-
code_folding: true- ativa o dobramento (padrão).
Ao rolar o código, os cabeçalhos de escopo (funções, classes, loops) ficam "colados" no topo do editor até que o bloco inteiro saia da tela.
-
sticky_scroll: true- ativa (padrão).
A linha onde o cursor se encontra recebe um destaque visual diferenciado.
-
highlight_current_line: true- ativa (padrão).
Ao posicionar o cursor próximo a um parêntese, colchete ou chave, o par correspondente é destacado.
-
bracket_matching: true- ativa (padrão). - Para navegar ao par correspondente:
Ir → Colchete Correspondente.
Linhas verticais sutis indicam os níveis de indentação do código.
-
indent_guides: true- ativa (padrão).
Controla como espaços e tabs são exibidos:
-
render_whitespace: "none"- não exibe (padrão) -
render_whitespace: "boundary"- exibe apenas nos limites de palavras -
render_whitespace: "all"- exibe todos os espaços e tabs
Quando color_preview: true (padrão), o editor exibe uma pequena amostra colorida ao lado de valores de cor no código (ex: #4a9eff, rgb(255, 0, 0)). Clique na amostra para abrir o Color Picker (Ctrl+Shift+C).
Quando inlay_hints: true, o LSP pode injetar dicas de tipo diretamente no código, exibidas em fonte menor e cor diferente.
Exibe a informação de git blame diretamente no editor:
-
inline_blame: false- desativado por padrão -
inline_blame_mode: "cursor"- mostra blame apenas na linha do cursor -
inline_blame_mode: "all"- mostra blame em todas as linhas visíveis
Pressione Insert para alternar entre inserção (padrão) e sobrescrita (substituição de caracteres à medida que digita).
Via Ferramentas → Modo Somente Leitura, o editor fica em modo read-only - o texto não pode ser editado. Ideal para revisar código sem risco de alterações acidentais.
Shift+Alt+F ou Executar → Formatar Documento invoca o formatador configurado para a linguagem ativa. A formatação chama a ferramenta CLI diretamente via subprocess (não usa o protocolo LSP):
| Linguagem | Ferramenta |
|---|---|
| Python | Black (preferido, --line-length 120) → autopep8 (fallback se Black ausente) |
| JavaScript / TypeScript | Prettier |
| JSON | Prettier |
| CSS / SCSS | Prettier |
| HTML | Prettier |
| Markdown | Prettier |
Apenas essas linguagens têm formatação automática nativa. Go, Rust e demais linguagens não suportadas exibem um diálogo informando que não há formatador disponível para a linguagem - não há integração com
gofmtourustfmtnesta versão. Se a ferramenta CLI (Prettier, Black ou autopep8) não estiver instalada no PATH, o mesmo diálogo é exibido.
Atalhos de manipulação de linhas disponíveis:
| Ação | Atalho |
|---|---|
| Duplicar linha | Ctrl+D |
| Apagar linha | Ctrl+Shift+K |
| Mover linha para cima | Alt+↑ |
| Mover linha para baixo | Alt+↓ |
| Juntar linhas | via menu Editar |
| Ordenar linhas (A-Z) | via menu Editar |
| Ordenar linhas (Z-A) | via menu Editar |
| Remover linhas duplicadas | via menu Editar / Ferramentas |
| Remover espaços no fim | via menu Editar |
Via Editar → Transformar:
- Maiúsculas - converte seleção para UPPER CASE
- Minúsculas - converte seleção para lower case
- Title Case - Converte Seleção Para Title Case
| Ação | Atalho |
|---|---|
| Aumentar zoom | Ctrl+= |
| Diminuir zoom | Ctrl+- |
| Resetar zoom (100%) | Ctrl+0 |
O zoom atual é exibido na barra de status e pode ser ajustado clicando nele.
Exibir → Quebra de Linha alterna entre linha reta e quebra suave (word_wrap). Estado salvo em config.json.
Para arquivos acima de 3 MB (configurável via large_file_mb), o Codis ativa um modo simplificado que desativa syntax highlighting e autocomplete para manter a performance.
Exibir → Painéis → File Timeline abre o histórico de versões automáticas do arquivo atual. O Codis salva snapshots em ~/.codis/backups/ enquanto o arquivo está aberto, e é possível comparar (via diff) e restaurar qualquer versão anterior com um clique - sem depender do Git. Detalhes completos do mecanismo de snapshot em Backups, Lixeira & Arquivos Compactados.
Começando
Editando
- Editor
- Inteligência do Editor
- KDocs
- Linting & LSP
- Debug
- Git
- Terminal
- Workspace & Produtividade
- Utilitários de Desenvolvimento
Assistente e conectividade
Ferramentas e extras
- Recursos Avançados
- Recursos Exclusivos
- K-UI
- Sistema & Performance
- Backups, Lixeira & Arquivos
- Painel de Saída
- Acessibilidade
- Editor de Imagens (Paint)
- Utilitários Pessoais
- Incorporar Programas e Preview Web
- DOOM Embutido
Para quem desenvolve
Projeto