Esiste una modalità per aggiornare automaticamente gli anni di copyright nei file?


21

Di solito in questo periodo dell'anno le persone iniziano a rendersi conto che il loro anno di copyright non è aggiornato nei loro file. Ciò è particolarmente fastidioso se ti piace inserire il copyright in ogni file sorgente. Mi chiedevo se emacs potesse aiutare qui.

Esiste una modalità che aggiorna automaticamente l'anno del copyright in un file? Idealmente, imposterei la modalità con il mio nome e le mie affiliazioni, in modo che aggiorni il copyright solo per quelli. Inoltre aggiornerebbe automaticamente il copyright solo quando viene apportata una modifica (anche se sarebbe bello avere anche un modo semplice per apportare una modifica in blocco a un progetto).


Non importerebbe molto in quale anno scrivi poiché il diritto d'autore della convenzione di Berna è almeno la vita di +50 anni in tutto il mondo.
matematico

Risposte:


24

Puoi usare la copyright-updatefunzione. Vorrei leggere i documenti per la funzione. e altri all'interno copyright.elper maggiori informazioni, ma come semplice esempio, se ho:

;; Copyright (C) 2014, Jordon Biondo

in un file ed eseguito copyright-updatedal minibuffer, aggiorna la riga per dire

;; Copyright (C) 2014, 2015, Jordon Biondo

Puoi fare in modo che la funzione rimuova il vecchio anno, se lo desideri.

Per gestire gli aggiornamenti automatici, è possibile aggiungere la funzione before-save-hookall'elenco.

Per fare un aggiornamento batch, utilizzare il comando copyright-update-directory.

La biblioteca del copyright ha molte caratteristiche e modi per personalizzarla, suggerirei di aprire la biblioteca per iniziare a vedere come puoi adattarla alle tue esigenze.


3
Questi sono i tempi in cui sono ammirato Emacs.
PythonNut,

6

Ecco cosa uso:

(when (fboundp 'copyright-update)
  (setq copyright-names-regexp "Monnier\\|Free Software")
  (add-hook 'before-save-hook #'copyright-update))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.