Function: vc-cvs-annotate-time
vc-cvs-annotate-time is a byte-compiled function defined in
vc-cvs.el.gz.
Signature
(vc-cvs-annotate-time)
Documentation
Return the time of the next annotation (as fraction of days) systime, or nil if there is none.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-cvs.el.gz
(defun vc-cvs-annotate-time ()
"Return the time of the next annotation (as fraction of days)
systime, or nil if there is none."
(let* ((bol (point))
(cache (get-text-property bol 'vc-cvs-annotate-time))
(inhibit-read-only t)
(inhibit-modification-hooks t))
(cond
(cache)
((looking-at
"^\\S-+\\s-+\\S-+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): ")
(let ((day (string-to-number (match-string 1)))
(month (cdr (assq (intern (match-string 2))
'((Jan . 1) (Feb . 2) (Mar . 3)
(Apr . 4) (May . 5) (Jun . 6)
(Jul . 7) (Aug . 8) (Sep . 9)
(Oct . 10) (Nov . 11) (Dec . 12)))))
(year (let ((tmp (string-to-number (match-string 3))))
;; Years 0..68 are 2000..2068.
;; Years 69..99 are 1969..1999.
(+ (cond ((> 69 tmp) 2000)
((> 100 tmp) 1900)
(t 0))
tmp))))
(put-text-property
bol (1+ bol) 'vc-cvs-annotate-time
(setq cache (cons
;; Position at end makes for nicer overlay result.
;; Don't put actual buffer pos here, but only relative
;; distance, so we don't ever move backward in the
;; goto-char below, even if the text is moved.
(- (match-end 0) (match-beginning 0))
(vc-annotate-convert-time
(encode-time 0 0 0 day month year))))))))
(when cache
(goto-char (+ bol (car cache))) ; Fontify from here to eol.
(cdr cache)))) ; days (float)