Estoy buscando un editor de código con características específicas. Para Windows, comercial o gratuito.
Lista de características requeridas:
- El editor debe ser independiente del idioma , y las funciones que reconocen el idioma deben ser personalizables e importables/exportables a través de definiciones externas, transparentes para el usuario si es posible. Entonces, por ejemplo, si creo mi idioma personalizado, puedo crear lexer personalizado y esquemas de resaltado, etc. La capacidad de usar o crear funciones avanzadas para cualquier idioma (por ejemplo, correctores gramaticales, listas de variables/funciones, etc.) obviamente sería genial.
- Scriptable/programable : debe tener soporte para secuencias de comandos (idealmente con Python) con acceso al texto, intercalación, otras funciones internas del editor, para que pueda programar funciones de edición y vincularlas a accesos directos. Idealmente, con la posibilidad de usar la GUI del editor (por ejemplo, mostrar alguna lista en un panel lateral, etc.).
- Funciones de resaltado de sintaxis altamente personalizables. Es decir, no solo cosas básicas, sino también la capacidad de definir el estilo para caracteres y secuencias individuales (por ejemplo, coincidencia de expresiones regulares) y para que se pueda configurar en diferentes fuentes , tamaños y colores para la coincidencia. (tenga en cuenta el énfasis). [*]
- Las líneas pueden ser de diferente altura . Por ejemplo, si configuro el estilo en una fuente de 5 puntos y coincide con toda la línea, la línea tendrá un 50% de altura en comparación con las líneas de altura con un tamaño de 10 puntos.
- Idealmente con soporte para sangrías de línea (edición en forma de árbol). El nivel de sangría (nivel de anidamiento) debe ser accesible a través de secuencias de comandos (por ejemplo, para generar código Python ejecutable). ( Nota : ¡no confunda la sangría con la inserción de espacios o tabuladores! Las sangrías aquí = espacio horizontal no editable).
[*] Nota importante sobre el requisito n.º 3: aunque algunos editores tienen opciones de formato extra ricas, el problema común es que solo se aplican a los llamados 'tokens' (por ejemplo, palabras clave, funciones). Así que tenga en cuenta que no es suficiente. Para entender mejor lo que quiero decir, aquí hay ejemplos concretos de lo que debo hacer:
- establezca la fuente/tamaño para letras cirílicas dentro de cadenas únicamente;
- establecer la fuente/tamaño para los números dentro de los identificadores únicamente;
- establecer la fuente/tamaño para el carácter de guión dentro de una palabra; etc...
Otros criterios (menos importantes):
- debe ser rápido y receptivo, sin mucha hinchazón;
- sería genial si se desarrolla activamente para que al menos exista la posibilidad de que se agreguen algunas características útiles;
- API de secuencias de comandos avanzadas para funciones interactivas, por ejemplo, la capacidad de leer las coordenadas del mouse y detectar el carácter o la línea debajo del cursor del mouse;
- soporte de tabulación adecuado (consciente de la sangría);
- no hay características molestas e intrusivas como algo que parpadea, animaciones, cambio de enfoque, acaparamiento de la CPU y el disco duro, etc.
Pregunta:
Sugiera un editor que admita todas las funciones mencionadas anteriormente.
Incluso si no todo es compatible de fábrica, pero es posible a través de secuencias de comandos/extensión, proporcione también una sugerencia y algunas descripciones.
En otras palabras, incluso si el editor no es exactamente un editor de código, pero puede cumplir con los requisitos, también puede ser una respuesta útil.
No como un ejemplo real, sino solo para ilustrar un enfoque alternativo: por ejemplo, uno puede usar, por ejemplo, Word o Adobe InDesign para editar el código, luego generar fuentes y pasarlas a otras herramientas. Sí, hacerlo sería un poco absurdo para esta tarea, pero solo para decir, por ejemplo, con InDesign, todas las funciones de resaltado y, por ejemplo, la generación de código son posibles mediante secuencias de comandos, por lo que es una opción viable en teoría.
Lo que he probado hasta ahora con listas por característica:
Bloc de notas++
Este editor cumple con muchos requisitos, pero aún así muchas características son limitadas. Súper rápido, sin hinchazón. Se basa en el motor Scintilla, que tiene muchas características avanzadas por delante de su tiempo. Algo es posible a través de complementos. Como nota, desarrollar un complemento básicamente requiere desarrollar una aplicación C++, lo que puede ser todo un desafío.
Así que a mi lista de características:
- Parcialmente. Por ejemplo, para definir resaltado para un idioma personalizado debe usar UDL, pero es limitado (ver 3.). Los lexers incorporados están codificados, faltan guías de desarrollo.
- Sí, por ejemplo, usando el complemento PythonScript, y es bueno.
- Parcialmente. El problema es que no admite coincidencias basadas en expresiones regulares.
Por lo tanto, puedo definir estilos con varias fuentes/tamaños, pero puedo aplicarlo solo a los tokens que están definidos por el lexer (codificado), o a través de UDL, pero UDL está limitado al tokenizador de gramática unificada (sin grupos de operadores personalizados , sin secuencias de coincidencia definidas por el usuario). Básicamente, el compositor de Scintilla admite esto, pero el editor no proporciona esto al usuario, por lo que no hay forma de usarlo directamente.
- No (todas las líneas tienen la misma altura).
- No.
gVIM
Gran editor, súper rápido y personalizable. Pero bastante limitado en características gráficas.
- Sí.
- Sí.
- No. (aquí limitado a fuentes monoespaciadas solamente , pero como un buen bono tiene resaltado basado en expresiones regulares)
- No.
- No.
Código VSC
Lo he estado probando solo por un tiempo, así que no puedo estar seguro acerca de algunas características. Es bastante lento, por lo que en una máquina de gama baja será difícilmente utilizable.
- ???. Parece que tiende a ser extensible para admitir cualquier idioma a través de la extensión, pero la imagen completa no está clara y su desarrollo parece bastante caótico.
- ???. Las extensiones son posibles, pero no pude encontrar instrucciones claras o una guía para desarrolladores. También parece que muchas partes del editor central no son personalizables/accesibles en absoluto.
- No.
- No.
- No.
ivanivan
Mijaíl V
Mijaíl V