Bueno antes de ver la insercion de texto como tal voy a hablaros de algo que me ha pasado y es que tengo un plugin propio de Emacs en ese plugin tengo una funcion que llama a la funcion de insercion ya que al cargar en Emacs un archivo con una funcion tu puedes acceder cuando quieras a esa funcion, cosa que ya explicare mejor cuando veamos funciones en Elisp. En esta parte del curso veremos como insertar texto en otros archivos y como solicitar entrada de texto al usuario
Insercion
Aqui veremos como insertar texto en un archivo usando codigo elisp, para lo cual crearemos un archivo elisp que contendra lo siguiente (insert "Hola")
, ahora vamos a acceder a un archivo de prueba que yo llame prueba.txt, ahora vamos a usar la funcion load-file
con esta funcion podemos cargar el archivo elisp mmientras emacs esta ejecutandose en ese archivo para acceder a las funciones elisp desde dentro de emacs usamos el atajo Alt + x
siendo M-x
en la jerga de Emacs de hecho si usais Emacs lo vereis de esta manera lo cual hara que os aparezca un recuadro para escribir la funcion, a mi me aparece de otra manera diferente a la forma por defecto pero porque lo he configurado:
Ahora cargaremos el archivo para lo cual le damos a Enter y os dira que archivo quereis cargar a mi me aparece de otra manera pero porque lo tengo configurado
Ahora hacemos click en ese archivo el archivo sera cargado y el archivo prueba.txt
pasara de estar así:
A estar con el texto seleccionado en este caso Hola
Como podéis ver me aparece el disquete porque no guarde los cambios, esto en la configuración normal de Emacs solo aparecería resaltado y eso es porque yo el modeline es que como se le llama a esa línea de abajo con el nombre del archivo lo tengo configurado de forma específica, y algunos os estaréis preguntando y esto para qué puede ser útil, pues puede ser útil porque si lo combinas con otras funciones Elisp puedes crear un archivo que tenga cosas especificadas por ti escritas e incluso yo lo uso a traves de una funcion, para escribir una serie de caracteres concretos cuando me viene bien, que tengo que hacerlo más de una vez y así no los escribo manualmente.
El motivo por el cual lo hago desde una funcion propia de mi plugin es porque asi desde lo que aparece al usar M-x
me aparece como una funcion disponible a utilizar aqui, el ejemplo con mi plugin:
Esta funcion hace un insert más una serie de caracteres especificos y puedo llamarla cuando lo necesite mientras que lo que yo hice con el archivo antes requiere que tu carges el archivo manualmente, ya que si hicieras que Emacs lo cargue te pondria ese caracter todo el rato ya que ejecutaria el insert mientras que de esta manera cargas el archivo y solo tienes que acceder a la funcion cuando lo necesites
Inputs
Ahora veremos como hacer que se solicite una entrada cosa que desde emacs al cargar la funcion que solicita entrada nos la pondria en la linea debajo del modeline aparecen mensajes
Para eso usaremos (read-string "Algo indicativo para el usuario")
pero cuando cojemos un input es para usarlo es para poder usarlo luego en otro sitio para lo cual podemos hacer algo tipo: (defvar input (read-string "Que quieres:"))
esto hara que te pida un input de la siguiente manera:
Aunque si lo ejecutas desde eshell o ejecutas la funcion de una manera similar a lo que os mostre con una funcion accesible desde el menú que se abre con M-x
dentro del editor abierto te aparecera en la linea debajo del modeline, que ya explicamos antes, el espacio para el input de la siguiente manera
Ahi aparece el campo de introduccion de texto, para que introduzcas lo que desees en la siguiente parte veremos funciones para hacer cosas como la funcion organizer-item que os mostre