Como con la mayoría de las cosas, estoy seguro de que este concepto se ha probado antes, simplemente no me he encontrado con editores que usen lo que he denominado 'formato virtual'. El principio es que hay un margen izquierdo flotante que simula el efecto del espacio de relleno / caracteres de tabulación que el desarrollador o el editor mismo insertan convencionalmente para formatear el código. El editor analiza continuamente el código (incluso cuando está comentado) a medida que escribe y calcula la sangría requerida en función del contexto donde se encuentra cada avance de línea
Estoy desarrollando esta idea trabajando específicamente con un editor XML, ya que XML tiene algunos problemas peculiares con el formato de los caracteres y tiende a estar muy anidado, sin embargo, creo que muchos de los principios aún se mantienen para el código convencional.
¿Ha experimentado la codificación con una herramienta de este tipo o tiene una opinión sobre si ayudaría o dificultaría? ¿Causaría problemas con los sistemas de control de versiones? (detecta y elimina todos los caracteres de relleno existentes)
A menos que lo haya probado, el comportamiento de dicha herramienta es difícil de describir, parece convencional hasta que realmente comienza a editar. Puse un video de screencast que muestra un prototipo en acción que demuestra la edición de XML, cambiando su jerarquía y haciendo operaciones de arrastrar / soltar y copiar y pegar, y luego cómo el formato se rompe / arregla cuando se escriben caracteres no válidos.
Editar Todas las respuestas / comentarios han sido negativos hasta ahora, por lo que para intentar equilibrar el equilibrio, hay que pensar en algunos beneficios del formato virtual:
- No más debates sobre estándares de formato, solo coloque saltos de línea donde eso se ajuste a su convención elegida / obligatoria
- Cuando el espacio es escaso (en un libro / blog / documentación) puede ajustar las palabras pero aún así obtener una sangría perfecta
- Cada bloque de código puede tener un 'controlador de mouse' inmediatamente adyacente al lugar donde comienza, no apretado en el borde de la pantalla; haga clic aquí para seleccionar el bloque completo o el bloque interno
- Arrastra, suelta y olvida: se vuelve viable por primera vez
- No pasa tiempo reformateando el código de otras personas
- No hay código con formato incorrecto (en el sentido de que no hay ninguno, solo el renderizado)
- Usar Retroceso en lugar de Ctrl + Retroceso mantiene los dedos en las teclas de guía del teclado
- Procesamiento flexible: adapte el formato procesado a su entorno, ¿alguien intentó leer el código en un teléfono móvil / tableta de pantalla pequeña?
- Tenga en cuenta que hay aproximadamente un 25% menos de caracteres editables (en una muestra XSLT), ¿eso no tiene beneficios de eficiencia?
Editar - Conclusiones hasta ahora
Los desarrolladores han establecido herramientas y métodos de trabajo que superan eficientemente la mayoría de las desventajas inherentes al uso de caracteres de relleno utilizados para la sangría.
Existe la preocupación de que la eliminación de caracteres de formato afectará negativamente a algunas herramientas de diferenciación.
Los desarrolladores desean la flexibilidad para 'ajustar' el formato de tal manera que el renderizado automático no pueda manejarlo.
La eliminación de espacios / pestañas iniciales significa que se necesita una herramienta 'consciente del código' capaz de formatear el código para revisar dicho código de manera eficiente; un editor de texto sin formato no mostraría formato.
Aquellos que sienten que puede haber algunos beneficios hipotéticos (a la sangría virtual), tienen la opinión de que las desventajas superan esos beneficios potenciales, de manera concluyente .
Editar - Veredicto
La percepción de los obstáculos y los pocos beneficios (si los hay) es tal que no sería prudente para mí, como desarrollador exclusivo, seguir este concepto de edición libre de espacio para los idiomas generales. Sin embargo, para XML / XSLT (debido a su tratamiento especial del espacio en blanco), parece haber al menos algún acuerdo de potencial.
Editar - Producto enviado
A pesar del sentimiento generalmente negativo que se encuentra aquí, seguí adelante y envié al editor. Hice una versión gratuita con la esperanza de que traiga críticas en forma de problemas más concretos, basados en la experiencia real. De manera algo frustrante, no ha habido quejas hasta el momento (de hecho, apenas hay comentarios sobre el volumen de descarga). Me gustaría pensar que esto se debió a que los usuarios se ajustaron tan bien a la idea que lo ven como un "¿y qué?" tipo de característica, pero no hay forma de saber ...
fuente
Respuestas:
El mayor problema sería cómo aparecerían los archivos en otras herramientas, especialmente en las herramientas de control de versiones. Los finales de línea son importantes para estas herramientas. No me gustaría ver una pantalla de fusión en la que tengo una clase completa en una línea e intentar fusionar una parte del texto en la columna 347.
fuente
Eso seria genial. Emacs hace más o menos esto, y en su mayoría lo hace bien. ¿Has probado el modo nXML de Emacs? ¿Cómo mejorarías en eso?
No puede crear un nuevo editor hasta que haya probado lo que ya está disponible.
De todos modos, la sangría debe guardarse en el archivo de salida, para que el archivo se pueda ver con otras herramientas. No es probable que adopte un nuevo editor a menos que admita la personalización en tiempo de ejecución como Emacs.
fuente
cat
He visto esta idea antes, pero nunca la he visto funcionar. La mayoría de las veces, cuando he visto la idea de llegar, ha sido derribado por todos los desarrolladores por ahí - o cuando se ha puesto en práctica, lo que hizo que el control de versiones prácticamente inútil como una simple visualización de código de plegado cambiaría el archivo y más confunden La herramienta diff. (Un ejemplo de lo malo que es esto es el Witango Development Studio).
Puedo pensar en varios obstáculos que su editor tendría que superar para ser útil para muchos desarrolladores:
diff -uw
comando * nix . (¡Sin diferencias espurias!)No es necesario decir que es obvio que esto requerirá cierta cantidad de metadatos sobre el formato existente del archivo. Es probable que desee mantenerlo separado de las fuentes, pero mantenerlo sincronizado con un repositorio en constante cambio probablemente sea bastante difícil.
Como usuario de Vim, también opino que el editor debe respetar las modelos de Vim, Emacs y otros editores y preservar el formato proscrito de la línea de modelado, independientemente de lo que finalmente muestre.
En mi opinión, los requisitos para dicho software lo hacen insostenible. Demasiados usuarios esperarán demasiado de él con demasiada frecuencia para que un proyecto de este tipo tenga éxito.
fuente
Solución, utilizando archivos de configuración de formateador basados en texto (por ejemplo, XML):
Tener un formateador personal configurado por el desarrollador individual.
Almacene este formateador localmente.
Los archivos se cargan y editan con formato local.
Pueden cambiar libremente su estilo de formato sin romper nada.
El formateo automático se puede desactivar para mostrar y editar archivos sin formato.
Tener un formateador de equipo mínimo configurado para el estándar del equipo.
Almacene este formateador en el control de versiones del equipo.
Los archivos se guardan con formato de equipo como alternativa para otras herramientas.
Las diferencias no sufren problemas de formato.
Es ridículo preocuparse por la economía de guardar archivos sin espacios en blanco extraños, por lo que en realidad no pierde nada al guardar los archivos con un formato definido por un estándar del equipo. En el caso de un desarrollador en solitario, podría ofrecer la posibilidad de tener el formato de visualización en espejo (para el "equipo" de uno).
Cuando el formateador es insuficiente, tiene dos opciones viables:
Exponer una interfaz para formateadores personalizados.
Bien hecho, esta es la mejor solución.
Hecho mal, es lo peor.
Permitir anulación manual de formato automático.
La usabilidad no sufre: considere Ctrl- (Enter | Tab | Space).
La cordura sí, ¿dónde guarda este formato? ¿Vos si?
fuente
Estaría de acuerdo con que el código se formatee automáticamente si el lenguaje no fuera sensible al formato tos Python tos .
Emacs hace que el formateo de Lisp sea realmente agradable, y se formateó sobre la marcha, estaría muy feliz. No soporto la inserción automática de parens u otros delimitadores: ninguno de los autoinsertadores que he intentado lo acerca a la forma correcta de cómo escribo.
fuente
Me encanta la idea en concepto . Y aunque puede tener éxito, todavía tengo que encontrar un editor que haga lo suficiente todo lo que quiero que haga en términos de formato. Aquí hay algunos obstáculos (IMO):
¿Podría crear algo que cumpla con la mayoría de los criterios razonablemente bien? Probablemente. Pero nosotros, los programadores, somos quisquillosos, quisquillosos y detestamos cambiar, y saltaremos a la primera señal de problemas. Aquí su problema será si la salida marca a alguien más en el equipo de desarrollo, o si no funciona 100% bien con el sistema de versiones, o si no formatea mi código exactamente o si malinterpreta el idioma y sangra mal mi código, o si se retrasa un milisegundo más de lo que esperaba. Porque, por mucho que me guste la idea, saltaré a mis editores preferidos en un instante.
fuente
Existe un enfoque aún más radical: un editor semántico puro. Un IDE trata con un código que incluso se representa internamente como un AST, no como un texto plano. Ver JetBrains MPS por ejemplo.
fuente
Ahora que he publicado el editor XML descrito en mi pregunta, estoy en una posición mejor (pero no ideal) para intentar responder esto yo mismo, así que haré lo siguiente:
Después de más de 500 descargas en menos de 2 semanas, la reacción a este nuevo concepto innovador en formato de código dinámico ha sido ...
NULO
Sin quejas, sin elogios. Mi interpretación (esperanzada) de esto es que la gente solo quiere y espera un editor que se sienta normal y no estropee su código. Los usuarios apenas notarán que su formato es completamente virtual y la evidencia sugiere que les importa aún menos.
Sin embargo, sería un error leer demasiado sobre esta no reacción, esta herramienta es gratuita y, desafortunadamente, esto significa que al menos algunos usuarios estarán menos inclinados a criticar. Si no les gustó, pueden haberlo descartado y haber usado otra cosa.
fuente