Valuta una variabile quando inserisci del testo in un buffer

Oct 29 2020

Quando apro un nuovo file per la codifica, mi piace inserire un'intestazione come questa:

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

Conservo questo testo in un file chiamato headerin ~/.emacs.d/e lo inserisco così:

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

con cui chiamo M+x header. Molto bello! Ho anche una funzione per aggiungere la data:

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

con cui invoco M+x todaydopo aver inserito il testo dell'intestazione per popolare il Date:campo.

D: C'è un modo per unire queste funzioni in modo che la data venga automaticamente inserita dopo Date:quando inserisco il testo dell'intestazione? Ad esempio, posso aggiungere (format-time-string "%Y-%m-%d")dopo Date:nel mio headerfile e valutarlo in qualche modo quando viene inserito?

Risposte

2 aadcg Oct 29 2020 at 22:58

All'interno di GNU Emacs solo la tua immaginazione è il limite :)

Penso che tu stia cercando qualcosa della seguente linea, anche se potrebbero essere necessari alcuni aggiustamenti.

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