Commit 2879c3ec authored by Juri Linkov's avatar Juri Linkov

Support rectangular regions in capitalize-region and capitalize-dwim.

* lisp/simple.el (capitalize-dwim): Add arg region-noncontiguous-p
in capitalize-region call.

* src/casefiddle.c (Fcapitalize_region): Add arg region-noncontiguous-p.
If non-nil, operate on multiple chunks.  (Bug#37477)
(Fdowncase_region): Use builtin symbol Qregion_extract_function
rather than calling intern.
parent a3421635
Pipeline #3247 failed with stage
in 90 minutes
......@@ -487,8 +487,8 @@ interface that's more like functions like 'search-forward'.
---
** More commands support noncontiguous rectangular regions, namely
'upcase-dwim', 'downcase-dwim', 'replace-string', 'replace-regexp',
and 'delimit-columns-region'.
'upcase-dwim', 'downcase-dwim', 'capitalize-dwim', 'capitalize-region',
'replace-string', 'replace-regexp', and 'delimit-columns-region'.
+++
** When asked to visit a large file, Emacs now offers visiting it literally.
......
......@@ -9074,7 +9074,7 @@ Otherwise, it calls `capitalize-word', with prefix argument passed to it
to capitalize ARG words."
(interactive "*p")
(if (use-region-p)
(capitalize-region (region-beginning) (region-end))
(capitalize-region (region-beginning) (region-end) (region-noncontiguous-p))
(capitalize-word arg)))
;;; Accessors for `decode-time' values.
......
......@@ -556,7 +556,7 @@ point and the mark is operated on. */)
if (!NILP (region_noncontiguous_p))
{
bounds = call1 (Fsymbol_value (intern ("region-extract-function")),
bounds = call1 (Fsymbol_value (Qregion_extract_function),
intern ("bounds"));
while (CONSP (bounds))
......@@ -571,15 +571,31 @@ point and the mark is operated on. */)
return Qnil;
}
DEFUN ("capitalize-region", Fcapitalize_region, Scapitalize_region, 2, 2, "r",
DEFUN ("capitalize-region", Fcapitalize_region, Scapitalize_region, 2, 3,
"(list (region-beginning) (region-end) (region-noncontiguous-p))",
doc: /* Convert the region to capitalized form.
This means that each word's first character is converted to either
title case or upper case, and the rest to lower case.
In programs, give two arguments, the starting and ending
character positions to operate on. */)
(Lisp_Object beg, Lisp_Object end)
(Lisp_Object beg, Lisp_Object end, Lisp_Object region_noncontiguous_p)
{
casify_region (CASE_CAPITALIZE, beg, end);
Lisp_Object bounds = Qnil;
if (!NILP (region_noncontiguous_p))
{
bounds = call1 (Fsymbol_value (Qregion_extract_function),
intern ("bounds"));
while (CONSP (bounds))
{
casify_region (CASE_CAPITALIZE, XCAR (XCAR (bounds)), XCDR (XCAR (bounds)));
bounds = XCDR (bounds);
}
}
else
casify_region (CASE_CAPITALIZE, beg, end);
return Qnil;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment