=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tmux.h,v retrieving revision 1.1206 retrieving revision 1.1207 diff -u -r1.1206 -r1.1207 --- src/usr.bin/tmux/tmux.h 2023/08/17 14:10:28 1.1206 +++ src/usr.bin/tmux/tmux.h 2023/09/01 14:29:11 1.1207 @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.1206 2023/08/17 14:10:28 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.1207 2023/09/01 14:29:11 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -618,6 +618,15 @@ UTF8_ERROR }; +/* UTF-8 combine state. */ +enum utf8_combine_state { + UTF8_DISCARD_NOW, /* discard immediately */ + UTF8_WRITE_NOW, /* do not combine, write immediately */ + UTF8_COMBINE_NOW, /* combine immediately */ + UTF8_WRITE_MAYBE_COMBINE, /* write but try to combine the next */ + UTF8_DISCARD_MAYBE_COMBINE /* discard but try to combine the next */ +}; + /* Colour flags. */ #define COLOUR_FLAG_256 0x01000000 #define COLOUR_FLAG_RGB 0x02000000 @@ -890,7 +899,7 @@ int flags; #define SCREEN_WRITE_SYNC 0x1 -#define SCREEN_WRITE_ZWJ 0x2 +#define SCREEN_WRITE_COMBINE 0x2 screen_write_init_ctx_cb init_ctx_cb; void *arg; @@ -898,6 +907,7 @@ struct screen_write_citem *item; u_int scrolled; u_int bg; + struct utf8_data previous; }; /* Box border lines option. */ @@ -3284,6 +3294,12 @@ char *utf8_padcstr(const char *, u_int); char *utf8_rpadcstr(const char *, u_int); int utf8_cstrhas(const char *, const struct utf8_data *); + +/* utf8-combined.c */ +void utf8_build_combined(void); +int utf8_try_combined(const struct utf8_data *, + const struct utf8_data *, const struct utf8_data **, + u_int *width); /* procname.c */ char *get_proc_name(int, char *);