Elisp(Emacs Lisp) Curso Parte 3: Trabajando con funciones

En esta parte del curso empezaremos a trabajar con funciones para lo cual usaremos el siguiente formato:

(defun nombre-funcion ()
 "Documentacion basica de la funcion"
 (interactive)
 (find-file "directory/archivo.org")
)

Bien esta es una funcion de ejemplo seria para acceder a un archivo especifico desde el editor, como podeis ver la parte de (interactive) hace que la funcion sea interactiva lo que significa que podemos interactuar con ella por ejemplo desde nuestro editor cosa muy importante a recordar junto con los parentesis que os puse ya que sera necesaria para luego.

Bien ahora imagínate que queremos una funcion que requiera recojer una entrada en elisp podemos hacerlo de la siguiente manera:

(defun introduccion (text)
(interactive
  "sQue quieres:")
(message "Quiero %s" text))

Esta función te pregunta que es lo que quieres y lo añade abajo, también podemos hacerlo para datos de tipo numérico cambiando la s que esta antes de Que quieres por una n, pero también podemos hacerlo con read-string como vimos antes en cuyo caso seria de la siguiente manera:

(defun introduccion (text)
(interactive
  (read-string "Que quieres:"))
(message "Quiero %s" text))

Y de esta manera funcionaria igual para datos de tipo texto aunque bueno eso seria para listas realmente o al menos es la forma más comun perdon pero es que de esto no se mucho lo que sea si no usas listas usad el metodo anterior, pero tambien podemos usar read-number para hacerlo con numeros y podemos usar read-directory-name para solicitar un directorio y read-file-name para seleccionar un nombre de archivo. Tambien se utiliza “%d” cuando se habla de datos de tipo numerico.

Aqui os dejo un ejemplo de funcion:

(defun organizer-item (writed_object)
  "Creacion de un item checkbox, concepto almacenado en WRITED_OBJECT."
  (interactive
    "sIntroduce objeto al que se refiere el checkbox:")
   (insert (format "- [ ] %s" writed_object)))

Esta funcion pertenece a un plugin de Emacs que estoy desarrollando y que aun tengo en pañales, lo hice con “sLo que sea” por que no da fallo ya que creo que realmente lo del read-string solo se puede usar en algunos contextos informo que esta parte con la funcion interactive no es algo en lo que sea experto

Además podeis crear funciones en vuestro archivo de configuracion de emacs que aprovechen paquetes que teneis instalados lo que permitira sin duda mejorar vuestro flujo de trabajo. Arriba de interactive como especifique esta la documentacion basica de la funcion el WRITED_OBJECT en mayusculas lo tuve que poner no tanto por requerimientos tipo sino el programa no funciona sino por que lo indicaba el editor e interprete que es Emacs

La proxima parte ira de la estilizacion del codigo y guias generales no digo que lo que hicimos este mal pero a la hora de dejarlo en un archivo digamos hay cierta manera de acomodar el codigo, son como unas convenciones pero os lo explicare en la siguiente parte.

De hecho cuando tienes una funcion en Elisp en un archivo de codigo y lo cargas en Emacs, la funcion aparece las funciones aparecen listadas de la siguiente manera en el menu accesible mediante Alt + x o M-x a la manera de Emacs, creo que esto ya lo mencionado pero por si acaso lo digo otra vez:

Estas son las funciones que tengo programadas en un plugin que cree en mi plugin de Emacs, no niego que a lo mejor quite las mas inutiles, las que tienen entre parentesis algo en color como purpura en el caso que os muestro es porque tengo esa funcion asignada a un atajo de teclado

← Anterior
Siguiente →

3 Me gusta