Subject: bug#7179: 23.2; copyright-update on spanning copyright-limit

From: "Basil L. Contovounesios" <[email-masked]>
Date: Tue, 25 Jan 2022 20:33:46 +0200

Lars Ingebrigtsen [2021-07-18 14:31 +0200] wrote:

> Kevin Ryde <[email-masked]> writes:
>
>> If you're unlucky enough to have a copyright notice spanning the
>> `copyright-limit' position in the buffer then M-x copyright-update makes
>> a bit of a mess inserting the current year at the wrong place.  For
>> example,
>>
>>     (progn
>>       (require 'copyright)
>>       (switch-to-buffer "foo")
>>       (erase-buffer)
>>       (insert (make-string (- copyright-limit 14) ?x) "\n"
>>               "\nCopyright 2006, 2007, 2008 Foo Bar\n\n")
>>       (copyright-update))
>>
>> gives
>>
>>     Copyright 20, 1006, 2007, 2008 Foo Bar
>>
>> where I expected
>>
>>     Copyright 2006, 2007, 2008, 2010 Foo Bar
>
> This should now be fixed in Emacs 28.

Thanks, but the fix comes with the following regression when using
copyright-at-end-flag:

0. emacs -Q
1. (with-temp-buffer
     (dotimes (_ 2)
       (insert "Copyright 2021 FSF\n"))
     (require 'copyright)
     (let ((copyright-at-end-flag t)
           (copyright-query nil))
       (copyright-update))
     (buffer-string))
2. C-j

Expected result:
Copyright 2021 FSF
Copyright 2021, 2022 FSF

Actual result:
Copyright 2021, 2022 FSF
Copyright 2021 FSF

-- 
Basil

In GNU Emacs 28.0.91 (build 1, x86_64-pc-linux-gnu)
 of 2022-01-25 built on tia
Repository revision: 7eca80b20444f7bd7bcb6a66a9054e029f0e7013
Repository branch: wt/emacs-28-nox
System Description: Debian GNU/Linux bookworm/sid

Configured using:
 'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native' --config-cache
 --prefix=/home/blc/.local --program-suffix=-28-nox
 --enable-checking=structs --with-file-notification=yes
 --with-x-toolkit=no --without-x'

Configured features:
ACL DBUS GMP GNUTLS GPM JSON LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NOTIFY INOTIFY PDUMPER SECCOMP SOUND THREADS XIM ZLIB

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

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-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
tool-bar 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 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 copyright term/xterm xterm
byte-opt gv bytecomp byte-compile cconv regexp-opt iso-transl tooltip
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select 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 lcms2
multi-tty make-network-process emacs)

Memory information:
((conses 16 55789 6257)
 (symbols 48 6656 1)
 (strings 32 18347 1803)
 (string-bytes 1 607048)
 (vectors 16 10694)
 (vector-slots 8 126491 7164)
 (floats 8 24 35)
 (intervals 56 208 7)
 (buffers 992 10))