Mercurial > emacs
changeset 16215:2c91cd1a660a
(vc-print-log): Set the display window so that it shows
the current log entry completely.
author | André Spiegel <spiegel@gnu.org> |
---|---|
date | Mon, 16 Sep 1996 14:43:29 +0000 |
parents | fa8dbed4d40e |
children | 3c6aaa4f236a |
files | lisp/vc.el |
diffstat | 1 files changed, 31 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/vc.el Mon Sep 16 09:43:42 1996 +0000 +++ b/lisp/vc.el Mon Sep 16 14:43:29 1996 +0000 @@ -1565,6 +1565,7 @@ (vc-backend-print-log file) (pop-to-buffer (get-buffer-create "*vc*")) (setq default-directory (file-name-directory file)) + (goto-char (point-max)) (forward-line -1) (while (looking-at "=*\n") (delete-char (- (match-end 0) (match-beginning 0))) (forward-line -1)) @@ -1573,14 +1574,36 @@ (delete-char (- (match-end 0) (match-beginning 0)))) (shrink-window-if-larger-than-buffer) ;; move point to the log entry for the current version - (if (not (eq (vc-backend file) 'SCCS)) - (let ((pos (re-search-forward - ;; also match some context, for safety - (concat "----\nrevision " (vc-workfile-version file) - "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t))) - (if pos (progn (goto-char pos) - (beginning-of-line) - (forward-line -1))))) + (and (not (eq (vc-backend file) 'SCCS)) + (re-search-forward + ;; also match some context, for safety + (concat "----\nrevision " (vc-workfile-version file) + "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t) + ;; set the display window so that + ;; the whole log entry is displayed + (let (start end lines) + (beginning-of-line) (forward-line -1) (setq start (point)) + (if (not (re-search-forward "^----*\nrevision" nil t)) + (setq end (point-max)) + (beginning-of-line) (forward-line -1) (setq end (point))) + (setq lines (count-lines start end)) + (cond + ;; if the global information and this log entry fit + ;; into the window, display from the beginning + ((< (count-lines (point-min) end) (window-height)) + (goto-char (point-min)) + (recenter 0) + (goto-char start)) + ;; if the whole entry fits into the window, + ;; display it centered + ((< (1+ lines) (window-height)) + (goto-char start) + (recenter (1- (- (/ (window-height) 2) (/ lines 2))))) + ;; otherwise (the entry is too large for the window), + ;; display from the start + (t + (goto-char start) + (recenter 0))))) ) (vc-registration-error buffer-file-name) )