From: Thien-Thi Nguyen Date: Wed, 3 Nov 2004 14:28:31 +0000 (+0000) Subject: (vc-cvs-local-month-numbers): Delete var. X-Git-Tag: ttn-vms-21-2-B4~4213 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b44a1825e5b5de262b51dde301a145ec3f59cf98;p=emacs.git (vc-cvs-local-month-numbers): Delete var. (vc-cvs-annotate-time): Incorporate value of deleted var. Remove special-case handling of beginning-of-buffer cruft. Cache ending position (point) and return value in text property `vc-cvs-annotate-time', and consult it on subsequent invocations. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9e6bdf07cb9..91cd415c9fd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,11 @@ 2004-11-03 Thien-Thi Nguyen + * vc-cvs.el (vc-cvs-local-month-numbers): Delete var. + (vc-cvs-annotate-time): Incorporate value of deleted var. + Remove special-case handling of beginning-of-buffer cruft. + Cache ending position (point) and return value in text property + `vc-cvs-annotate-time', and consult it on subsequent invocations. + * vc-cvs.el (vc-cvs-annotate-command): Delete extraneous lines from beginning of buffer. * vc-mcvs.el (vc-mcvs-annotate-command): Likewise. diff --git a/lisp/vc-cvs.el b/lisp/vc-cvs.el index 273700ed6a4..45ff233eb86 100644 --- a/lisp/vc-cvs.el +++ b/lisp/vc-cvs.el @@ -152,12 +152,6 @@ See also variable `vc-cvs-sticky-date-format-string'." ;;; Internal variables ;;; -(defvar vc-cvs-local-month-numbers - '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4) - ("May" . 5) ("Jun" . 6) ("Jul" . 7) ("Aug" . 8) - ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) ("Dec" . 12)) - "Local association list of month numbers.") - ;;; ;;; State-querying functions @@ -605,29 +599,36 @@ encoded as fractional days." (defun vc-cvs-annotate-time () "Return the time of the next annotation (as fraction of days) systime, or nil if there is none." - (let ((time-stamp - "^\\S-+\\s-+\\S-+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): ")) - (if (looking-at time-stamp) - (progn - (let* ((day (string-to-number (match-string 1))) - (month (cdr (assoc (match-string 2) - vc-cvs-local-month-numbers))) - (year-tmp (string-to-number (match-string 3))) - ;; Years 0..68 are 2000..2068. - ;; Years 69..99 are 1969..1999. - (year (+ (cond ((> 69 year-tmp) 2000) - ((> 100 year-tmp) 1900) - (t 0)) - year-tmp))) - (goto-char (match-end 0)) ; Position at end makes for nicer overlay result - (vc-annotate-convert-time (encode-time 0 0 0 day month year)))) - ;; If we did not look directly at an annotation, there might be - ;; some further down. This is the case if we are positioned at - ;; the very top of the buffer, for instance. - (if (re-search-forward time-stamp nil t) - (progn - (beginning-of-line nil) - (vc-cvs-annotate-time)))))) + (let* ((bol (point)) + (cache (get-text-property bol 'vc-cvs-annotate-time)) + buffer-read-only) + (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. + (match-end 0) + (vc-annotate-convert-time + (encode-time 0 0 0 day month year)))))))) + (when cache + (goto-char (car cache)) ; fontify from here to eol + (cdr cache)))) ; days (float) (defun vc-cvs-annotate-extract-revision-at-line () (save-excursion