Um editor de código de verdade para Android: servidores de linguagem LSP, autocompletar semântico, realce de sintaxe TextMate, edição com múltiplos cursores, navegação de código e diagnósticos em linha — tudo no seu celular.
A maioria dos "editores de código" no Android não passa de caixas de texto
glorificadas. Elas se apoiam no TextView do Android, engasgam com um arquivo de
2.000 linhas e não oferecem nada que faça um desenvolvedor de verdade confiar
código de produção a elas. Você ganha cores de sintaxe se tiver sorte, e é só
isso. Então, no momento em que um bug precisa ser corrigido na correria, você
acaba pegando o notebook de qualquer jeito.
O Pocket Code segue o caminho oposto. Seu editor de código para
Android é construído sobre o Sora Editor, um motor de alto
desempenho apoiado por uma estrutura de dados gap-buffer. Diferentemente das
soluções baseadas em TextView, o Sora evita uma cópia O(n) a cada tecla
pressionada, então arquivos grandes continuam fluidos. Em cima desse motor, o
Pocket Code adiciona as coisas que você espera de uma IDE de desktop: servidores
de linguagem LSP, autocompletar semântico, realce de sintaxe de
verdade, edição com múltiplos cursores e navegação de código
profunda. Veja como isso funciona na prática.
O realce é feito por gramáticas TextMate (o mesmo formato .tmLanguage.json
que o VS Code usa), processadas pelo motor tm4e. Isso cobre 33 linguagens
prontas para uso — Kotlin, Java, Python, JavaScript, TypeScript (e TSX), Go,
Rust, C, C++, C#, PHP, Ruby, Swift, Scala, SQL, YAML, TOML, Dockerfile, e mais —
cada uma mapeada para seu escopo TextMate e extensões de arquivo corretos.
Para manter o editor responsivo em um celular, o Pocket Code traz seu próprio
IncrementalTokenizer, que pinta os tokens instantaneamente em vez de
esperar a passagem completa do TextMate terminar. Ao redor disso você tem os
recursos essenciais que deixam o código legível: números de linha configuráveis,
indicadores de chaves e parênteses correspondentes, guias visuais de indentação e
dobramento de código para funções, classes, métodos, interfaces, blocos de
comentário, blocos de import e regiões personalizadas — com dobras aninhadas e um
estado de dobra que persiste por arquivo.
A detecção de linguagem é automática, por extensão (CodeLanguage.fromExtension())
ou por nome de arquivo (CodeLanguage.fromFileName(), que reconhece Dockerfile,
Makefile, .gitignore e afins), recorrendo a texto simples quando nada
corresponde.
É aqui que o Pocket Code deixa de ser um brinquedo mobile e passa a ser uma IDE.
O editor inclui um cliente completo de Language Server Protocol —
LspClient, que implementa o LSP 3.17 — que se conecta a servidores de
linguagem externos padrão (clangd, pyright e outros). A comunicação roda sobre
JSON-RPC 2.0, com gerenciamento completo do ciclo de vida do servidor de
linguagem e reconexão automática caso um servidor caia.
Esse cliente LSP é o que transforma o autocompletar básico em IntelliSense de verdade. Aqui estão as oito capacidades que ele implementa:
| Método LSP | Recurso |
|---|---|
textDocument/completion | Autocompletar semântico |
textDocument/hover | Documentação ao passar o cursor |
textDocument/definition | Ir para a definição |
textDocument/references | Localizar referências |
textDocument/signatureHelp | Dicas de parâmetros de função |
textDocument/formatting | Formatação assistida pelo servidor |
textDocument/rename | Renomeação semântica segura |
textDocument/publishDiagnostics | Diagnósticos do servidor em tempo real |
O motor Sora também fornece sua própria janela flutuante nativa de autocompletar, então você tem sugestões mesmo antes de configurar um servidor de linguagem. E para a escrita assistida por IA, uma camada de Ghost Text renderiza sugestões como texto em linha semitransparente após o cursor, com uma janela de tolerância de 150 ms antes que pequenos movimentos do cursor as descartem — aceitar uma sugestão insere o texto completo preservando seu histórico de desfazer/refazer, e ela nunca briga com o motor de autocompletar padrão.
Digitar código no celular só é doloroso se o editor tornar isso doloroso. O
MultiCursorEngine do Pocket Code permite que você posicione cursores
adicionais em posições arbitrárias e edite todos eles simultaneamente, com
conversão limpa entre offset ↔ linha/coluna e a possibilidade de remover cursores
individuais enquanto os demais continuam ativos.
O Emmet tem suporte total para HTML e CSS: ul>li*3 se expande em uma lista
aninhada, div.cls#id vira <div id="id" class="cls"></div>, e atalhos de CSS
como df → display: flex ou w100p → width: 100% todos funcionam.
Como os teclados de celular não foram feitos para código, uma barra de símbolos
de programação fica acima do teclado do sistema. Uma seção insere os caracteres
que você realmente precisa — { } [ ] ( ) ; : = e o resto — e
outra expõe ações: desfazer/refazer, mover uma linha para cima ou para baixo,
alternar comentários de linha (//) ou de bloco (/* */), duplicar a linha
atual, ir para uma linha, ordenar linhas selecionadas e transformar maiúsculas e
minúsculas (MAIÚSCULA / minúscula / Título). Some a isso o dimensionamento de
fonte com pinça para dar zoom, uma lupa ao manter pressionado para
posicionar o cursor com precisão e desfazer/refazer ilimitado, e a tela
pequena deixa de ser uma desculpa.
Um editor de verdade é julgado pela velocidade com que você consegue se mover por uma base de código. O Pocket Code te dá o kit completo de navegação:
Ctrl+Shift+F.Nem sempre você quer subir um servidor de linguagem, então o Pocket Code traz um
motor local de InlineDiagnostics que captura problemas em tempo real usando
regras por linguagem — sem precisar de LSP. Ele carrega regras para Kotlin,
Java, JavaScript/TypeScript, Python, Go, Rust, PHP, CSS, HTML e JSON.
Regras universais sinalizam espaços em branco no final da linha, linhas em branco
consecutivas em excesso e comentários TODO / FIXME / HACK / NOTE / BUG
/ WARN. Regras específicas de linguagem vão além — uso de !! em Kotlin, ==
em vez de === ou var em vez de let/const em JavaScript, indentação
inconsistente e imports não usados em Python, JSON malformado. Tudo aparece em um
painel de Problemas no estilo VS Code, agrupado por arquivo e filtrável por
severidade (ERROR, WARNING, INFO, HINT).
Onde consegue, o editor corrige as coisas para você. As correções rápidas aparecem ao lado dos diagnósticos — limpar espaços em branco no final da linha, remover linhas em branco e aplicar ações específicas de linguagem. E as refatorações de extração analisam as variáveis em uma seleção para extrair um método (com os parâmetros e o ponto de chamada corretos) ou envolver uma expressão em uma variável nomeada, indentada automaticamente no nível correto.
A formatação é totalmente no dispositivo — sem ferramentas externas, sem ida-e-volta pela rede. Cada linguagem tem sua própria implementação de formatador:
| Formatador | Linguagens |
|---|---|
| Estilo C | Kotlin, Java, JS, TS, C, C++, C#, Dart, Go, Swift, Rust, PHP, Scala, Gradle |
| Python | Python (indentação PEP-8) |
| XML/HTML | HTML, XML, SVG |
| JSON | JSON (formatado ou compacto) |
| CSS | CSS, SCSS, Less |
| YAML / SQL / Markdown | YAML, SQL, Markdown |
Opções por perfil permitem definir o tamanho da indentação, a largura máxima da linha, se deve adicionar uma quebra de linha final, o espaçamento ao redor dos operadores e o posicionamento das chaves.
O layout se adapta automaticamente aos formatos Celular Retrato, Celular Paisagem, Tablet e Dobrável. Um modo Zen esconde tudo, menos o texto, um editor dividido mostra dois arquivos lado a lado, e chips de barra de ferramentas contextuais deixam Formatar, Localizar, Substituir e Estrutura a um toque de distância. Praticamente toda ação fica em um menu de excedente organizado, e há um modo offline para que edição, execução local e Git continuem funcionando sem conexão.
Uma observação honesta: a colaboração em tempo real está no roteiro, mas ainda não foi lançada. O painel de colaboração existe como um protótipo de interface sem backend — sincronização de cursores e sessões compartilhadas estão planejadas, então não vamos fingir que funcionam hoje.
Um celular não é mais desculpa para escrever código com uma ferramenta pior. O editor do Pocket Code traz as partes que realmente importam — autocompletar e IntelliSense com apoio de LSP, realce de sintaxe TextMate em 33 linguagens, edição com múltiplos cursores e navegação de código completa — para o dispositivo que está sempre no seu bolso. Se você chega ao editor a partir de um projeto novo, o guia de primeiros passos mostra o caminho, e o terminal integrado fecha o ciclo entre escrever e executar.
O Pocket Code está chegando à Google Play. Participe da pré-inscrição para estar entre os primeiros a experimentá-lo no seu próprio dispositivo.
Editor de código
Baixe o app e comece a programar pelo seu celular.