Saltar al contenido
Volver al inicio
Volver al blog
Feature

El editor de código que Android merece: LSP, IntelliSense y mucho más

Un editor de código de verdad para Android: servidores de lenguaje LSP, autocompletado semántico, resaltado de sintaxis TextMate, edición multicursor, navegación y diagnósticos en línea.

9 min
Por Pelayo Naredo
El editor de código que Android merece: LSP, IntelliSense y mucho más

La mayoría de los «editores de código» en Android no son más que cajas de texto con ínfulas. Se apoyan en el TextView de Android, se atragantan con un archivo de 2.000 líneas y no ofrecen nada que lleve a un desarrollador de verdad a confiarles su código de producción. Con suerte tienes colores de sintaxis, y ahí se acaba la cosa. Así que, en cuanto surge un bug que hay que arreglar sobre la marcha, acabas echando mano del portátil de todos modos.

PocketCode adopta el enfoque contrario. Su editor de código para Android está construido sobre Sora Editor, un motor de alto rendimiento respaldado por una estructura de datos de tipo gap-buffer. A diferencia de las soluciones basadas en TextView, Sora evita una copia O(n) en cada pulsación, así que los archivos grandes se mantienen fluidos. Sobre ese motor, PocketCode añade todo lo que esperarías de un IDE de escritorio: servidores de lenguaje LSP, autocompletado semántico, resaltado de sintaxis de verdad, edición multicursor y navegación profunda por el código. Esto es lo que significa en la práctica.

Un resaltado de sintaxis que no es de juguete

El resaltado se apoya en gramáticas TextMate (el mismo formato .tmLanguage.json que usa VS Code), procesadas por el motor tm4e. Eso cubre 33 lenguajes de serie —Kotlin, Java, Python, JavaScript, TypeScript (y TSX), Go, Rust, C, C++, C#, PHP, Ruby, Swift, Scala, SQL, YAML, TOML, Dockerfile y más—, cada uno asignado a su ámbito TextMate y a sus extensiones de archivo correctas.

Para que el editor siga respondiendo con soltura en un móvil, PocketCode incluye su propio IncrementalTokenizer, que pinta los tokens al instante en lugar de esperar a que termine la pasada completa de TextMate. Alrededor de eso tienes lo esencial de un editor que hace legible el código: números de línea configurables, indicadores de emparejamiento de llaves y paréntesis, guías visuales de sangría y plegado de código para funciones, clases, métodos, interfaces, bloques de comentarios, bloques de importaciones y regiones personalizadas, con plegados anidados y un estado de plegado que se conserva por archivo.

La detección de lenguaje es automática, por extensión (CodeLanguage.fromExtension()) o por nombre de archivo (CodeLanguage.fromFileName(), que reconoce Dockerfile, Makefile, .gitignore y compañía), y recurre a texto plano cuando no encaja nada.

Autocompletado e IntelliSense, con la potencia de LSP

Aquí es donde PocketCode deja de ser un juguete móvil y empieza a ser un IDE. El editor incluye un cliente completo del Language Server ProtocolLspClient, que implementa LSP 3.17— que se conecta a servidores de lenguaje externos estándar (clangd, pyright y otros). La comunicación se realiza mediante JSON-RPC 2.0, con gestión completa del ciclo de vida del servidor de lenguaje y reconexión automática si un servidor se cae.

Ese cliente LSP es lo que convierte el autocompletado básico en un IntelliSense de verdad. Estas son las ocho capacidades que implementa:

Método LSPFunción
textDocument/completionAutocompletado semántico
textDocument/hoverDocumentación al pasar el cursor
textDocument/definitionIr a la definición
textDocument/referencesBuscar referencias
textDocument/signatureHelpPistas de parámetros de función
textDocument/formattingFormateo asistido por el servidor
textDocument/renameRenombrado semántico seguro
textDocument/publishDiagnosticsDiagnósticos del servidor en tiempo real

El motor Sora también proporciona su propia ventana flotante nativa de autocompletado, así que tienes sugerencias incluso antes de configurar un servidor de lenguaje. Y para la escritura asistida por IA, una capa de Ghost Text muestra las sugerencias como texto en línea semitransparente después del cursor, con un margen de 150 ms antes de que los pequeños movimientos del cursor la descarten: al aceptar una sugerencia se inserta el texto completo conservando tu historial de deshacer/rehacer, y nunca entra en conflicto con el motor de autocompletado estándar.

Potencia de edición: multicursor, Emmet y un teclado de símbolos

Escribir código en un móvil solo resulta doloroso si el editor lo hace doloroso. El MultiCursorEngine de PocketCode te permite colocar cursores adicionales en posiciones arbitrarias y editar en todos ellos a la vez, con una conversión limpia entre desplazamiento ↔ línea/columna y la posibilidad de eliminar cursores concretos mientras los demás siguen activos.

Emmet está totalmente soportado para HTML y CSS: ul>li*3 se expande a una lista anidada, div.cls#id se convierte en <div id="id" class="cls"></div>, y abreviaturas de CSS como dfdisplay: flex o w100pwidth: 100% funcionan todas.

Como los teclados de los móviles no se diseñaron para escribir código, hay una barra de símbolos de programación encima del teclado del sistema. Una sección inserta los caracteres que realmente necesitas —{ } [ ] ( ) ; : = y los demás— y otra ofrece acciones: deshacer/rehacer, mover una línea arriba o abajo, alternar comentarios de línea (//) o de bloque (/* */), duplicar la línea actual, ir a una línea, ordenar las líneas seleccionadas y transformar mayúsculas/minúsculas (MAYÚSCULAS / minúsculas / Título). Añade el ajuste del tamaño de fuente con pellizco para hacer zoom, una lupa al mantener pulsado para colocar el cursor con precisión y deshacer/rehacer ilimitados, y la pantalla pequeña deja de ser una excusa.

Un editor de verdad se juzga por lo rápido que te mueves por una base de código. PocketCode te da el kit de navegación completo:

  • Ir a símbolo — un diálogo con filtrado difuso sobre el archivo activo, que cubre funciones, métodos, clases, interfaces, propiedades, variables, constantes, importaciones y regiones, cada uno con una línea de contexto.
  • Panel de esquema — un árbol desplegable de la estructura del archivo que se actualiza en vivo a medida que editas.
  • Vista rápida de la definición — un popup en línea que muestra unas 10 líneas de contexto alrededor de la definición de un símbolo, sin mover el cursor.
  • Ir a referencias — todas las referencias en el proyecto, distinguiendo visualmente las definiciones de los usos.
  • Renombrar símbolo — encuentra todas las apariciones en todo el proyecto, separa el código de las cadenas y comentarios, y muestra una vista previa antes de aplicar.
  • Búsqueda global — texto o regex en todos los archivos del proyecto, filtrable por extensión y asociada a Ctrl+Shift+F.
  • Paleta de comandos — un punto de entrada con filtrado difuso al estilo de VS Code para todas las acciones del editor.
  • Importación automática — analiza los símbolos sin definir y sugiere las importaciones correctas para Kotlin, Java, Python, TypeScript, JavaScript y más.

Diagnósticos sin servidor

No siempre quieres levantar un servidor de lenguaje, así que PocketCode incluye un motor local de InlineDiagnostics que detecta problemas en tiempo real usando reglas por lenguaje, sin necesidad de LSP. Trae reglas para Kotlin, Java, JavaScript/TypeScript, Python, Go, Rust, PHP, CSS, HTML y JSON.

Las reglas universales señalan espacios en blanco al final de línea, líneas en blanco consecutivas de más y comentarios TODO / FIXME / HACK / NOTE / BUG / WARN. Las reglas específicas de cada lenguaje van más allá: el uso de !! en Kotlin, == en lugar de === o var en lugar de let/const en JavaScript, sangría inconsistente e importaciones sin usar en Python, JSON mal formado. Todo aparece en un panel de Problemas al estilo de VS Code, agrupado por archivo y filtrable por severidad (ERROR, WARNING, INFO, HINT).

Donde puede, el editor te arregla las cosas. Las correcciones rápidas aparecen junto a los diagnósticos: limpian los espacios al final de línea, eliminan líneas en blanco y aplican acciones específicas de cada lenguaje. Y las refactorizaciones de extracción analizan las variables de una selección para extraer un método (con los parámetros y la llamada correctos) o envolver una expresión en una variable con nombre, con la sangría ajustada automáticamente al nivel correcto.

Formateo, en el dispositivo

El formateo es totalmente local, en el dispositivo: sin herramientas externas, sin ida y vuelta por la red. Cada lenguaje tiene su propia implementación de formateador:

FormateadorLenguajes
Estilo CKotlin, Java, JS, TS, C, C++, C#, Dart, Go, Swift, Rust, PHP, Scala, Gradle
PythonPython (sangría PEP-8)
XML/HTMLHTML, XML, SVG
JSONJSON (formateado o compacto)
CSSCSS, SCSS, Less
YAML / SQL / MarkdownYAML, SQL, Markdown

Las opciones por perfil te permiten definir el tamaño de sangría, el ancho máximo de línea, si añadir un salto de línea final, el espaciado alrededor de los operadores y la colocación de las llaves.

Pensado para el móvil, no portado a él

La disposición se adapta automáticamente a los formatos de móvil en vertical, móvil en horizontal, tablet y plegable. Un modo Zen oculta todo salvo el texto, un editor dividido muestra dos archivos en paralelo, y unos chips contextuales en la barra de herramientas ponen Formatear, Buscar, Reemplazar y Esquema a un toque. Prácticamente todas las acciones viven en un menú de desbordamiento organizado, y hay un modo sin conexión para que la edición, la ejecución local y Git sigan funcionando sin conectividad.

Un apunte sincero: la colaboración en tiempo real está en la hoja de ruta, pero todavía no está disponible. El panel de colaboración existe como prototipo de interfaz sin backend —la sincronización de cursores y las sesiones compartidas están planificadas—, así que no vamos a fingir que funcionan hoy.


Un móvil ya no es excusa para escribir código con una herramienta peor. El editor de PocketCode lleva las partes que de verdad importan —autocompletado e IntelliSense respaldados por LSP, resaltado de sintaxis TextMate en 33 lenguajes, edición multicursor y navegación completa por el código— al dispositivo que siempre llevas en el bolsillo.

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

¿Hay un buen editor de código para Android? Sí — PocketCode lleva autocompletado LSP, resaltado para 33 lenguajes, multicursor y Git integrado al móvil.

¿Se puede programar en Android sin ordenador? Sí — escribe, ejecuta y depura solo con el móvil, sin conexión.

¿Un editor de código con terminal? Sí — el editor va junto a una terminal integrada (SSH/SFTP) y ejecutores en el dispositivo, así que editas y ejecutas en una sola app.

¿Tiene Git? Integrado: commit, diff, blame, ramas — sin cliente externo.

¿Gratis y sin anuncios? El editor completo es gratis, sin anuncios.

¿Sin conexión? Por completo — el editor, los runtimes y Git funcionan todos sin conexión.

PocketCode va camino de Google Play. Apúntate al preregistro para estar entre los primeros en probarlo en tu propio dispositivo.

La herramienta detrás de este artículo

Editor de código

¿Listo para probar PocketCode?

Descarga la app y empieza a programar desde tu móvil.