From f26d38619125d1cc820d9c7346ce91979d625a80 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Mon, 13 Jun 2005 02:48:52 +0000
Subject: [PATCH] simplify the word detection code

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2641 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   |  4 ++--
 src/chars.c | 38 +++++---------------------------------
 src/proto.h |  2 --
 3 files changed, 7 insertions(+), 37 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index afe72d5b..6ec79fbb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -67,8 +67,8 @@ CVS code -
 	  shortcut_init() and do_next_word(). (DLR)
 	- Detect words more accurately by taking punctuation into
 	  account, and convert all word-detecting functions to use the
-	  same wrapper function for ease of maintenance.  New functions
-	  is_punct_mbchar() and is_word_mbchar(); changes to
+	  same wrapper function for ease of maintenance.  Changes to
+	  is_alnum_mbchar() (renamed is_word_mbchar()); changes to
 	  do_next_word(), do_prev_word(), is_whole_word(),
 	  do_statusbar_next_word(), and do_statusbar_prev_word(). (DLR)
 - chars.c:
diff --git a/src/chars.c b/src/chars.c
index 57e1a71c..f35dc3a2 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -46,27 +46,6 @@ bool is_byte(int c)
     return ((unsigned int)c == (unsigned char)c);
 }
 
-/* This function is equivalent to isalnum() for multibyte characters. */
-bool is_alnum_mbchar(const char *c)
-{
-    assert(c != NULL);
-
-#ifdef NANO_WIDE
-    if (!ISSET(NO_UTF8)) {
-	wchar_t wc;
-	int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
-
-	if (c_mb_len <= 0) {
-	    mbtowc(NULL, NULL, 0);
-	    wc = (unsigned char)*c;
-	}
-
-	return iswalnum(wc);
-    } else
-#endif
-	return isalnum((unsigned char)*c);
-}
-
 #ifndef HAVE_ISBLANK
 /* This function is equivalent to isblank(). */
 bool nisblank(int c)
@@ -146,8 +125,9 @@ bool is_cntrl_mbchar(const char *c)
 	return is_cntrl_char((unsigned char)*c);
 }
 
-/* This function is equivalent to ispunct() for multibyte characters. */
-bool is_punct_mbchar(const char *c)
+/* Return TRUE for a multibyte character found in a word (currently only
+ * an alphanumeric or punctuation character) and FALSE otherwise. */
+bool is_word_mbchar(const char *c)
 {
     assert(c != NULL);
 
@@ -161,18 +141,10 @@ bool is_punct_mbchar(const char *c)
 	    wc = (unsigned char)*c;
 	}
 
-	return iswpunct(wc);
+	return iswalnum(wc) || iswpunct(wc);
     } else
 #endif
-	return ispunct((unsigned char)*c);
-}
-
-/* This function returns TRUE for a multibyte character found in a word
- * (currently only an alphanumeric or punctuation character) and FALSE
- * otherwise. */
-bool is_word_mbchar(const char *c)
-{
-    return is_alnum_mbchar(c) || is_punct_mbchar(c);
+	return isalnum((unsigned char)*c) || ispunct((unsigned char)*c);
 }
 
 /* c is a control character.  It displays as ^@, ^?, or ^[ch], where ch
diff --git a/src/proto.h b/src/proto.h
index 7ce99ec4..2dbbbca5 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -160,7 +160,6 @@ extern char *homedir;
 
 /* Public functions in chars.c. */
 bool is_byte(int c);
-bool is_alnum_mbchar(const char *c);
 #ifndef HAVE_ISBLANK
 bool nisblank(int c);
 #endif
@@ -173,7 +172,6 @@ bool is_cntrl_char(int c);
 bool is_cntrl_wchar(wint_t wc);
 #endif
 bool is_cntrl_mbchar(const char *c);
-bool is_punct_mbchar(const char *c);
 bool is_word_mbchar(const char *c);
 char control_rep(char c);
 #ifdef NANO_WIDE
-- 
GitLab