From 82db17d0d1231c4aa26e837f37428c44a67663ea Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 19 May 2019 23:11:27 +0300 Subject: [PATCH] Publicize behavior of log-view-diff at beginning/end of active region * lisp/vc/log-view.el (log-view-diff, log-view-diff-changeset): * doc/emacs/maintaining.texi (VC Change Log): Document behavior of log-view-diff at the beginning and the end of the log buffer when the region is active. (Bug#35624) * lisp/vc/vc-git.el (vc-git-print-log): Insert newline at the beginning to enable the feature of diffing with the working revision. --- doc/emacs/maintaining.texi | 11 +++++++++++ lisp/vc/log-view.el | 14 ++++++++++++++ lisp/vc/vc-git.el | 4 ++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 4986c111030..0fbf91ae613 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1033,6 +1033,7 @@ systems support modifying change comments. Visit the revision indicated at the current line. @item d +@itemx = Display a diff between the revision at point and the next earlier revision, for the specific file. @@ -1047,6 +1048,16 @@ L}), toggle between showing and hiding the full log entry for the revision at point. @end table +To compare two arbitrary revisions, activate the region: set the +beginning of the region to the line with the first revision and the +end of the region to the line with the second revision to compare, +then type @kbd{d} or @kbd{=}. When the beginning of the region is on +the top line that has no revision, it uses the current working revision +as the first revision to compare. When the end of the region is on +the bottom non-revision line after the last revision line, then it +uses the next earlier revision after the last displayed revision as +the second revision to compare. + @vindex vc-log-show-limit Because fetching many log entries can be slow, the @file{*vc-change-log*} buffer displays no more than 2000 revisions by diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index 3389264ce6e..0b57e1d5086 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el @@ -585,6 +585,13 @@ point, get the diff between the revision at point and its previous revision. Otherwise, get the diff between the revisions where the region starts and ends. +When the beginning of the region is on the top line that has no revision, +use the current working revision as the first revision to compare. + +When the end of the region is on the bottom non-revision line after +the last revision line, use the previous revision of the last +displayed revision as the second revision to compare. + Unlike `log-view-diff-changeset', this function only shows the part of the changeset which affected the currently considered file(s)." @@ -600,6 +607,13 @@ point, get the diff between the revision at point and its previous revision. Otherwise, get the diff between the revisions where the region starts and ends. +When the beginning of the region is on the top line that has no revision, +use the current working revision as the first revision to compare. + +When the end of the region is on the bottom non-revision line after +the last revision line, use the previous revision of the last +displayed revision as the second revision to compare. + Unlike `log-view-diff' this function shows the whole changeset, including changes affecting other files than the currently considered file(s)." diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 61c13026cc5..b6feb3b8d1e 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -1017,8 +1017,8 @@ If LIMIT is a revision string, use it as an end-revision." ;; If the buffer exists from a previous invocation it might be ;; read-only. (let ((inhibit-read-only t)) - (with-current-buffer - buffer + (with-current-buffer buffer + (insert "\n") (apply 'vc-git-command buffer 'async files (append -- 2.39.2