Évaluer une variable lors de l'insertion de texte dans un tampon

Oct 29 2020

Lorsque j'ouvre un nouveau fichier pour le codage, j'aime insérer un en-tête comme celui-ci:

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

Je garde ce texte dans un fichier appelé headerdans ~/.emacs.d/et je l' insère comme ceci:

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

avec lequel j'appelle M+x header. Très cool! J'ai aussi une fonction pour ajouter la date:

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

avec lequel j'invoque M+x todayaprès avoir inséré mon texte d'en-tête afin de remplir le Date:champ.

Q: Existe - t-il un moyen de fusionner ces fonctions de sorte que la date soit automatiquement insérée après l' Date:insertion de mon texte d'en-tête? Par exemple, puis-je ajouter (format-time-string "%Y-%m-%d")après Date:dans mon headerfichier et l'évaluer d'une manière ou d'une autre lorsqu'il est inséré?

Réponses

2 aadcg Oct 29 2020 at 22:58

À l'intérieur de GNU Emacs, seule votre imagination est la limite :)

Je pense que vous cherchez quelque chose du genre suivant, même si certains ajustements pourraient être nécessaires.

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