Skip to content

Commit be0b9cc

Browse files
committed
refactor(editor): new state machine design
1 parent cfaa4ad commit be0b9cc

File tree

4 files changed

+391
-197
lines changed

4 files changed

+391
-197
lines changed

capi/chewing-internal/src/io.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,15 @@ pub extern "C" fn chewing_KBStr2Num(str: *const c_char) -> c_int {
157157
#[no_mangle]
158158
pub extern "C" fn chewing_set_ChiEngMode(ctx: &mut ChewingContext, mode: c_int) {
159159
match mode {
160-
CHINESE_MODE => ctx.editor.language_mode = LanguageMode::Chinese,
161-
SYMBOL_MODE => ctx.editor.language_mode = LanguageMode::English,
160+
CHINESE_MODE => ctx.editor.set_language_mode(LanguageMode::Chinese),
161+
SYMBOL_MODE => ctx.editor.set_language_mode(LanguageMode::English),
162162
_ => warn!("invalid language mode {}", mode),
163163
}
164164
}
165165

166166
#[no_mangle]
167167
pub extern "C" fn chewing_get_ChiEngMode(ctx: &ChewingContext) -> c_int {
168-
match ctx.editor.language_mode {
168+
match ctx.editor.language_mode() {
169169
LanguageMode::Chinese => CHINESE_MODE,
170170
LanguageMode::English => SYMBOL_MODE,
171171
}
@@ -174,15 +174,15 @@ pub extern "C" fn chewing_get_ChiEngMode(ctx: &ChewingContext) -> c_int {
174174
#[no_mangle]
175175
pub extern "C" fn chewing_set_ShapeMode(ctx: &mut ChewingContext, mode: c_int) {
176176
match mode {
177-
HALFSHAPE_MODE => ctx.editor.character_form = CharacterForm::Halfwidth,
178-
FULLSHAPE_MODE => ctx.editor.character_form = CharacterForm::Fullwidth,
177+
HALFSHAPE_MODE => ctx.editor.set_character_form(CharacterForm::Halfwidth),
178+
FULLSHAPE_MODE => ctx.editor.set_character_form(CharacterForm::Fullwidth),
179179
_ => warn!("invalid shape mode {}", mode),
180180
}
181181
}
182182

183183
#[no_mangle]
184184
pub extern "C" fn chewing_get_ShapeMode(ctx: &ChewingContext) -> c_int {
185-
match ctx.editor.character_form {
185+
match ctx.editor.character_form() {
186186
CharacterForm::Halfwidth => HALFSHAPE_MODE,
187187
CharacterForm::Fullwidth => FULLSHAPE_MODE,
188188
}
@@ -200,12 +200,13 @@ pub extern "C" fn chewing_get_candPerPage(ctx: &ChewingContext) -> c_int {
200200

201201
#[no_mangle]
202202
pub extern "C" fn chewing_set_maxChiSymbolLen(ctx: &mut ChewingContext, n: c_int) {
203-
ctx.editor.options.auto_commit_threshold = n as usize
203+
// ctx.editor.options.auto_commit_threshold = n as usize
204204
}
205205

206206
#[no_mangle]
207207
pub extern "C" fn chewing_get_maxChiSymbolLen(ctx: &ChewingContext) -> c_int {
208-
ctx.editor.options.auto_commit_threshold as c_int
208+
// ctx.editor.options.auto_commit_threshold as c_int
209+
-1
209210
}
210211

211212
#[no_mangle]
@@ -497,10 +498,7 @@ pub extern "C" fn chewing_handle_PageDown(ctx: &mut ChewingContext) -> c_int {
497498

498499
#[no_mangle]
499500
pub extern "C" fn chewing_handle_Down(ctx: &mut ChewingContext) -> c_int {
500-
let key_event = ctx
501-
.keyboard
502-
.map_with_mod(KeyCode::Down, Modifiers::default());
503-
ctx.editor.process_keyevent(key_event);
501+
ctx.editor.process_keyevent(ctx.keyboard.map(KeyCode::Down));
504502
0
505503
}
506504

@@ -511,8 +509,8 @@ pub extern "C" fn chewing_handle_Capslock(ctx: &mut ChewingContext) -> c_int {
511509

512510
#[no_mangle]
513511
pub extern "C" fn chewing_handle_Default(ctx: &mut ChewingContext, key: c_int) -> c_int {
514-
let key_event = ctx.keyboard.map_ascii(key as u8);
515-
ctx.editor.process_keyevent(key_event);
512+
ctx.editor
513+
.process_keyevent(ctx.keyboard.map_ascii(key as u8));
516514
0
517515
}
518516

@@ -633,7 +631,7 @@ pub extern "C" fn chewing_cand_CurrentPage(ctx: &ChewingContext) -> c_int {
633631

634632
#[no_mangle]
635633
pub extern "C" fn chewing_cand_Enumerate(ctx: &mut ChewingContext) {
636-
todo!()
634+
// let candidates = ctx.
637635
}
638636

639637
#[no_mangle]

src/conversion.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ pub struct Composition {
7070
/// TODO: doc
7171
pub selections: Vec<Interval>,
7272
/// TODO: doc
73+
/// TODO: merge with symbol?
7374
pub breaks: Vec<Break>,
7475
}
7576

0 commit comments

Comments
 (0)