mirror of
https://github.com/irssi/irssi.git
synced 2026-08-08 19:30:15 +02:00
Move is_combining_char() to core utf8 module
Relocate is_combining_char() from gui-entry.c to src/core/utf8.c as suggested in code review. This better organizes the codebase by placing UTF-8 character classification logic with other UTF-8 utilities in the core module. The function now uses is_utf8() instead of checking term_type directly, which is the appropriate method for core layer code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
becc4f9068
commit
20fbea0e2d
3 changed files with 18 additions and 14 deletions
|
|
@ -399,6 +399,20 @@ int unichar_array_find_cluster_start(const unichar *text, int text_len, int pos)
|
|||
#endif
|
||||
}
|
||||
|
||||
int is_combining_char(unichar c)
|
||||
{
|
||||
if (!is_utf8())
|
||||
return 0;
|
||||
|
||||
#ifdef HAVE_LIBUTF8PROC
|
||||
/* Use utf8proc for precise combining character detection */
|
||||
return unichar_isprint(c) && utf8proc_charwidth(c) == 0;
|
||||
#else
|
||||
/* Fallback to unichar_width for compatibility */
|
||||
return unichar_isprint(c) && unichar_width(c) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void utf8_init(void)
|
||||
{
|
||||
/* no-op */
|
||||
|
|
|
|||
|
|
@ -72,6 +72,10 @@ int unichar_array_move_cluster_backward(const unichar *text, int text_len, int *
|
|||
* Returns the codepoint index of the cluster start. */
|
||||
int unichar_array_find_cluster_start(const unichar *text, int text_len, int pos);
|
||||
|
||||
/* Check if a unichar is a combining character (width 0).
|
||||
* Returns 1 if the character is combining, 0 otherwise. */
|
||||
int is_combining_char(unichar c);
|
||||
|
||||
/* Initialize UTF-8 debugging system */
|
||||
void utf8_init(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -54,20 +54,6 @@ static unichar i_tolower(unichar c)
|
|||
return c <= 255 ? tolower(c) : c;
|
||||
}
|
||||
|
||||
static int is_combining_char(unichar c)
|
||||
{
|
||||
if (term_type != TERM_TYPE_UTF8)
|
||||
return 0;
|
||||
|
||||
#ifdef HAVE_LIBUTF8PROC
|
||||
/* Use utf8proc for precise combining character detection */
|
||||
return unichar_isprint(c) && utf8proc_charwidth(c) == 0;
|
||||
#else
|
||||
/* Fallback to unichar_width for compatibility */
|
||||
return unichar_isprint(c) && unichar_width(c) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int i_isalnum(unichar c)
|
||||
{
|
||||
if (term_type == TERM_TYPE_UTF8)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue