]> git.eshelyaron.com Git - emacs.git/commitdiff
Change string-lines semantics slightly
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 1 May 2022 18:54:11 +0000 (20:54 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 1 May 2022 18:54:11 +0000 (20:54 +0200)
* lisp/subr.el (string-lines): Change the semantics slightly --
don't return an empty string for a trailing newline.

etc/NEWS
lisp/subr.el
test/lisp/subr-tests.el

index 3380c266daa15a91611f9e7b325cb6c0d89e2b80..882748d8c7f301ac8bc60217b4a2b5c6b893ab1a 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -135,6 +135,11 @@ of 'user-emacs-directory'.
 \f
 * Incompatible changes in Emacs 29.1
 
+---
+** 'string-lines' handles trailing newlines differently.
+It no longer returns an empty final string if the string ends with a
+newline.
+
 ---
 ** 'TAB' and '<backtab>' are now bound in 'button-map'.
 This means that if you're standing on a button, 'TAB' will take you to
index d4f5d0d23bc52a615c15434a67e33fea66b2eb6a..d6ea309207498eedee28660a9507f78336d82d5f 100644 (file)
@@ -6762,12 +6762,7 @@ lines."
                   (when (not (and keep-newlines omit-nulls
                                   (equal line "\n")))
                     (push line lines))))
-              (setq start (1+ newline))
-              ;; Include the final newline.
-              (when (and (= start (length string))
-                         (not omit-nulls)
-                         (not keep-newlines))
-                (push "" lines)))
+              (setq start (1+ newline)))
           ;; No newline in the remaining part.
           (if (zerop start)
               ;; Avoid a string copy if there are no newlines at all.
index c431930c27298a42e425e9451eb7e84e39ec9cf6..93e4475d6bc8ca31325e60f5569205f00afae900 100644 (file)
@@ -1030,7 +1030,7 @@ final or penultimate step during initialization."))
 
 (ert-deftest test-string-lines ()
   (should (equal (string-lines "foo") '("foo")))
-  (should (equal (string-lines "foo\n") '("foo" "")))
+  (should (equal (string-lines "foo\n") '("foo")))
   (should (equal (string-lines "foo\nbar") '("foo" "bar")))
 
   (should (equal (string-lines "foo" t) '("foo")))