engine: the digits type until the candidate list is engaged
Every complete reading shows its candidates, so 1-9 were candidate picks in the middle of composing: ka then 5 committed 家, and heya then 2 typed a 2 the application never asked for. They pick only once Space, Tab, or an arrow has chosen a candidate, as in Mozc; before that they are ordinary keys. A search is unchanged: its digits pick from the start.
This commit is contained in:
@@ -31,8 +31,8 @@ adjectives SKK keys by stem and okurigana (かく offers 確 and 書く), and
|
|||||||
under `Space` the reading in Katakana last, so a word the dictionary lacks
|
under `Space` the reading in Katakana last, so a word the dictionary lacks
|
||||||
converts to Katakana with one `Space`. `Space` or `Tab` chooses the first
|
converts to Katakana with one `Space`. `Space` or `Tab` chooses the first
|
||||||
candidate and then steps on, wrapping (with `Shift`, back); `Up`/`Down` and
|
candidate and then steps on, wrapping (with `Shift`, back); `Up`/`Down` and
|
||||||
`PageUp`/`PageDown` move without wrapping. An unmodified `1`-`9` commits
|
`PageUp`/`PageDown` move without wrapping. Once a candidate is chosen, an unmodified `1`-`9` commits that row of the
|
||||||
that row of the current page. `Enter` commits the chosen candidate, or the
|
current page; before that the digits type. `Enter` commits the chosen candidate, or the
|
||||||
reading when none is chosen, as `0` always does; so does typing on, or any
|
reading when none is chosen, as `0` always does; so does typing on, or any
|
||||||
key that ends the composition. `Backspace` deletes the last kana shown;
|
key that ends the composition. `Backspace` deletes the last kana shown;
|
||||||
romaji that made no kana stays in the reading as typed until it is mended.
|
romaji that made no kana stays in the reading as typed until it is mended.
|
||||||
|
|||||||
3
strans.c
3
strans.c
@@ -812,7 +812,8 @@ transition(u32int ks, u32int mod, Str *com)
|
|||||||
movekouho(n);
|
movekouho(n);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
n = numberedkouho(ks, mod);
|
/* Digits pick a candidate only once the list has been engaged. */
|
||||||
|
n = im.sel >= 0 ? numberedkouho(ks, mod) : -1;
|
||||||
if(n >= 0){
|
if(n >= 0){
|
||||||
sappend(com, &im.kouho[n]);
|
sappend(com, &im.kouho[n]);
|
||||||
reset();
|
reset();
|
||||||
|
|||||||
@@ -888,6 +888,20 @@ engine_candidate_completion(struct ct *t)
|
|||||||
CT_CHECK(t, keystroke(Kret, 0, &com));
|
CT_CHECK(t, keystroke(Kret, 0, &com));
|
||||||
checkstr(t, "Enter without candidates", "reading", &com);
|
checkstr(t, "Enter without candidates", "reading", &com);
|
||||||
|
|
||||||
|
/* A digit types on until Space engages the list. */
|
||||||
|
candidatebegin(3);
|
||||||
|
im.pre = mkstr("reading");
|
||||||
|
sclear(&com);
|
||||||
|
CT_CHECK(t, !keystroke('2', 0, &com));
|
||||||
|
checkstr(t, "digit before the list is engaged", "reading", &com);
|
||||||
|
CT_EQ_INT(t, 0, im.nkouho);
|
||||||
|
candidatebegin(3);
|
||||||
|
im.pre = mkstr("reading");
|
||||||
|
sclear(&com);
|
||||||
|
CT_CHECK(t, keystroke(' ', 0, &com));
|
||||||
|
CT_CHECK(t, keystroke('2', 0, &com));
|
||||||
|
checkstr(t, "digit after the list is engaged", "c2", &com);
|
||||||
|
|
||||||
/* A digit with no such row on the page is an ordinary key: it
|
/* A digit with no such row on the page is an ordinary key: it
|
||||||
* confirms the candidate paged to and passes on. */
|
* confirms the candidate paged to and passes on. */
|
||||||
candidatebegin(32);
|
candidatebegin(32);
|
||||||
|
|||||||
Reference in New Issue
Block a user