changeset 20476:f213a5906ea6

(split-string): Handle empty matches reasonably.
author Richard M. Stallman <rms@gnu.org>
date Sun, 21 Dec 1997 01:35:50 +0000
parents efbebc38e077
children 6423efca2ea9
files lisp/subr.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/subr.el	Sun Dec 21 01:34:37 1997 +0000
+++ b/lisp/subr.el	Sun Dec 21 01:35:50 1997 +0000
@@ -983,12 +983,25 @@
 Each match for SEPARATORS is a splitting point.
 The substrings between the splitting points are made into a list
 which is returned.
-If SEPARATORS is absent, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
+If SEPARATORS is absent, it defaults to \"[ \\f\\t\\n\\r\\v]+\".
+
+If there is match for SEPARATORS at the beginning of STRING, we do not
+include a null substring for that.  Likewise, if there is a match
+at the end of STRING, we don't include a null substring for that."
   (let ((rexp (or separators "[ \f\t\n\r\v]+"))
 	(start 0)
+	notfirst
 	(list nil))
-    (while (string-match rexp string start)
+    (while (and (string-match rexp string
+			      (if (and notfirst
+				       (= start (match-beginning 0))
+				       (< start (length string)))
+				  (1+ start) start))
+		(< (match-beginning 0) (length string)))
+      (setq notfirst t)
       (or (eq (match-beginning 0) 0)
+	  (and (eq (match-beginning 0) (match-end 0))
+	       (eq (match-beginning 0) start))
 	  (setq list
 		(cons (substring string start (match-beginning 0))
 		      list)))