Evaluar una variable al insertar texto en un búfer

Oct 29 2020

Cuando abro un archivo nuevo para codificar, me gusta insertar un encabezado como este:

#####################################################################   
# Purpose:
# Author: me ([email protected])
# Date:
#####################################################################   

Guardo este texto en un archivo llamado headeren ~/.emacs.d/y lo inserte este modo:

;; Insert header to file 
(defun header()
  "Insert header into file"
  (interactive)
  (insert-file "~/.emacs.d/header")) 

con el que llamo M+x header. ¡Muy genial! También tengo una función para agregar la fecha:

;; Insert today's date
(defun today ()
  "Insert today's date"
  (interactive)
  (insert (format-time-string "%Y-%m-%d")))  

con el que invoco M+x todaydespués de insertar el texto de mi encabezado para completar el Date:campo.

P: ¿Hay alguna forma de combinar estas funciones de manera que la fecha se inserte automáticamente después de Date:que inserte el texto de mi encabezado? Por ejemplo, ¿puedo agregar (format-time-string "%Y-%m-%d")after Date:en mi headerarchivo y evaluarlo de alguna manera cuando se inserta?

Respuestas

2 aadcg Oct 29 2020 at 22:58

Dentro de GNU Emacs, solo tu imaginación es el límite :)

Creo que está buscando algo similar a lo siguiente, aunque es posible que se necesiten algunos ajustes.

(defun header()
  "Insert header into file"
  (interactive)
  (insert-file "~/.emacs.d/header")
  (re-search-backward "Date:")
  (insert (format-time-string "%Y-%m-%d")))