From b31b88717172e22b49c0493185f603b8f84989ec Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Wed, 4 Sep 2024 12:49:29 +0200 Subject: the ^EUq string building escape now respects the encoding (can insert bytes or codepoints) (refs #5) * This is trickier than it sounds because there isn't one single place to consult. It depends on the context. If the string argument relates to buffer contents - as in , , etc. - the buffer's encoding is consulted. If it goes into a register (EU), the register's encoding is consulted. Everything else (O, EN, EC, ES...) expects only Unicode codepoints. * This is communicated through a new field teco_machine_stringbuilding_t::codepage which must be set in the states' initial callback. * Seems overkill just for ^EUq, but it can be used for context-sensitive processing of all the other string building constructs as well. * ^V and ^W cannot be supported for Unicode characters for the time being without an Unicode-aware parser --- src/interface.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/interface.h') diff --git a/src/interface.h b/src/interface.h index cbe10bd..bbefe88 100644 --- a/src/interface.h +++ b/src/interface.h @@ -154,6 +154,12 @@ void teco_interface_process_notify(SCNotification *notify); /** @pure */ void teco_interface_cleanup(void); +static inline guint +teco_interface_get_codepage(void) +{ + return teco_view_get_codepage(teco_interface_current_view); +} + static inline gssize teco_glyphs2bytes(teco_int_t pos) { -- cgit v1.2.3