Commit b667752d authored by André Spiegel's avatar André Spiegel
Browse files

(vc-print-log): Set the display window so that it shows

the current log entry completely.
parent a7305f6e
...@@ -1565,6 +1565,7 @@ levels in the snapshot." ...@@ -1565,6 +1565,7 @@ levels in the snapshot."
(vc-backend-print-log file) (vc-backend-print-log file)
(pop-to-buffer (get-buffer-create "*vc*")) (pop-to-buffer (get-buffer-create "*vc*"))
(setq default-directory (file-name-directory file)) (setq default-directory (file-name-directory file))
(goto-char (point-max)) (forward-line -1)
(while (looking-at "=*\n") (while (looking-at "=*\n")
(delete-char (- (match-end 0) (match-beginning 0))) (delete-char (- (match-end 0) (match-beginning 0)))
(forward-line -1)) (forward-line -1))
...@@ -1573,14 +1574,36 @@ levels in the snapshot." ...@@ -1573,14 +1574,36 @@ levels in the snapshot."
(delete-char (- (match-end 0) (match-beginning 0)))) (delete-char (- (match-end 0) (match-beginning 0))))
(shrink-window-if-larger-than-buffer) (shrink-window-if-larger-than-buffer)
;; move point to the log entry for the current version ;; move point to the log entry for the current version
(if (not (eq (vc-backend file) 'SCCS)) (and (not (eq (vc-backend file) 'SCCS))
(let ((pos (re-search-forward (re-search-forward
;; also match some context, for safety ;; also match some context, for safety
(concat "----\nrevision " (vc-workfile-version file) (concat "----\nrevision " (vc-workfile-version file)
"\\(\tlocked by:.*\n\\|\n\\)date: ") nil t))) "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t)
(if pos (progn (goto-char pos) ;; set the display window so that
(beginning-of-line) ;; the whole log entry is displayed
(forward-line -1))))) (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) (vc-registration-error buffer-file-name)
) )
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment