Elisp(Emacs Lisp) - Curso Parte 1: Conceptos basicos

Informo que yo no soy un experto de Emacs Lisp (llamado normalmente Elisp) yo como usuario de Emacs he usado Elisp para configurar mi editor y crear un plugin de uso principalmente personal para mi propio flujo organizativo, pero enseñare algunas cosas

Cosas basicas antes de empezar

En primer lugar vamos a mostrar un poco como es la sintaxis de Elisp para que os hagais una idea de que os vais a encontrar

(message "Hola mundo")

Tambien se puede usar la sentencia (print "Hola") y tambien puede imprimir texto
Este es un codigo simple que nos muestra la palabra hola mundo, vamos a verficarlo por suerte para nosotros Emacs es en esencia un interprete de Lisp con la funcionalidad para editar texto por lo que podemos correr un archivo con codigo Elisp usando el comando emacs --script nombre.el pero desde emacs tenemos una shell llamada eshell que permite ejecutar codigo elisp por si mismo, esta eshell tambien permite usar comandos como ls, echo, y demás.

2024-09-09T13-58-37

Como podeis ver ene el ejemplo anterior usamos la funcion message que es para mostrar texto cosa que normalmente se hace en la barra para mensajes del buffer como podeis ver a continuacion
2024-09-09T13-59-45

Como podeis ver al ejecutar el codigo Elisp mediante eshell tambien nos aparece en la seccion de mensajes del buffer cosa de la que ya hablaremos.

Aqui un ejemplo de como se correria codigo elisp, desde un archivo:

Vale ahora que sabemos que podemos imprimir texto usando la sentencia (message "Hola") y el string del texto, pero si tratamos de hacer lo mismo con un numero vemos que da error

Al parecer message solo sirve si tenemos el numero como un string, con comillas

Operaciones aritmeticas

Vale ahora vamos a ver otra de las partes de Elisp que es más interesante a mi parecer y es las operaciones aritmeticas, a diferencia de lenguajes como Python, las operaciones aritmeticas en los lenguajes tipo Lisp son usando la Notación Polaca, que quiere decir esto pues quiere decir en esencia que el operador es decir signos como el de sumar, dividir, multiplicar o restar van al principio de la operacion aqui un ejemplo de notación polaca: + 23 45 eso seria 23 + 45, vamos a ver el resultado en Elisp

2024-09-09T14-10-33

Como podemos ver aqui el resultado es 68, cosa que puedes averiguar sumandolo tu mismo, y esto mismo aplica a las multiplicaciones o divisiones

2024-09-09T14-11-55

2024-09-09T14-12-04

Variables

Ahora veremos como tratar con las variables cosa que es un poco curiosa de hacer ya que aqui hay varias formas de hacerlo dependiendo del caso.

Cuando declaramos la variable por primera vez en el codigo solemos usar defvar (defvar union "hola").

Cuando la variable ya ha sido declarada y tiene un valor solemos usar setq para cambiar ese valor (setq union 3)

Muy bien todo eso es muy interesante pero ahora como muestro esa informacion en pantalla pues muy facil eso se hace de la siguiente manera

Como podeis ver declaramos la variable en la funcion message y yo puse el siguiente “%s” eso lo que hace es que la variable se muestre cuando añadimos algo propio a la funcion message. Ejemplo:

Pero si la variable esta sola podemos simplemente usar message y el nombre de la variable de la siguiente manera:

Ahora vamos a analizar setq

Como podeis ver declaramos la variable con defvar y luego cambiamos el valor a un numero con setq ya que como podeis ver la funcion message arroja el mismo fallo que al mostrar numeros, si quereis que muestre el numero solo teneis que añadir “%s” tal y como vimos antes para cuando la variable tiene su propio texto y lo mostrara ya que lo tratara como un string ya que podria decirse que la funcion message pasaria el valor de la variable por ese string, al menos esa seria una manera facilmente entendible de explicarlo

Bueno con eso esta primera parte se acaba, os lo recuerdo no soy un experto pero si se mis cositas en la proxima entrega veremos como solicitar input al usuario y como insertar texto en un archivo usando elisp. Tambien puedes usar setq para declarar una variable por primera vez pero normalmente se usa defvar

← Indice
Siguiente →

4 Me gusta

¡Genial! Tengo que conocer esto aunque sea un poco. Gracias por compartir. :ok_hand: :ok_hand: :ok_hand: :ok_hand:

Realmente Lisp es un lenguaje que me interesa mucho (me leí dos páginas de un libro), aunque no puedo decir lo mismo de Emacs, hay alguna forma no tan picha para montar un entorno de Lisp en neovim?

La verdad no tengo idea, actualmente solo uso Emacs y nano, y hablando del curso está enfocado en Elisp que es la variante de Lisp para usar en Emacs, además hay cambios en las diversas variables asi que es un mundo complejo, o sea no es un entrono Lisp en general es un entorno Elisp para hacer cosas con Emacs, tal como dice en el titulo es Emacs Lisp, en Emacs Lisp, emacs es el interprete de esta version de Lisp

1 me gusta