在啟用空白鍵選字時,例如為「新酷音」選詞,前三次按空白鍵直接輪換詞語候選;第四次才開啟候選窗。已輪換過的候選會排到後面。
背景:這個行為參考自早期 Windows 95 時代的「漢音輸入法」使用習慣。
此功能由使用者提出需求,並與 OpenAI Codex 協作設計、實作與測試。
noixdarec/libchewing:contribution/space-candidate-cycle into master
在啟用空白鍵選字時,例如為「新酷音」選詞,前三次按空白鍵直接輪換詞語候選;第四次才開啟候選窗。已輪換過的候選會排到後面。
背景:這個行為參考自早期 Windows 95 時代的「漢音輸入法」使用習慣。
此功能由使用者提出需求,並與 OpenAI Codex 協作設計、實作與測試。
感謝提供建議。
這個 PR 還需要更多的修改,主要是跟 Selecting 相關的狀態應該可以直接維護在 Selecting 狀態機裡面,不需要直接放在 Editor。
另外既有的關於空白鍵選字的測試失敗了,為了避免改變既有行為,請加上新的 EditorOptions 控制這個行為,讓使用者可以選用。
@ -614,0 +636,4 @@
pub(crate)fn order_space_cycle_candidates(
&self,
begin: usize,
end: usize,
看不太懂 order_space_cycle_candidates() 的用意是什麼,是把已經 space cycle 看過的後選詞排序到最後面嗎?
這樣會破壞選單的排序不變性。我覺得這個部份可以省略,繼續讓選單維持原本的順序就可以了。
@ -866,0 +986,4 @@
&&!key_event.is_state_on(KeyState::Control)
&&!key_event.is_state_on(KeyState::Shift));
if!preserve_space_cycle{
self.shared.clear_space_cycle();
跟 Selecting 有關的狀態維護應該放在 Selecting::next() 裡面處理,這樣就不用區分是否 was_selecting
@ -889,1 +1014,4 @@
}
ifwas_selecting&&!self.is_selecting(){
self.shared.clear_space_cycle();
}
這個狀態的維護應該要放在從 Selecting 轉換到 Entering 的 Selecting::start_entering 這個 method 裡面
@ -226,0 +227,4 @@
self.begin,
self.end,
self.base_candidates(editor,dict),
)
這個感覺很奇怪,PhraseSelector 不應該使用 Editor 來維護 candidates list
Archived
Archived
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?