(defun vc-print-log-setup-buttons (working-revision is-start-revision limit pl-return)
"Insert at the end of the current buffer buttons to show more log entries.
In the new log, leave point at WORKING-REVISION (if non-nil).
-LIMIT is the current maximum number of entries shown. Does
-nothing if IS-START-REVISION is non-nil and LIMIT is 1, or if
-LIMIT is nil, or if PL-RETURN is `limit-unsupported'."
+LIMIT is the current maximum number of entries shown, or the
+revision (string) before which to stop. Does nothing if
+IS-START-REVISION is non-nil and LIMIT is 1, or if LIMIT is nil,
+or if PL-RETURN is `limit-unsupported'."
;; LIMIT=1 is set by vc-annotate-show-log-revision-at-line
;; or by vc-print-root-log with current-prefix-arg=1.
;; In either case only one revision is wanted, no buttons.
(when (and limit (not (eq 'limit-unsupported pl-return))
(not (and is-start-revision
- (= limit 1))))
+ (eql limit 1))))
(let ((entries 0))
(goto-char (point-min))
(while (re-search-forward log-view-message-re nil t)
(cl-incf entries))
- (if (< entries limit)
+ (if (or (stringp limit)
+ (< entries limit))
;; The log has been printed in full. Perhaps it started
;; with a copy or rename?
;; FIXME: We'd probably still want this button even when
Leave point at WORKING-REVISION, if it is non-nil.
If IS-START-REVISION is non-nil, start the log from WORKING-REVISION
\(not all backends support this); i.e., show only WORKING-REVISION and
-earlier revisions. Show up to LIMIT entries (non-nil means unlimited)."
+earlier revisions. Show up to LIMIT entries (non-nil means unlimited).
+LIMIT can also be a string, which means the revision before which to stop."
;; Don't switch to the output buffer before running the command,
;; so that any buffer-local settings in the vc-controlled
;; buffer can be accessed by the command.