From f26d38619125d1cc820d9c7346ce91979d625a80 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey 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 -- 2.39.5