GNU bug report logs - #24398
[PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions

Previous Next

Package: emacs;

Reported by: Michal Nazarewicz <mina86 <at> mina86.com>

Date: Fri, 9 Sep 2016 22:00:03 UTC

Severity: wishlist

Tags: patch

Done: Michal Nazarewicz <mina86 <at> mina86.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Michal Nazarewicz <mina86 <at> mina86.com>
Subject: bug#24398: closed (Re: bug#24398: [PATCH] Refactor common code in
 {upcase, downcase, capitalize}-word functions)
Date: Mon, 12 Sep 2016 11:27:01 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#24398: [PATCH] Refactor common code in {upcase, downcase, capitalize}-word functions

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 24398 <at> debbugs.gnu.org.

-- 
24398: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24398
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Michal Nazarewicz <mina86 <at> mina86.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24398-done <at> debbugs.gnu.org
Subject: Re: bug#24398: [PATCH] Refactor common code in {upcase, downcase,
 capitalize}-word functions
Date: Mon, 12 Sep 2016 13:26:16 +0200
On Sat, Sep 10 2016, Eli Zaretskii wrote:
>> From: Michal Nazarewicz <mina86 <at> 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»

[Message part 3 (message/rfc822, inline)]
From: Michal Nazarewicz <mina86 <at> mina86.com>
To: bug-gnu-emacs <at> gnu.org
Subject: [PATCH] Refactor common code in {upcase, downcase,
 capitalize}-word functions
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.
---
 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.  */)
 }
 
 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;
 }
 
-- 
2.8.0.rc3.226.g39d4020




This bug report was last modified 8 years and 254 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.