Pular para o conteúdo
Voltar ao início
Voltar ao blog
Feature

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.

9 min
Por Pelayo Naredo
O Editor de Código que o Android Merece: LSP, IntelliSense e Mais

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 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 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 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 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 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.

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 ProtocolLspClient, 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 LSPRecurso
textDocument/completionAutocompletar semântico
textDocument/hoverDocumentação ao passar o cursor
textDocument/definitionIr para a definição
textDocument/referencesLocalizar referências
textDocument/signatureHelpDicas de parâmetros de função
textDocument/formattingFormatação assistida pelo servidor
textDocument/renameRenomeação semântica segura
textDocument/publishDiagnosticsDiagnó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.

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 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 dfdisplay: flex ou w100pwidth: 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 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 — todas as referências no projeto, distinguindo visualmente definições de usos.
  • Renomear símbolo — encontra todas as ocorrências em todo o projeto, separa código de strings/comentários e mostra uma pré-visualização antes de você aplicar.
  • Busca global — texto ou regex em todos os arquivos do projeto, filtrável por extensão, vinculada a Ctrl+Shift+F.
  • Paleta de comandos — um ponto de entrada difuso no estilo VS Code para todas as ações do editor.
  • Auto-import — varre símbolos indefinidos e sugere os imports certos para Kotlin, Java, Python, TypeScript, JavaScript e mais.

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 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.

Formatação, no dispositivo

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:

FormatadorLinguagens
Estilo CKotlin, Java, JS, TS, C, C++, C#, Dart, Go, Swift, Rust, PHP, Scala, Gradle
PythonPython (indentação PEP-8)
XML/HTMLHTML, XML, SVG
JSONJSON (formatado ou compacto)
CSSCSS, SCSS, Less
YAML / SQL / MarkdownYAML, 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.

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 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 PocketCode 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.

Editor de código para Android: respostas rápidas

Existe um bom editor de código para Android? Sim — o PocketCode traz autocompletar com LSP, realce para 33 linguagens, múltiplos cursores e Git integrado para o celular.

Dá para programar no Android sem um computador? Sim — escreva, execute e depure só no celular, offline.

Um editor de código com terminal? Sim — o editor fica ao lado de um terminal integrado (SSH/SFTP) e de runners no dispositivo, então você edita e executa no mesmo app.

Ele tem Git? Integrado: commit, diff, blame, branches — sem cliente externo.

É grátis e sem anúncios? O editor completo é grátis, sem anúncios.

Funciona offline? Totalmente — editor, runtimes e Git funcionam sem conexão.

O PocketCode está chegando à Google Play. Participe da pré-inscrição para estar entre os primeiros a experimentá-lo no seu próprio dispositivo.

A ferramenta por trás deste artigo

Editor de código

Pronto para experimentar o PocketCode?

Baixe o app e comece a programar pelo seu celular.