diff options
author | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
commit | b2e6b10fe2d40020a75ab0025af98a4abf339cd2 (patch) | |
tree | db265e5ea93cdc13f8e3b54ed5c7ad2869d50ec9 /lisp/subr.el | |
parent | 905350bef3ebc514a418658dd155c1d062664b56 (diff) | |
parent | 37cc095b6a175fb5a2fb18fa029eaf3aa3b3fa53 (diff) | |
download | emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.gz emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.bz2 emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.zip |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 846-851)
- Update from CVS
- Merge from emacs--rel--22
* emacs--rel--22 (patch 88-92)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 242-244)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-246
Diffstat (limited to 'lisp/subr.el')
-rw-r--r-- | lisp/subr.el | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lisp/subr.el b/lisp/subr.el index 97f73251c03..a74b6828dd5 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2836,11 +2836,10 @@ Modifies the match data; use `save-match-data' if necessary." list))) (nreverse list))) -;; (string->strings (strings->string X)) == X -(defun strings->string (strings &optional separator) +(defun combine-and-quote-strings (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 + (split-string-and-unquote (combine-and-quote-strings strs)) == strs Only some SEPARATORs will work properly." (let ((sep (or separator " "))) (mapconcat @@ -2850,20 +2849,20 @@ Only some SEPARATORs will work properly." str)) strings sep))) -;; (string->strings (strings->string X)) == X -(defun string->strings (string &optional separator) +(defun split-string-and-unquote (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 +It understands Emacs Lisp quoting within STRING, such that + (split-string-and-unquote (combine-and-quote-strings 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 + (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))))))) + (split-string-and-unquote (substring string (cdr rfs)) + sep))))))) ;;;; Replacement in strings. |