engine: a Hanja reading answers with the words it begins
hanjaquery matched the reading exactly, so a word was reachable only once every syllable of it had been typed, and the popup went blank on the way there. Measured over map/hanja.dict's 187,304 readings: 95,024 proper prefixes of a word answer with nothing today, and 66,731 of those are the keystroke just before the word completes -- 대한민 is one, so 대한민국 looks absent until the last key lands. dictprefix walks the entry at a node before its children, so the reading's own conversions keep their place and the words follow: 34,441 readings gain candidates and none of the 187,304 has its existing order changed. A jamo reading is untouched, since the two keyspaces do not meet and ㅁ has no children. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
9
strans.c
9
strans.c
@@ -627,13 +627,18 @@ emojiquery(void)
|
||||
selectfirst();
|
||||
}
|
||||
|
||||
/* The keys typed since Ctrl+H go on composing from the seed. */
|
||||
/*
|
||||
* The keys typed since Ctrl+H go on composing from the seed. A reading
|
||||
* is also the start of the longer words it begins, so its own
|
||||
* conversions come first and theirs follow: 대한 answers 大寒 and, past
|
||||
* them, 大韓民國.
|
||||
*/
|
||||
static void
|
||||
hanjaquery(void)
|
||||
{
|
||||
transstr(im.l, &search.seed, &search.raw, &search.text);
|
||||
clearkouho();
|
||||
im.nkouho = dictlookup(getlang(LangHANJA)->dict, &search.text,
|
||||
im.nkouho = dictprefix(getlang(LangHANJA)->dict, &search.text,
|
||||
im.kouho, Maxkouho);
|
||||
selectfirst();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user