O Editor de Código que o Android Merece: LSP, IntelliSense e Mais
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 PocketCode segue o caminho oposto. Seu editor de código para
Android é construído sobre o Sora Editor, um motor de alto
desempenho pensado para arquivos grandes. 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
PocketCode 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.
Realce de sintaxe que não é brinquedo
O realce é feito por gramáticas TextMate (o mesmo formato .tmLanguage.json
que o VS Code usa), processadas pelo motor tm4e. Isso cobre 39 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 PocketCode 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
um esquema da estrutura do arquivo (classes, funções, blocos de comentário e de
import, regiões personalizadas) que também alimenta a trilha de navegação. Não há dobramento de código: o motor Sora não consegue ocultar linhas.
A detecção de linguagem é automática, por extensão (CodeLanguage.fromExtension())
ou por nome de arquivo (CodeLanguage.fromFileName(), que reconhece Dockerfile, .gitignore e os arquivos de build do Gradle; um Makefile abre como texto simples), recorrendo a texto simples quando nada
corresponde.
Autocompletar e IntelliSense, com a força do LSP
É aqui que o PocketCode 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 conversa com servidores de
linguagem padrão, cada um instalado com um toque pelo editor: TypeScript e JavaScript, Pyright para Python, os servidores de HTML/CSS/JSON, Markdown, YAML (com Docker Compose e GitHub Actions), Dockerfile, Bash, Vue, Svelte, Astro, GraphQL, MDX, Prisma e Angular, mais auxiliares de CSS como Emmet, Stylelint ou UnoCSS. 19 linguagens têm um servidor de linguagem de um toque. Java, Kotlin, Go, Rust, C, C++, Ruby, Swift e Dart não têm: os servidores delas são programas nativos ou exigem um runtime que o PocketCode não inclui. O PHP só funciona se o projeto trouxer o intelephense no próprio node_modules. Limites: o Bash funciona sem ShellCheck, o YAML não baixa esquemas remotos, no máximo 2 servidores auxiliares ao mesmo tempo, e Vue, Svelte, Astro, MDX e Angular usam o pacote do TypeScript. O GraphQL precisa de um arquivo graphql-config no projeto e o Angular de um angular.json. A comunicação roda
sobre JSON-RPC 2.0, com o ciclo de vida do servidor gerenciado pelo app e um
reinício automático se ele cair.
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. O Ghost Text envia código ao provedor de IA que você configurou, após o seu consentimento.
Poder de edição: múltiplos cursores, Emmet e um teclado de símbolos
Digitar código no celular só é doloroso se o editor tornar isso doloroso. O
MultiCursorEngine do PocketCode coloca um cursor em cada ocorrência da palavra
sob o cursor (Ctrl+Shift+L, ou Adicionar cursores em todas as ocorrências
no menu) e edita todas de uma vez — inclusive o que você digita no teclado da
tela, não só em um físico.
O Emmet funciona para HTML e CSS pelo comando Expandir abreviação Emmet (sem atalho, e o Tab não o aciona): 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% funcionam. É um subconjunto: não há ^ nem numeração com $.
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). 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 200 passos de desfazer/refazer por aba, e a tela
pequena deixa de ser uma desculpa.
Navegando pelo código como quem sabe o que quer
Um editor de verdade é julgado pela velocidade com que você consegue se mover por uma base de código. O PocketCode te dá o kit completo de navegação:
- Ir para símbolo — um diálogo com filtro difuso sobre o arquivo ativo, cobrindo funções, métodos, classes, interfaces, propriedades, variáveis, constantes, imports e regiões, cada um mostrado com uma linha de contexto.
- Painel de estrutura — uma árvore deslizante da estrutura do arquivo que se atualiza ao vivo conforme você edita.
- Espiar definição — um popup em linha mostrando cerca de 10 linhas de contexto ao redor da definição de um símbolo, sem mover o cursor.
- Ir para referências — as referências que o servidor de linguagem encontra, possivelmente em vários arquivos; sem servidor, uma busca de texto só no arquivo atual.
- Renomear símbolo — mostra uma pré-visualização que separa as ocorrências no código das de strings e comentários (que não são renomeadas) antes de você aplicar. Com um servidor de linguagem pode editar outros arquivos; sem ele, renomeia só no arquivo atual.
- Buscar em arquivos — texto ou regex no projeto (Ctrl+Shift+F), pela paleta ou pelo menu Ir para. Ele pula arquivos grandes (512 KB ou mais), para em 500 resultados e só busca: não há substituição entre arquivos.
- Paleta de comandos — um ponto de entrada difuso no estilo VS Code para todas as ações do editor.
- Auto-import — sugere um
importpara símbolos ainda não importados, a partir de uma tabela interna de símbolos conhecidos (Kotlin, Java, Python, JavaScript/TypeScript, Go e Rust); não procura os símbolos do seu próprio projeto.
Diagnósticos sem servidor
Nem sempre você quer subir um servidor de linguagem, então o PocketCode 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, chaves e parênteses sem par, e comentários TODO / FIXME / HACK / XXX / BUG. 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, mistura de tabs e espaços e except sem tipo 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.
Formatação, no dispositivo
A formatação é totalmente no dispositivo — sem ferramentas externas, sem ida-e-volta pela rede. Oito formatadores dedicados cobrem 24 linguagens:
| 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 |
Formatar documento (Shift+Alt+F, com Formatador de código ligado em Configurações) tenta primeiro o servidor de linguagem e recorre a estes. A indentação e a largura da linha vêm do .editorconfig do projeto (indent_style, indent_size, tab_width, end_of_line, max_line_length). As demais linguagens recebem só uma limpeza genérica (espaços finais, linhas em branco, quebra de linha final).
Feito para o celular, não portado para ele
O layout se adapta automaticamente aos formatos Celular Retrato, Celular Paisagem, Tablet e Dobrável. Um modo Zen esconde tudo, menos o texto, um visualização dividida mostra um segundo painel somente leitura ao lado do editor, e as abas ficam sempre no topo, com um explorador no estilo VS Code a um toque. Toda ação fica em um menu por seções, com uma fileira de acesso rápido para Formatar, Localizar, Ir para símbolo, Controle de código e Executar, e, com uma sessão já iniciada, edição, execução local e Git local funcionam no dispositivo sem conexão. São 23 temas de editor integrados: 4 grátis (PocketCode Dark, PocketCode Light, VS Code Dark+ e GitHub Light) e 19 Pro.
A colaboração em tempo real funciona na sua rede local: quem está no mesmo Wi-Fi edita o mesmo arquivo com presença, cursores e comentários, e nada sai da rede.
Um celular não é mais desculpa para escrever código com uma ferramenta pior. O editor do PocketCode traz as partes que realmente importam — autocompletar e IntelliSense com apoio de LSP, realce de sintaxe TextMate em 39 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 PocketCode está disponível no Google Play. Baixe o PocketCode para experimentar o editor no seu próprio dispositivo.
Perguntas frequentes
Existe um bom editor de código para Android?
Sim. O PocketCode é um editor de código completo com autocompletar apoiado em LSP, realce de sintaxe para 39 linguagens, edição com múltiplos cursores e Git integrado — rodando inteiramente no celular.
Dá para programar no Android sem um computador?
Sim. O PocketCode é uma IDE completa: você pode escrever e executar código só no celular, e depurar JavaScript no Node. Precisa de conexão para entrar na conta; depois disso seu código roda no dispositivo. Sem notebook nem servidor.
Existe um editor de código para Android com terminal?
Sim. O PocketCode combina o editor com um terminal integrado (shell local, SSH e SFTP) e runners de código no dispositivo, então você edita e executa no mesmo app.
O editor tem Git?
Sim — Git integrado com commit, diff, blame e branches, sem precisar de um cliente externo.
É grátis e sem anúncios?
O editor completo é grátis e sem anúncios. O plano Free inclui 1 projeto e 4 dos 23 temas integrados; o Pro remove o limite de projetos e adiciona sincronização na nuvem e os temas Pro.
Funciona offline?
É preciso conexão para entrar na conta; abrir o app com uma sessão já iniciada funciona offline. O editor, o Git local e os runners rodam no dispositivo, e os servidores de linguagem e os pacotes de runtime opcionais, uma vez baixados, também funcionam sem conexão (baixá-los exige rede).
Editor de código