mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
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.
This commit is contained in:
parent
a34216351f
commit
2879c3ec1b
3 changed files with 23 additions and 7 deletions
4
etc/NEWS
4
etc/NEWS
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue