English Version




A vuelta con los plugins en Emacs


Introducción


Esta es una serie de artículos sobre Emacs que quiero hacer al menos uno por semana (ya veremos que soy menos constante que una pluma la vuelo) en los que pretendo por un lado traducir en parte al español artículos que me parecen muy interesantes y al mismo tiempo resumirlos un poco y dar mi opinión, todo junto en un batiburrillo propio y personal. Sobre lo de parcialmente traducir es porque aunque sé que es mejor escribir en inglés ya que así se tiene repercusión más internacional y que por otro lado ya todos los navegadores poseen algún traductor integrado, pero aún así el seguir haciendo artículos en español creo que es bueno para la comunidad hispana de Emacs ya que para algunas personas el hecho de que casi todo en Emacs esté en inglés es un problema añadido para adopción de éste.


Ya os adelanto que muchos artículos serán de Irreal, que es un blog sobre Emacs que me encanta.


El sistema de plugins de Emacs


El ser humano por naturaleza tendemos a buscar siempre referencias para poder conocer aquello que desconocemos. Es una virtud y un defecto que tenemos para conocer el mundo que nos rodea en meter en cajitas mentales cosas que pensamos parecidas para poder conocer esas cosas. Es una virtud en el tema que nos permite definir rápidamente el mundo que nos rodea y es malo porque también nos hace acabar en prejuicios o simplificaciones a veces excesivas.


En el mundo de la informática lo vivimos a diario aquellos que no usamos las herramientas más usadas o conocidas. Así la gente mete en el mismo saco Linux, Windows o Apple, cuando uno es un kernel, el otro un sistema operativo y el último una computadora con su sistema operativo integrado. La gente llama a GIMP, el photoshop de Linux, cuando ni es exclusivo de Linux y además en muchas cosas es peor que Photoshop y en otras mucho mejor ya que son software que aunque hagan algo parecido son muy distintos en su desarrollo. Y así con más cosas que seguro que os saltan a la mente como ejemplos.


Pues resulta que en Reddit ya se han preguntado algunas veces que si el sistema de plugins de Emacs es tan bueno como el sistema de plugins que VS Code que suelen comentar que es genial, a pesar de que en la mayoría de los casos no han visto otra cosa, pero ese es otro tema.


La respuesta rápida es que el sistema de plugins de Emacs es mejor que el de VS Code, pero la realidad y profundizando es que Emacs no tiene ningún sistema de plugins, tiene un gestor de paquetes y en el mundo de Emacs hablamos de paquetes y no de plugins porque no tiene nada que ver. Así que voy a intentar explicarlo un poquito.


El no sistema de plugins de Emacs


Los plugins en VS Code y otros IDEs

Para empezar vamos a explicar muy rápido el sistema de plugins de VS Code y otros IDEs. Los programas como los mencionados están escritos en un lenguaje en concreto, por ejemplo C++, y habilitan una API, para que otros desarrolladores puedan añadir nuevas características. Esta API es un sistema donde conociéndola y siguiendo sus reglas puedes modificar las cosas que esa API te deje y en los términos que diga esa API. Es como si yo comprase un coche donde puedo modificarlo pero solo siguiendo unas reglas, de diseño, funcionalidad y agregando solo determinados componentes a ese coche pero dentro de los parámetros que define el fabricante. Además en la mayoría de los casos el lenguaje de programación de los plugins difiere del lenguaje con el que se creó el IDE y eso no es importante pero tiene sus implicaciones.


Los no plugins en Emacs


En Emacs no hablamos de plugins sino de paquetes. Generalizando muchos tenemos varios tipos de paquetes que incluyen:


+ Temas


+ Modos mayores


+ Modos menores


+ Otros


Emacs es una máquina Lisp, lo que quiere decir es que es un interprete de Lisp, en este caso de Elisp, que es el dialecto de Lisp que usamos en Emacs. El tema es que no solo los paquetes usan el mismo lenguaje en el que está mayormente programado Emacs sino que las funciones creadas como paquetes tienen los mismos derechos que las funciones que vienen con el programa, en el argot de Emacs se dicen que todas son ciudadanos de primera, es decir, que están todas al mismo nivel de privilegios y funcionalidad. Además voy a definir que son los modos.


Los modos son funciones que se crean y se empaquetan para que sean fácilmente instalables en Emacs que modifican totalmente Emacs. Los modos menores añaden pequeños cambios o funciones nuevas. Los temas podríamos decir que son modos menores ya que modifican estéticamente a Emacs con diferentes colores y con modificaciones estéticas.


Los modos mayores es muy parecido pero su mayor complejidad y tamaño da la posibilidad de cambiar totalmente la funcionalidad de Emacs, y así podemos transformar Emacs en un gestor de correos, un reproductor multimedia, un lector de noticias, un gestor de mapas, una terminal unix creada desde cero en Elisp, un gestor de bases de datos, etc, etc, etc...... y por supuesto, crear el mejor editor y con mayor flexibilidad que se ha hecho por el momento. De hecho, si alguien se pusiera podría crear un procesador de texto tipo word usando solo Emacs con Elisp o un programa estadístico con generación de gráficos en tiempo real.


Y para terminar, el tema de que cualquier función creada en Elisp sea totalmente funcional en Emacs hace que sea una delicia desarrollar para Emacs.


Me explico, Elisp es un lenguaje interpretado que se puede compilar también. Así, uno puede empezar a programar por ejemplo una serie de funciones que queramos añadir a Emacs, que incluso se pueden escribir en un buffer especial que tiene Emacs que se llama scratch que es para eso, como su propio nombre indica, una vez escrita esa función, puedes ejecutar esa función y si todo está bien, ya tienes esa característica añadida a tu Emacs. Si ya son muchas funciones y quieres que se añadan automáticamente cada vez que inicies Emacs, puedes escribir un fichero con la extensión .el e indicarle a Emacs que lo ejecute al inicio y tendrás todas esas nuevas características en tu Emacs de forma rápida y muy interactiva. Y finalmente, si ya estás contento con tus funciones y por lo que sea son muchas puedes compilar ese fichero y transformarlo en un .elc y se cargará mucho más rápido y tendrás probablemente un modo menor que puedes plantearte el compartirlo con toda la comunidad de Emacs.


En cambio, para hacer un plugin para VS code para empezar hay que tener instalado NPM y Yeoman, uno para descargar librerías y otro para crear una estructura o scaffold del plugin. Vale que la estructura la podríamos hacer a mano, pero el hecho de que sea mejor hacerlo con un programa como Yeoman indica que esa estructura es compleja. Luego, se creará la estructura y se descargará las librerías necesarias, por lo que hay que tener internet, en Emacs, todo lo que necesitas está ya en el Emacs y no se requiere internet una vez instalado para hacer nuestros paquetes.


Bueno, como he dicho en Emacs simplemente ejecutamos el código y en tiempo real ya vemos los efectos de ese código en nuestro editor favorito. En cambio, en VS Code, creamos el código, y lo tenemos que ejecutar, entonces abrirá otra ventana de VS Code con lo que hayamos escrito del plugin y si da error no se abre y bueno, como digo el proceso es mucho más engorroso, mientras que en Emacs es más orgánico.


En Emacs, cualquier persona sin ser programador puede ir de una manera natural añadiendo pequeñas modificaciones para mejorar su experiencia con Emacs de una forma muy sencilla y progresiva y poco a poco se dará cuenta que sabe programar, ya que empezará con pequeñas funciones, modificaciones mayores, modos menores y finalmente modos mayores.


Enlaces



Irreal. Plugins Again



Sistema de extensiones de VS Code vs el de Emacs


https://code.visualstudio.com/api/get-started/your-first-extension



--------------------------------------------------------------------------------------------------------------------------


Si estás viendo este artículo desde un navegador web a través del proxi de flounder, aconsejo que accedas a la dirección de gemini usando un navegador compatible con este protocolo.


Gemini, es un protocolo minimalista que minimiza el uso de recursos del cliente y del servidor reduciendo las emisiones de carbono y además no permite el uso de programas que accedan a tu información personal, por lo que tu privacidad está asegurada.


Usa Gemini, salva al planeta, salva tus datos. Por un futuro mejor.


--------------------------------------------------------------------------------------------------------------------------





















/informatica/emacs/articulos/