Subject: bug#25355: closed (Re: bug#25355: 26.0.50; Provide function to non-destructively replace buffer contents)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 17 Jun 2017 13:49:02 +0000

Your bug report

#25355: 26.0.50; Provide function to non-destructively replace buffer contents

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].

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

Subject: Re: bug#25355: 26.0.50; Provide function to non-destructively replace buffer contents
From: Philipp Stephani <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked]
Date: Sat, 17 Jun 2017 13:47:48 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Philipp Stephani <[email-masked]> schrieb am Mo., 12. Juni 2017 um
23:17 Uhr:

> Philipp Stephani <[email-masked]> schrieb am So., 7. Mai 2017 um
> 20:21 Uhr:
>
>>
>>
>>> P.S. Doesn't GNU Diff have code to do this?
>>
>>
>> Sure, but it's not a library. libmba was the only library that I've found
>> so far with a usable interface (i.e. that doesn't assume that the input
>> sequences are byte arrays).
>>
>>
>
> Apparently I didn't look closely enough: Diffutils uses an implementation
> of the Myers algorithm from Gnulib, which is customizable enough to fit our
> needs. I've attached a patch that uses Gnulib.
>

I've pushed a slightly modified version of this patch as d682f0daa3.

Subject: 26.0.50; Provide function to non-destructively replace buffer contents
From: Philipp <[email-masked]>
To: [email-masked]
Date: Wed, 04 Jan 2017 13:45:32 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

There are many tools (e.g. auto-formatters) that take buffer contents,
reformat them, and write the reformatted output somewhere.  However,
there is no good way how to apply the modified output to the source
buffer.  The naive way (erasing and re-inserting the buffer contents)
loses point and markers.  Therefore there should be a function
(e.g. `replace-buffer-contents') that calculates a minimal diff between
the old and the new contents and uses editing operations (insert,
delete, etc.) to apply the diff.  Ideally this would be done without any
external tools (e.g. 'diff').

In GNU Emacs 26.0.50.25 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2017-01-04 built on unknown
Repository revision: 44c588a25ce231ce05fb535cd6d7162e91214f45
Windowing system distributor 'The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04 LTS

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Configured using:
 'configure --with-modules --enable-checking
 --enable-check-lisp-object-type 'CFLAGS=-ggdb3 -O0''

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

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

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-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
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv
bytecomp byte-compile cl-extra help-mode cconv cl-loaddefs pcase cl-lib
dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec
password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type 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 elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 charscript case-table epa-hook jka-cmpr-hook help
simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button
faces cus-face macroexp files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote inotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 97764 8542)
 (symbols 48 20217 1)
 (miscs 40 331 131)
 (strings 32 18017 4427)
 (string-bytes 1 592819)
 (vectors 16 14087)
 (vector-slots 8 472891 7102)
 (floats 8 181 43)
 (intervals 56 218 0)
 (buffers 976 12)
 (heap 1024 36851 1046))

-- 
Google Germany GmbH
Erika-Mann-Straße 33
80636 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle

Diese E-Mail ist vertraulich.  Wenn Sie nicht der richtige Adressat sind,
leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen
Sie die E-Mail und alle Anhänge.  Vielen Dank.

This e-mail is confidential.  If you are not the right addressee please do not
forward it, please inform the sender, and please erase this e-mail including
any attachments.  Thanks.