1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Merge from emacs--devo--0

Patches applied:

 * emacs--devo--0  (patch 803-805)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-227
This commit is contained in:
Miles Bader 2007-07-09 08:00:55 +00:00
commit 1011c48763
121 changed files with 10123 additions and 2582 deletions

View file

@ -2768,6 +2768,36 @@ Modifies the match data; use `save-match-data' if necessary."
(cons (substring string start)
list)))
(nreverse list)))
;; (string->strings (strings->string X)) == X
(defun strings->string (strings &optional separator)
"Concatenate the STRINGS, adding the SEPARATOR (default \" \").
This tries to quote the strings to avoid ambiguity such that
(string->strings (strings->string strs)) == strs
Only some SEPARATORs will work properly."
(let ((sep (or separator " ")))
(mapconcat
(lambda (str)
(if (string-match "[\\\"]" str)
(concat "\"" (replace-regexp-in-string "[\\\"]" "\\\\\\&" str) "\"")
str))
strings sep)))
;; (string->strings (strings->string X)) == X
(defun string->strings (string &optional separator)
"Split the STRING into a list of strings.
It understands elisp style quoting within STRING such that
(string->strings (strings->string strs)) == strs
The SEPARATOR regexp defaults to \"\\s-+\"."
(let ((sep (or separator "\\s-+"))
(i (string-match "[\"]" string)))
(if (null i) (split-string string sep t) ; no quoting: easy
(append (unless (eq i 0) (split-string (substring string 0 i) sep t))
(let ((rfs (read-from-string string i)))
(cons (car rfs)
(string->strings (substring string (cdr rfs))
sep)))))))
;;;; Replacement in strings.