Fix copyright-fix-years, use a dash to separate years in a range

Commit 7a46fa9c75, allowing en-dash as
years separator, changed the way the years range is composed taking the
separator from the `sep' variable instead of always using an hardwired
hyphen. Since the code explicitly avoid to touch (that is, extend)
existing ranges, that `sep' variable is almost always a space, or
whatever character precedes the last parsed year, thus generating a
range like "2020 2022" instead of "2020-2022".

* lisp/emacs-lisp/copyright.el (copyright-fix-years): Always use an dash
to separate years in a range.

* test/lisp/emacs-lisp/copyright-tests.el (with-copyright-fix-years-test):
(copyright-fix-years-tests--data):
(text-copyright-fix-years): New test cases (bug#53597).
This commit is contained in:
Lele Gaifax 2022-01-28 08:41:51 +01:00 committed by Lars Ingebrigtsen
parent 7ba197a163
commit 70c3437ae1
2 changed files with 21 additions and 1 deletions

View file

@ -313,7 +313,7 @@ independently replaces consecutive years with a range."
(> prev-year first-year))
(goto-char range-end)
(delete-region range-start range-end)
(insert (format "%c%d" sep prev-year))
(insert (format "-%d" prev-year))
(goto-char p))
(setq first-year year
range-start (point)))))

View file

@ -72,5 +72,25 @@
(buffer-string))
"Copyright 2021 FSF\nCopyright 2021, 2022 FSF\n")))
(defmacro with-copyright-fix-years-test (orig result)
`(let ((copyright-year-ranges t))
(with-temp-buffer
(insert ,orig)
(copyright-fix-years)
(should (equal (buffer-string) ,result)))))
(defvar copyright-fix-years-tests--data
'((";; Copyright (C) 2008, 2010, 2012"
. ";; Copyright (C) 2008, 2010, 2012")
(";; Copyright (C) 2008, 2009, 2010, 2013, 2014, 2015, 2016, 2018"
. ";; Copyright (C) 2008-2010, 2013-2016, 2018")
(";; Copyright (C) 2008-2010, 2011, 2015, 2016, 2017"
. ";; Copyright (C) 2008-2010, 2011, 2015-2017")))
(ert-deftest text-copyright-fix-years ()
"Test basics of \\[copyright-fix-years]."
(dolist (test copyright-fix-years-tests--data)
(with-copyright-fix-years-test (car test) (cdr test))))
(provide 'copyright-tests)
;;; copyright-tests.el ends here