Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   La Taberna (https://www.clubdelphi.com/foros/forumdisplay.php?f=40)
-   -   IDE sin nombre (https://www.clubdelphi.com/foros/showthread.php?t=89109)

Ñuño Martínez 28-09-2015 14:53:22

IDE sin nombre
 
No es por desmerecer el excelente trabajo de nuestro querido Dec; al contrario. Sin embargo nunca se va a poder contentar a todo el mundo (creo que Woody Allen dijo que “La forma más segura de fracasar es intentar contentar a todo el mundo” o algo así), así que aquí ando en ello.

Hace ya años que llevaba pensando, y hace como dos programé un prototipo, una cosa pequeña. Lo llamé “edit” y llevo desde entonces usándolo de vez en cuando. Me gusta bastante y creo que tiene potencial, pero me cuesta mucho ponerme a añadirle todo lo que había planeado. Principalmente porque he estado haciéndolo con poca planificación por mi parte, pero también porque algunas cosas me parecen muy grandes y me abruma, a pesar de que creo que podría hacerlas sin problema.

Dado lo que estoy trabajando ahora con Gesbit, Allegro.pas y más proyectos laborales, veo que necesito terminarlo. Es una necesidad real, porque ni Vim ni Lazarus, que con todas sus virtudes y defectos es lo que más uso, hacen todo lo que necesito de la forma que lo necesito, y Small Edit no termina de encajarme. No voy a convenceros de que dejéis de usar Small Edit o lo que sea que uséis, ¡ni hablar! Simplemente necesito apoyo moral para terminar mi proyecto estando seguro de que es lo suficientemente distinto y útil como para merecer la pena el esfuerzo.

La idea que tengo es que sea un IDE completo:
  • Gestión de proyectos.
  • Múltiples lenguajes, con posibilidad de añadirnuevos manualmente.
  • Compilación y ejecución, posiblemente también depuración (vía GDB, por ejemplo). Evidentemente variará con el tipo de proyecto. Por ejemplo, si es Pascal compilar, si es PHP, abrir el navegador, etc.
  • Modo de edición Vim ó múltiple (Vim, ISO, IBM...). Lo ideal: que sea programable y de esta forma se elija o cree a discreción.
  • Plantillas de archivos y proyectos, con posibilidad de añadir más.
  • Evidentemente, extensiones.
Os enseño cómo está ahora:

A la izquierda, lista de directorios y archivos (no muestra todos, sólo aquellos que el editor “entiende”), a la derecha, lengüetas con los archivos abiertos hasta el momento. El menú contextual muestra las acciones disponibles para los directorios y archivos. Por desgracia, ahora mismo los directorios no se pueden renombrar ni borrar ya que necesita un trabajo extra, pero lo hará.


Configuración del “Proyecto”.


Configuración del “Entorno”. Lo de “Guardar automáticamente al perder el foco” significa que si cambiamos a otra aplicación, el editor guarda cualquier archivo que tenga la marca “modificado”. Acelera mucho el trabajo, aunque a veces pueda dar problemas al sobreescribir algo. Y no funciona siempre, por ejemplo, al menos en mi Linux, no guarda los archivos si cambias de tarea usando Alt-Tab.


También, e independientemente de la configuración, puede mostrarse y ocultarse la barra de menú pulsando F10, por lo que nunca se pierde.

La lista de lenguajes que "entiende", por ahora, son: Batch (MS-DOS), C/C++, CSS, HTML, INI, Java, Object Pascal, PHP, UNIX shell script, SQL y XML. Podría añadir fácilmente JavaScript, Perl, archivos de diferencia (diff), TeX, Python, VisualBasic y po (i18n), pero o bien no estaban disponibles la última vez que compilé (creo que es el caso de JavaScript), o no me apeteció en su momento (creo que esta fue la razón de no añadir VB, Python ni Perl).

Lo que me estoy planteando es rehacer usar una versión nueva que he hecho de mi BAScript. Es decir, hacer una base mínima con Lazarus y que toda la funcionalidad se haga usando BAScript. La idea detrás de esto es eso permitiría que el IDE se adaptara fácilmente al proyecto añadiendo o modificando funcionalidades mediante scripts.

¿Qué os parece?

dec 28-09-2015 15:07:25

Hola Ñuño,

Hombre, ¡faltaría más! Tienes todo el apoyo moral que necesites, así como otro posible apoyo de otro tipo. Por otro lado, yo creo que Small Editor lo uso yo y una única persona que compró una licencia. Así que ya ves que competencia por parte de Small Editor vas a tener poca. Además de que ahora mismo estoy trabajando en otro proyecto, y, aunque Small Editor no esté abandonado ni mucho menos, lo cierto es que tampoco me planteo añadirle nada nuevo significativo, al menos no ahora mismo.

Y aunque así fuese... ¡una cosa no quita la otra Ñuño! :)

newtron 28-09-2015 17:20:20

¡Trabajo de titanes!

Ánimo porque ese "jardín" es todo lo grande que quieras que sea. :)

Neftali [Germán.Estévez] 28-09-2015 17:42:07

Adelante!!!
Y si te hacen falta "testers"/"conejillos de índias", aquí nos tienes...

Casimiro Notevi 28-09-2015 18:00:33

Muy interesante, yo también tengo un proyecto de IDE abandonado desde hace muchos años, pero, ¡ufff!, vaya trabajo, tendrás que buscar tiempo hasta debajo de las piedras.

Julián 29-09-2015 08:56:45

Si lo has hecho con Lazarus ya estás tardando en compilar una versión para OSX, y aquñi tienes un betatester.

El "fallo" de SmallEditor es precisamente ese: estar sólo para Windows.

Y ya puestos, a ver si os unís y juntais SmalEditor y ÑuñoEdit (y CasiEdit) y haceís algo chuli.

Pol cielto ¿es opensource? Es que si lo fuera tengo alguna idea ... :D

Ñuño Martínez 29-09-2015 10:36:02

Gracias por los ánimos. Así da gusto, joé. :D

Versión para OSX debería haber, pero nunca he intentado un cross-compilling de esos. Lo investigaré.

Y juntarme con Dec, pues bueno, ya estoy arreglando uno de sus trabajos así que tampoco lo veo tan descabellado. :rolleyes:

Lo que voy a hacer es ver si el SyntEdit permite capturar y filtrar pulsaciones de teclas y consigo que funcione un autocomplete, que es lo que más echo en falta ahora mismo. Y también tengo que mirar cómo maneja Lazarus el tema de múltiples idiomas.

Julián 29-09-2015 15:00:58

El autocomplete del synedit funcionaba, y bastante bién, al menos la última vez que lo usé, allá por el año nosecuantos, en el editor de código que iba, o que vá, en la aplicación que hicimos Emilio y yo para el delphiPACK, aquel cd que vendíamos para ayudar a pagar el servidor. Además, iba con la misma combinación de teclas que el ide del delphi.

:)

Ñuño Martínez 02-10-2015 20:30:36

Pues sí funciona el autocomplete ese. En parte ha sido fácil y en parte algo complicado, porque hay que meter las palabras o frases que deben aparecer. Pero bueno, ya funciona y empieza a ser útil.

Aun así, faltan un montón de cosas antes de publicarlo. Para empezar, un nombre y decidir si será de pago o gratuíto o abierto o cerrado o qué...

Aunque me preocupan más otras cosillas, como por ejemplo algunas diferencias entre Windows y Linux (y, seguramente, también MacOS), cómo manejar las extensiones (PascalScript me parece demasiado), todos las cosas configurables que quiero meter (colores, combinaciones de teclas, añadir nuevos lenguajes...), y tal.

Voy a ir pensando qué va a ser lo próximo.

t-edson 15-10-2015 22:34:39

Cita:

Empezado por Ñuño Martínez (Mensaje 497507)
Pues sí funciona el autocomplete ese. En parte ha sido fácil y en parte algo complicado, porque hay que meter las palabras o frases que deben aparecer. Pero bueno, ya funciona y empieza a ser útil.

Te recomiendo que uses mi librería para completado de código:

https://github.com/t-edson/SynFacilCompletion

que es también resaltador de sintaxis y puedes incluir en un XML, todas la gramática de un lenguaje, incluyendo al plegado de código y las palabras para el auto-completado.

Ñuño Martínez 20-10-2015 14:22:18

Hola t-edson, bienvenido al Club.

Precisamente, no hace mucho lo vi en el foro de Lazarus y tengo pendiente echarle un vistazo, a ver cómo funciona.

Por cierto, que todo este tiempo llevo usando el editor "en producción" y no es que lo haya echo yo pero cada vez me gusta más. Por desgracia, el auto-completado da algún problema, o mejor dicho, no funciona como me gustaría. Si el componente que recomiendas funciona más a la Vim, entonces sustituiré el SynEdit por él.

t-edson 20-10-2015 19:34:16

Hola Ñuño.

SynFacilCompletion, no es un componente nuevo, es un resaltador de sintaxis o librería para SynEdit. Si ya usas SynEdit, solo tienes que "acoplarlo" a tu editor para que empiece a trabajar.

Su uso es sencillo (como su nombre "Facil"). Solo necesitas crear un archivo XML, algo así como:

Código:

<?xml version="1.0"?>
<Language name="Pascal" ext="pas">
  <completion>
    var procedure function
  </completion>
</Language>

Y luego cargar este archivo XML, al resaltador SynFacilCompletion:

Código:

 
  hlt := TSynFacilComplet.Create(self);  //my highlighter
  SynEdit1.Highlighter := hlt;  //optional if we are going to use SelectEditor()
  hlt.LoadFromFile('ObjectPascal.xml');  //load syntax
  hlt.SelectEditor(SynEdit1);  //assign to editor

Solo hay que tener en cuenta que SynFacilCompletion es también el resaltador de sintaxis, así que no se puede usar otro resaltador, cuando uses SynFacilCompletion.

Ñuño Martínez 21-10-2015 11:39:03

Me lié con el ATSynEdit. De todas formas tengo que echarle un vistazo a ambos dos, a ver qué tal.

Ñuño Martínez 14-12-2015 13:21:52

Novedades
 
Os cuento:

He estado estos meses utilizando de forma habitual el editor, y la verdad es que estoy bastante contento. También he estado puliendo cosillas según me he ido encontrando incomodidades. Por ejemplo, ahora al cargar un archivo o seleccionar una lengüeta el foco pasa al editor correspondiente, algo que antes no hacía y era bastante molesto; y al cargar un nuevo "proyecto" se cierran todas las lengüetas del proyecto anterior. También he ido cambiando cosas del auto-complete, aunque sigue sin funcionar como quiero (el de Vim es ideal, en mi opinión, pero me temo que nunca llegue a funcionar igual).

He encontrado algunos problemas de difícil solución. Por ejemplo, sigo sin saber por qué al usar [Alt]+[Tab] en mi Fedora no se ejecuta el evento de pérdida de foco, que sí se activa si selecciono otra aplicación con el ratón. También me he encontrado que ocultar el menú en Windows no es buena idea. Quizá con la próxima versión de Lazarus funcione mejor, porque han prometido mejoras, o quizá si uso fpGUI en lugar del GDI en ese sistema operativo sí funcione. Y también en Windows no aparecen los botones de cerrar lengüetas. Esto me ha dado problemas porque poner esa opción en el menú contextual del editor hace que salte una excepción tras cerrar la lengüeta, pero colocándolo en el menú principal funciona perfectamente.

Lo que sí me preocupa es que quizá he ido demasiado lejos sin hacer una planificación clara. Es decir, he ido añadiendo y modificando cosas según iban surgiendo, y los últimos cambios han sido laboriosos porque me he dado cuenta de que (por ejemplo) había métodos en objetos que no le correspondían. Me refiero a que había métodos de gestión de proyecto en la ventana, o acciones de configuración en el proyecto. Tampoco es muy grave porque hasta ahora casi todo ha sido aprender cómo funcionan los componentes de edición, resaltado sintaxis, autocompletado, así como investigar si era posible hacer ciertas cosas, y si algunas ideas que tengo son realmente útiles o no.

Así que, ya el año que viene, me pondré a rehacerlo todo, empezando por una buen esquema de los objetos necesarios, qué hace cada uno y cómo se relacionan entre sí (vamos, un UML). Afortunadamente, buena parte del trabajo será buscar en el código que ya hay, copiarlo y pegarlo en su sitio, así que sin duda tardaré menos en tener una versión mínimamente útil.

Y si encuentro un nombre adecuado, lo publicaré, o no, no sé. Y es que sigo sin haber decidido todavía qué hacer con esta aplicación.

AgustinOrtu 14-12-2015 13:57:43

Cita:

Empezado por Ñuño Martínez (Mensaje 498189)
Me lié con el ATSynEdit. De todas formas tengo que echarle un vistazo a ambos dos, a ver qué tal.

Salio un tal TBCEditor Control en G+, pero no dicen nada de Lazarus. La verdad no lo he probado, pero tiene buena pinta por los screenshot; al parecer viene con varios resltados de sintaxis, soporta code folding y un minimapa del codigo.

Fuerza y suerte en tus andanzas :)

Ñuño Martínez 21-07-2021 12:44:07

Esto es un reflote en toda regla, y lo demás son tonterías. :D Pero es que lo merece.

El proyecto no ha estado parado ni mucho menos. Ha ido despacio, eso sí. Estuvo parado hasta que en 2018 conseguí arrancar de nuevo. Desde entonces comencé una reescritura desde cero, esta vez con un poco más de planificación, y después de todos estos años de más o menos actividad, ayer mismo conseguí que que todos los subsistemas funcionasen. La siguiente imagen muestra el momento en el que el subsistema de extensiones (scripting) funcionó, al fin:



Sí, es Windows XP. Es que por comodidad estaba usando un viejo notebook en ese momento y es lo que tiene. :D También funciona en Linux, así que tengo un buen espectro cubierto.

Como véis, también tiene nombre: Multi-Language Scriptable Development Environment (MLSDE). Seguro que los que sepan márqueting me correrán a gorrazos, pero oye, es lo que único que se me ha ocurrido.

Después de dar una vuelta por GitHub al final he vuelto a SourceForge*. Todavía no voy a publicarlo porque faltan unos mínimos y hay que completar la documentación, pero si queréis echarle un vistazo, tenéis el proyecto disponible para compilar (con Lazarus).

Pues eso. Gracias por vuestra atención. :)
_______________________________

* Aparte de que no termino de cogerle el gusto a GIT y que Microsoft nunca ha sido santo de mi devoción, no hace mucho me enteré de que usan los proyectos de GitHub a su propio criterio ignorando las licencias, que lo han hecho ya dos veces como mínimo. Además, los nuevos dueños de SourceForge han hecho una buena limpieza y han actualizado la plataforma, que de nuevo funciona muy bien.

mamcx 21-07-2021 16:59:40

P.D: Hay dos muy buenas alternativas a GitHub: https://bitbucket.org (el que uso) y https://about.gitlab.com (que tambien puedes hostear de forma directa y privada).

Si tu audiencia es programadores es muy buena idea usar un lugar con mejor "fama". Te aseguro qu source forge tiene la re-mala entre muchos y básicamente es un lugar "muerto" si quieres el chance de que gente se una.

En el caso de git, puedes hacer mirrors de forma trivial (si quieres que source forge sea el ppal y republicas en uno de los otros). Una enorme gracia de usar uno de los hosteadores grandes es que puedes integrar el CI (https://about.gitlab.com/stages-devo...s-integration/) y hacer que con cada commit se compile el proyecto en multiples plataformas y generar instaladores y todo eso. Es un aspecto que ayuda mucho a acelerar el desarrollo ya que te quita un peso extra de encima!

Ñuño Martínez 03-01-2022 20:00:28

Cita:

Empezado por mamcx (Mensaje 541999)
...

Primero, gracias mamcx por las sugerencias. Estuve echándole un ojo a Gitlab, varias veces, pero no terminé de encontrar el enlace para crear una cuenta nueva, o no encontré la forma de hacerlo gratis (fue el año pasado, ya olvidé lo que pasó :D). Todavía no revisé Bitbucket pero lo haré y una vez tenga ambas plataformas controladas elegiré una y trasladaré el proyecto.

Mientras tanto, he decidido sacar una primera versión, aunque todavía el funcionamiento es muy áspero. Aun así sirve como prueba de concepto. Si os queréis arriesgar, podéis bajaroslo desde esta página. Podéis elegir entre el clásico instalador de Windows, un zip de descomprimir-y-usar (podríamos decir que es un portable de esos, una de las ventajas de este IDE :cool:) o bajaros el código fuente y compilarlo vosotros (sólo Lazarus, pero funciona en Linux y tal vez incluso en Mac). En cualquier caso, leeros la documentación (está en inglés, que no he tenido tiempo de traducirla).

Ahora el siguiente paso que tengo previsto es mejorar el motor de scripts y hacerlo más manejable y cómodo, que sé que FORTH no tiene muchos adeptos. Y mientras uso el IDE quizá ir puliendo alguna cosilla más.

Ya me diréis qué tal.

Ñuño Martínez 06-01-2022 13:23:31

Acabo de subir una actualización de corrección de bug, para que no haya quejas del servicio. :cool:

Es un error chorra, pero así también he actualizado algunas cosas que también daban problemas o no funcionaban del todo bien.

La próxima no será tan rápida. :D

Ñuño Martínez 21-06-2022 20:24:01

Bueno, pues esto marcha.

Ayer subí la versión 0.1.1, que sigue teniendo un montón de carencias, pero corrige algunos errores y lima unas pocas asperezas. Quizá lo más interesante es que ahora también se pueden escribir extensiones con una versión simplificada del lenguaje C (y tengo pensado añadir una versión reducida de QuickBASIC para la próxima). También he incluido una extensión que añade algunas utilidades que quizá ayuden a escribir código Pascal más rápido.

Si queréis darle un tiento, pues dadle a la página de descargas. Ya sé que dije que miraría lo de GitLab, pero como no tengo mucho tiempo libre pues no lo he hecho todavía, he preferido programar. Pero sí, terminaré trasladando el proyecto a GitLab en algún momento.


La franja horaria es GMT +2. Ahora son las 13:55:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi