unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions
@ 2016-09-09 21:59 Michal Nazarewicz
  2016-09-10  6:46 ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: Michal Nazarewicz @ 2016-09-09 21:59 UTC (permalink / raw)
  To: 24398

* src/casefiddle.c (operate_on_word): Removed in favour of…
(casify_word) …new function which does what operate_on_word did plus
what all of the common code from *-word functions.
(upcase-word, downcase-word, capitalize-word): Move code common between
those functions (pretty much the whole body of those functions) into
casify_word and use that instead of now deleted operato_on_word.
---
 src/casefiddle.c | 44 +++++++++++++++++---------------------------
 1 file changed, 17 insertions(+), 27 deletions(-)

 Unless there are any comments, I’m goning to push this in a few days.

diff --git a/src/casefiddle.c b/src/casefiddle.c
index 6114a6f..6c64d67 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -376,22 +376,27 @@ character positions to operate on.  */)
 }
 \f
 static Lisp_Object
-operate_on_word (Lisp_Object arg, ptrdiff_t *newpoint)
+casify_word (enum case_action flag, Lisp_Object arg)
 {
-  Lisp_Object val;
-  ptrdiff_t farend;
+  Lisp_Object beg, end;
+  ptrdiff_t newpoint;
   EMACS_INT iarg;
 
   CHECK_NUMBER (arg);
   iarg = XINT (arg);
-  farend = scan_words (PT, iarg);
-  if (!farend)
-    farend = iarg > 0 ? ZV : BEGV;
 
-  *newpoint = PT > farend ? PT : farend;
-  XSETFASTINT (val, farend);
+  newpoint = scan_words (PT, iarg);
+  if (!newpoint)
+    newpoint = iarg > 0 ? ZV : BEGV;
+
+  XSETFASTINT (beg, PT);
+  XSETFASTINT (end, newpoint);
+  if (PT > newpoint)
+    newpoint = PT;
+
+  casify_region (flag, beg, end);
 
-  return val;
+  SET_PT (newpoint);
 }
 
 DEFUN ("upcase-word", Fupcase_word, Supcase_word, 1, 1, "p",
@@ -404,12 +409,7 @@ With negative argument, convert previous words but do not move.
 See also `capitalize-word'.  */)
   (Lisp_Object arg)
 {
-  Lisp_Object beg, end;
-  ptrdiff_t newpoint;
-  XSETFASTINT (beg, PT);
-  end = operate_on_word (arg, &newpoint);
-  casify_region (CASE_UP, beg, end);
-  SET_PT (newpoint);
+  casify_word (CASE_UP, arg);
   return Qnil;
 }
 
@@ -422,12 +422,7 @@ is ignored when moving forward.
 With negative argument, convert previous words but do not move.  */)
   (Lisp_Object arg)
 {
-  Lisp_Object beg, end;
-  ptrdiff_t newpoint;
-  XSETFASTINT (beg, PT);
-  end = operate_on_word (arg, &newpoint);
-  casify_region (CASE_DOWN, beg, end);
-  SET_PT (newpoint);
+  casify_word (CASE_DOWN, arg);
   return Qnil;
 }
 
@@ -443,12 +438,7 @@ is ignored when moving forward.
 With negative argument, capitalize previous words but do not move.  */)
   (Lisp_Object arg)
 {
-  Lisp_Object beg, end;
-  ptrdiff_t newpoint;
-  XSETFASTINT (beg, PT);
-  end = operate_on_word (arg, &newpoint);
-  casify_region (CASE_CAPITALIZE, beg, end);
-  SET_PT (newpoint);
+  casify_word (CASE_CAPITALIZE, arg);
   return Qnil;
 }
 \f
-- 
2.8.0.rc3.226.g39d4020






^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions
  2016-09-09 21:59 bug#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions Michal Nazarewicz
@ 2016-09-10  6:46 ` Eli Zaretskii
  2016-09-12 11:26   ` Michal Nazarewicz
  0 siblings, 1 reply; 3+ messages in thread
From: Eli Zaretskii @ 2016-09-10  6:46 UTC (permalink / raw)
  To: Michal Nazarewicz; +Cc: 24398

> From: Michal Nazarewicz <mina86@mina86.com>
> Date: Fri,  9 Sep 2016 23:59:19 +0200
> 
> * src/casefiddle.c (operate_on_word): Removed in favour of…
> (casify_word) …new function which does what operate_on_word did plus
> what all of the common code from *-word functions.
> (upcase-word, downcase-word, capitalize-word): Move code common between
> those functions (pretty much the whole body of those functions) into
> casify_word and use that instead of now deleted operato_on_word.
                                                  ^^^^^^^^^^^^^^^
A typo.

Thanks.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions
  2016-09-10  6:46 ` Eli Zaretskii
@ 2016-09-12 11:26   ` Michal Nazarewicz
  0 siblings, 0 replies; 3+ messages in thread
From: Michal Nazarewicz @ 2016-09-12 11:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 24398-done

On Sat, Sep 10 2016, Eli Zaretskii wrote:
>> From: Michal Nazarewicz <mina86@mina86.com>
>> Date: Fri,  9 Sep 2016 23:59:19 +0200
>> 
>> * src/casefiddle.c (operate_on_word): Removed in favour of…
>> (casify_word) …new function which does what operate_on_word did plus
>> what all of the common code from *-word functions.
>> (upcase-word, downcase-word, capitalize-word): Move code common between
>> those functions (pretty much the whole body of those functions) into
>> casify_word and use that instead of now deleted operato_on_word.
>                                                   ^^^^^^^^^^^^^^^
> A typo.

Fixed and pushed.

> Thanks.

-- 
Best regards
ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ
«If at first you don’t succeed, give up skydiving»





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-09-12 11:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-09 21:59 bug#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions Michal Nazarewicz
2016-09-10  6:46 ` Eli Zaretskii
2016-09-12 11:26   ` Michal Nazarewicz

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).