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