Subject: bug#22978: 25.0.92; log-view-diff: TMM required for non-consecutive revisions

From: Bob Rogers <[email-masked]>
Date: Thu, 10 Mar 2016 12:12:15 -0500

1.  "emacs -Q" in a current Emacs working copy.

   2.  "C-x C-f BUGS RET"

   3.  "C-x v l" to create its log buffer.

   4.  "M-x transient-mark-mode RET" to disable transient mark mode.

   5.  "n n n M-<" to mark the fourth most recent commit (for me this is
19b9c46 by Julien Danjou on Dec 3 2010) and move point back to the most
recent commit.

   6.  "=" to get a diff.  This will show a hunk starting with the
deleted line "You can read the read the ..." which is just the most
recent revision.

   7.  Type "M-x transient-mark-mode RET" and then "C-x o =" to show the
expected diff between the two selected revisions.  If mark is on the
same commit, this will include the whole file.

   The documentation for log-view-diff implies that this is the correct
behavior (since the region is perpetually inactive if TMM is disabled),
but this is extremely non-featureful, as there is then no way to find
the diff between two non-consecutive revisions without enabling TMM.
The patch included at the bottom restores the original behavior for us
non-TMM users while keeping TMM behavior.

   The behavior is the same in 25.0.92 and a recent repo version; both
configuration summaries are included.  The patch was developed in
25.0.92 and the instructions above in the repo.

					-- Bob Rogers
					   Modular Genetics Inc.
					   http://www.modulargenetics.com/

================

In GNU Emacs 25.0.92.1 (x86_64-suse-linux-gnu, GTK+ Version 2.24.28)
 of 2016-03-04 built on persepolis
Windowing system distributor 'The X.Org Foundation', version 11.0.11601000
System Description:	openSUSE 13.2 (Harlequin) (x86_64)

Configured using:
 'configure --with-pop --without-dbus --prefix=/usr
 --infodir=/usr/share/info --mandir=/usr/share/man
 --sharedstatedir=/var/lib --libexecdir=/usr/lib --with-x --with-xpm=no
 --with-jpeg --with-tiff --with-gif=no --with-png --with-x-toolkit=yes
 --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib64 --build
 x86_64-suse-linux 'CFLAGS=-g -O2 -fno-optimize-sibling-calls'
 LDFLAGS=-s'

Configured features:
JPEG TIFF PNG RSVG SOUND GSETTINGS NOTIFY FREETYPE XFT ZLIB
TOOLKIT_SCROLL_BARS GTK2 X11

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix

================

In GNU Emacs 25.1.50.1 (x86_64-suse-linux-gnu, GTK+ Version 2.24.28)
 of 2016-03-06 built on orion
Repository revision: 7882dc625e1ec562fcd0e1b743ef11b160cae18e
Windowing system distributor 'The X.Org Foundation', version 11.0.11601000
System Description:	openSUSE 13.2 (Harlequin) (x86_64)

Configured features:
XPM JPEG TIFF GIF PNG SOUND GSETTINGS NOTIFY FREETYPE XFT ZLIB
TOOLKIT_SCROLL_BARS GTK2 X11

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

================
diff -u --label /usr/share/emacs/25.0.92/lisp/vc/log-view.el.gz --label \#\<buffer\ log-view.el.gz\> /tmp/rogers/jka-com15891oVD /tmp/rogers/buffer-content-15891CqP
--- /usr/share/emacs/25.0.92/lisp/vc/log-view.el.gz
+++ #<buffer log-view.el.gz>
@@ -591,7 +591,9 @@
 file(s)."
   (interactive
    (list (if (use-region-p) (region-beginning) (point))
-         (if (use-region-p) (region-end) (point))))
+         (if (use-region-p)
+	     (region-end)
+	     (or (and (not transient-mark-mode) (mark)) (point)))))
   (log-view-diff-common beg end))
 
 (defun log-view-diff-changeset (beg end)

Diff finished.  Thu Mar 10 12:01:03 2016