(copyright-fix-years): New command.
authorKim F. Storm <storm@cua.dk>
Tue, 1 Mar 2005 10:14:48 +0000 (10:14 +0000)
committerKim F. Storm <storm@cua.dk>
Tue, 1 Mar 2005 10:14:48 +0000 (10:14 +0000)
lisp/emacs-lisp/copyright.el

index 3d160f5..dcb6818 100644 (file)
@@ -177,6 +177,41 @@ version \\([0-9]+\\), or (at"
     nil))
 
 
+;;;###autoload
+(defun copyright-fix-years ()
+  "Convert 2 digit years to 4 digit years.
+Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
+  (interactive)
+  (widen)
+  (goto-char (point-min))
+  (if (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
+      (let ((s (match-beginning 2)) (e (make-marker))
+           last)
+       (set-marker e (1+ (match-end 2)))
+       (goto-char s)
+       (while (and (< (point) (marker-position e))
+                   (re-search-forward "\\([^0-9]\\)\\([0-9]+\\)[^0-9]"
+                                      (marker-position e) t))
+         (let ((p (point))
+               (sep (match-string 1))
+               (year (string-to-number (match-string 2))))
+           (goto-char (1+ (match-beginning 0)))
+           (unless (= (char-syntax (string-to-char sep)) ?\s)
+             (insert " "))
+           (if (< year 100)
+               (insert (if (>= year 50) "19" "20")))
+           (goto-char p)
+           (setq last p)))
+       (when last
+         (goto-char last)
+         (let ((fill-prefix "     "))
+           (fill-region s last))
+         )
+       (set-marker e nil)
+       (copyright-update nil t))
+    (message "No copyright message")
+    (goto-char (point-min))))
+
 ;;;###autoload
 (define-skeleton copyright
   "Insert a copyright by $ORGANIZATION notice at cursor."