From: Lars Ingebrigtsen Date: Tue, 19 Jan 2021 16:26:01 +0000 (+0100) Subject: Only show "2x entries" i vc log buffers if needed X-Git-Tag: emacs-28.0.90~4213 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3c584438552f8d01651d7b9358eae5ce8da81fae;p=emacs.git Only show "2x entries" i vc log buffers if needed * lisp/vc/vc.el (vc-print-log-setup-buttons): Only show the "more" buttons if we got more or equal to the number of entries we asked for (bug#18959). --- diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 6c96d8ca7c4..bc9f11202b1 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -2392,6 +2392,7 @@ If it contains `file', show short logs for files. Not all VC backends support short logs!") (defvar log-view-vc-fileset) +(defvar log-view-message-re) (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. @@ -2401,21 +2402,32 @@ Does nothing if IS-START-REVISION is non-nil, or if LIMIT is nil, or if PL-RETURN is `limit-unsupported'." (when (and limit (not (eq 'limit-unsupported pl-return)) (not is-start-revision)) - (goto-char (point-max)) - (insert "\n") - (insert-text-button "Show 2X entries" - 'action (lambda (&rest _ignore) - (vc-print-log-internal - log-view-vc-backend log-view-vc-fileset - working-revision nil (* 2 limit))) - 'help-echo "Show the log again, and double the number of log entries shown") - (insert " ") - (insert-text-button "Show unlimited entries" - 'action (lambda (&rest _ignore) - (vc-print-log-internal - log-view-vc-backend log-view-vc-fileset - working-revision nil nil)) - 'help-echo "Show the log again, including all entries"))) + (let ((entries 0)) + (goto-char (point-min)) + (while (re-search-forward log-view-message-re nil t) + (cl-incf entries)) + ;; If we got fewer entries than we asked for, then displaying + ;; the "more" buttons isn't useful. + (when (>= entries limit) + (goto-char (point-max)) + (insert "\n") + (insert-text-button + "Show 2X entries" + 'action (lambda (&rest _ignore) + (vc-print-log-internal + log-view-vc-backend log-view-vc-fileset + working-revision nil (* 2 limit))) + 'help-echo + "Show the log again, and double the number of log entries shown") + (insert " ") + (insert-text-button + "Show unlimited entries" + 'action (lambda (&rest _ignore) + (vc-print-log-internal + log-view-vc-backend log-view-vc-fileset + working-revision nil nil)) + 'help-echo "Show the log again, including all entries") + (insert "\n"))))) (defun vc-print-log-internal (backend files working-revision &optional is-start-revision limit type)