Mercurial > hg > xemacs-beta
comparison lisp/subr.el @ 367:a4f53d9b3154 r21-1-13
Import from CVS: tag r21-1-13
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:01:07 +0200 |
parents | 7347b34c275b |
children | cc15677e0335 |
comparison
equal
deleted
inserted
replaced
366:83d76f480a59 | 367:a4f53d9b3154 |
---|---|
295 (defun split-string (string &optional pattern) | 295 (defun split-string (string &optional pattern) |
296 "Return a list of substrings of STRING which are separated by PATTERN. | 296 "Return a list of substrings of STRING which are separated by PATTERN. |
297 If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"." | 297 If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"." |
298 (or pattern | 298 (or pattern |
299 (setq pattern "[ \f\t\n\r\v]+")) | 299 (setq pattern "[ \f\t\n\r\v]+")) |
300 ;; The FSF version of this function takes care not to cons in case | 300 (let (parts (start 0) (len (length string))) |
301 ;; of infloop. Maybe we should synch? | 301 (if (string-match pattern string) |
302 (let (parts (start 0)) | 302 (setq parts (cons (substring string 0 (match-beginning 0)) parts) |
303 (while (string-match pattern string start) | 303 start (match-end 0))) |
304 (while (and (< start len) | |
305 (string-match pattern string (if (> start (match-beginning 0)) | |
306 start | |
307 (1+ start)))) | |
304 (setq parts (cons (substring string start (match-beginning 0)) parts) | 308 (setq parts (cons (substring string start (match-beginning 0)) parts) |
305 start (match-end 0))) | 309 start (match-end 0))) |
306 (nreverse (cons (substring string start) parts)))) | 310 (nreverse (cons (substring string start) parts)))) |
307 | 311 |
308 ;; #### #### #### AAaargh! Must be in C, because it is used insanely | 312 ;; #### #### #### AAaargh! Must be in C, because it is used insanely |