diff --git a/strans.c b/strans.c index ad2b4c6..394d7c1 100644 --- a/strans.c +++ b/strans.c @@ -673,6 +673,7 @@ reset(void) { sclear(&im.pre); sclear(&im.raw); + modemark = 0; okuriat = -1; endsearch(); } diff --git a/tests/engine_test.c b/tests/engine_test.c index 662176e..0f885b4 100644 --- a/tests/engine_test.c +++ b/tests/engine_test.c @@ -567,6 +567,7 @@ engine_direct_language_modes(struct ct *t) { Drawcmd dc; Str com; + char owner; init(); draindraw(nil); @@ -607,6 +608,16 @@ engine_direct_language_modes(struct ct *t) checkstr(t, "Korean without map", "ㄱ", &im.pre); CT_CHECK(t, keystroke(Kback, 0, &com)); CT_EQ_INT(t, 0, im.pre.n); + + /* Leaving takes the mark away as surely as typing does. */ + init(); + draindraw(nil); + ownerrequest(&owner, Keypress, 's', Mctrl); + if(CT_CHECK(t, draindraw(&dc) > 0)) + checkstr(t, "mode mark", "한", &dc.pre); + ownerrequest(&owner, Keyrelease, 0, 0); + if(CT_CHECK(t, draindraw(&dc) > 0)) + CT_EQ_INT(t, 0, dc.pre.n); } void