From 3c9d4dfb90fbc67e344cfa330108640968c3c0a3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 13 Dec 2016 12:43:20 +0530 Subject: [PATCH] Fix designate_charset without change_charset not taking effect --- kitty/screen.c | 5 +++++ kitty_tests/parser.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/kitty/screen.c b/kitty/screen.c index 1a4cd0c11..821e78e76 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -176,12 +176,17 @@ screen_change_charset(Screen *self, uint32_t which) { void screen_designate_charset(Screen *self, uint32_t which, uint32_t as) { + bool change_g = false; switch(which) { case 0: + change_g = self->g_charset == self->g0_charset; self->g0_charset = translation_table(as); + if (change_g) self->g_charset = self->g0_charset; break; case 1: + change_g = self->g_charset == self->g1_charset; self->g1_charset = translation_table(as); + if (change_g) self->g_charset = self->g1_charset; break; // We dont care about default as this is guaranteed to only be called with correct which by the parser } diff --git a/kitty_tests/parser.py b/kitty_tests/parser.py index 329eadbf2..dd7b7e8c6 100644 --- a/kitty_tests/parser.py +++ b/kitty_tests/parser.py @@ -75,6 +75,10 @@ class TestParser(BaseTest): pb('\033)0\x0e/_', ('screen_designate_charset', 1, ord('0')), ('screen_change_charset', 1), '/_') self.ae(str(s.line(0)), '/\xa0 ') pb('\033%G_', ('screen_use_latin1', 0), '_') + s = self.create_screen() + pb = partial(self.parse_bytes_dump, s) + pb('\033(0/_', ('screen_designate_charset', 0, ord('0')), '/_') + self.ae(str(s.line(0)), '/\xa0 ') def test_csi_codes(self): s = self.create_screen()