aboutsummaryrefslogtreecommitdiffstats
path: root/src/casefiddle.c
diff options
context:
space:
mode:
authorJuri Linkov2016-06-06 00:23:21 +0300
committerJuri Linkov2016-06-06 00:23:21 +0300
commit66d5c75e2dd9f4204b51a5d3299456ecc4ea6842 (patch)
tree167eaba896127f2c9ddb01c914e003893291b2ec /src/casefiddle.c
parentefde23dcdd110ae9d85449a04a66408d5e8a2b23 (diff)
downloademacs-66d5c75e2dd9f4204b51a5d3299456ecc4ea6842.tar.gz
emacs-66d5c75e2dd9f4204b51a5d3299456ecc4ea6842.zip
* src/casefiddle.c (Fupcase_region): Add arg ‘region-noncontiguous-p’.
If non-nil, operate on multiple chunks. (Bug#23655) * src/search.c (Freplace_match): Use Qnil for new arg of Fupcase_region.
Diffstat (limited to 'src/casefiddle.c')
-rw-r--r--src/casefiddle.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c
index 34a65edd008..6114a6f7857 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -294,15 +294,31 @@ casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e)
294 } 294 }
295} 295}
296 296
297DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 2, "r", 297DEFUN ("upcase-region", Fupcase_region, Supcase_region, 2, 3,
298 "(list (region-beginning) (region-end) (region-noncontiguous-p))",
298 doc: /* Convert the region to upper case. In programs, wants two arguments. 299 doc: /* Convert the region to upper case. In programs, wants two arguments.
299These arguments specify the starting and ending character numbers of 300These arguments specify the starting and ending character numbers of
300the region to operate on. When used as a command, the text between 301the region to operate on. When used as a command, the text between
301point and the mark is operated on. 302point and the mark is operated on.
302See also `capitalize-region'. */) 303See also `capitalize-region'. */)
303 (Lisp_Object beg, Lisp_Object end) 304 (Lisp_Object beg, Lisp_Object end, Lisp_Object region_noncontiguous_p)
304{ 305{
305 casify_region (CASE_UP, beg, end); 306 Lisp_Object bounds = Qnil;
307
308 if (!NILP (region_noncontiguous_p))
309 {
310 bounds = call1 (Fsymbol_value (intern ("region-extract-function")),
311 intern ("bounds"));
312
313 while (CONSP (bounds))
314 {
315 casify_region (CASE_UP, XCAR (XCAR (bounds)), XCDR (XCAR (bounds)));
316 bounds = XCDR (bounds);
317 }
318 }
319 else
320 casify_region (CASE_UP, beg, end);
321
306 return Qnil; 322 return Qnil;
307} 323}
308 324