--with-big5 enables Chinese Big5 charset support. Patch by vanilla@freebsd.org

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1458 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2001-05-01 09:38:06 +00:00 committed by cras
commit 6d4f2ab6fa
3 changed files with 48 additions and 0 deletions

View file

@ -152,6 +152,11 @@ void gui_entry_erase(int size)
{
if (pos < size) return;
#ifdef WANT_BIG5
if (is_big5(entry->str[pos-2], entry->str[pos-1]))
size++;
#endif WANT_BIG5
pos -= size;
g_string_erase(entry, pos, size);
@ -217,6 +222,13 @@ void gui_entry_set_pos(int p)
void gui_entry_move_pos(int p)
{
#ifdef WANT_BIG5
if (p > 0 && is_big5 (entry->str[pos], entry->str[pos+1]))
p++;
else if (p < 0 && is_big5 (entry->str[pos-1], entry->str[pos]))
p--;
#endif WANT_BIG5
if (pos+p >= 0 && pos+p <= entry->len)
pos += p;

View file

@ -16,6 +16,21 @@
#define ATTR_COLOR8 0x200
#define ATTR_REVERSE 0x400
/* XXX I hope this could be integrated into BX.
* XXX Well, this should be done via libc,
* but FreeBSD libc support is quite LAME.
* Macro below are copied from lynx.
*
* clive@FreeBSD.org
*/
#ifdef WANT_BIG5
/* XXX I didn't check the encoding range of big5+. This is standard big5. */
#define is_big5_los(lo) (((char)0x40<=lo)&&(lo<=(char)0x7E)) /* standard */
#define is_big5_lox(lo) (((char)0x80<=lo)&&(lo<=(char)0xFE)) /* extended */
#define is_big5_hi(hi) (((char)0x81<=hi)&&(hi<=(char)0xFE))
#define is_big5(hi,lo) is_big5_hi(hi) && (is_big5_los(lo) || is_big5_lox(lo))
#endif WANT_BIG5
int init_screen(void); /* Initialize screen, detect screen length */
void deinit_screen(void); /* Deinitialize screen */