Subject: bug#64071: closed (Re: bug#64071: 28.2; smerge-diff creates *vc-diff* without setting it up)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 05 Oct 2023 08:07:02 +0000

Your bug report

#64071: 28.2; smerge-diff creates *vc-diff* without setting it up

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
64071: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64071
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#64071: 28.2; smerge-diff creates *vc-diff* without setting it up
From: Eli Zaretskii <[email-masked]>
To: Spencer Baugh <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked]
Date: Thu, 05 Oct 2023 11:06:10 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Spencer Baugh <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Wed, 04 Oct 2023 10:05:26 -0400
> 
> Eli Zaretskii <[email-masked]> writes:
> >> From: [email-masked]
> >> Date: Sat, 19 Aug 2023 12:32:01 +0000 (UTC)
> >> Cc: Spencer Baugh <[email-masked]>, [email-masked],
> >> 	[email-masked]
> >> 
> >> Eli Zaretskii <[email-masked]> writes:
> >> >> From: Spencer Baugh <[email-masked]>
> >> >> Cc: [email-masked],  [email-masked]
> >> >> Date: Wed, 28 Jun 2023 08:48:38 -0400
> >> >> 
> >> >> > See above: we shouldn't change the read-only attribute that was set by
> >> >> > the user.
> >> >> 
> >> >> Good point.  How about this?
> >> >
> >> > Better, thanks.
> >> 
> >> Is this patch OK to apply, then?
> >
> > Yes, I think so.
> 
> Could it be applied, then?

Installed on master, and closing the bug.

Subject: 28.2; smerge-diff creates *vc-diff* without setting it up
From: Spencer Baugh <[email-masked]>
To: [email-masked]
Date: Wed, 14 Jun 2023 17:41:39 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

1. emacs -Q
2. Create a buffer containing:
<<<<<<< left
foo
=======
bar
>>>>>>> right
3. M-x smerge-mode
4. M-x smerge-diff-upper-lower
5. The resulting *vc-diff* buffer is in diff-mode but it's not
read-only, which is unusual for a *vc-diff* buffer.  Probably there is
also other setup missing.

Relatedly, if a *vc-diff* buffer already exists, smerge-mode will use it
without updating the mode-line, so it will say, for example, "Diff from
*vc-change-log*" despite the diff being from smerge conflict resolution.

This bug is also present in Emacs 29 and trunk.

The below diff resolves the read-only part.  But maybe we want to be
creating the *vc-diff* by calling into vc, which would also fix the
mode-line part?

diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index c39a9cc2f22..65d93c17a64 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -1259,6 +1259,7 @@ smerge-diff
 	      (if (eq status 0) (insert "No differences found.\n"))))
 	  (goto-char (point-min))
 	  (diff-mode)
+          (read-only-mode)
 	  (display-buffer (current-buffer) t))
       (delete-file file1)
       (delete-file file2))))

In GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.15.12, Xaw scroll bars)
 of 2023-02-09 built on 
Repository revision: 739b5d0e52d83ec567bd61a5a49ac0e93e0eb469
Repository branch: HEAD
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: CentOS Linux 7 (Core)

Configured using:
 'configure --with-x-toolkit=lucid --without-gpm --without-gconf
 --without-selinux --without-imagemagick --with-modules --with-gif=no
 --with-cairo --with-rsvg'

Configured features:
CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LIBXML2
MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM LUCID ZLIB

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

Major mode: Text

Minor modes in effect:
  smerge-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
smerge-mode diff-mode easy-mmode diff iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
button loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 80621 6370)
 (symbols 48 11294 1)
 (strings 32 28957 2105)
 (string-bytes 1 956297)
 (vectors 16 13522)
 (vector-slots 8 187949 10390)
 (floats 8 30 39)
 (intervals 56 256 0)
 (buffers 992 12)
 (heap 1024 13825 2912))