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:
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)
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);
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
/* 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
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