Commit Graph

102 Commits

Author SHA1 Message Date
ebcec3af6b fix(engine): send clients the composed Telex text, not the keys
For Vietnamese the preedit is the map key ('as', 'oong'); only the popup
and the commit path looked it up. Clients with inline preedit therefore
showed 'as' while Enter committed 'á'. impre() now maps once for every
reader, and snapshot() no longer maps a second time.
2026-08-16 15:57:55 +09:00
c7718ece52 data: one trie for maps and dictionaries, one loader
The hash map served a single exact-match lookup that the trie already
answers, at the price of a second container, a second file loader with
its own drift, and a Str-to-UTF-8 conversion on every chain probe. The
files are small (kanji.dict is 7.5k lines), so the trie holds both.
trieopen validates keys and each space-separated value word against Str
and reports path:line; trielookup takes the Str every caller holds and
treats a nil trie as an unloaded map; trienew/trieput exist for tests.
The overflow guards on growth, Trie.root (always 0) and the per-language
init loop written twice are gone.
2026-08-16 15:56:32 +09:00
67ed2ef478 fix(engine): redraw only for visible caret changes 2026-08-15 15:07:13 +09:00
bfe83d0119 fix(data): reject partial and malformed map data 2026-08-14 23:09:55 +09:00
59482d00f3 fix(engine): compare logical transition state
Avoid reading inactive Str storage when deciding whether to publish a redraw. Keep the focused engine suite compact by retaining one case for each page, navigation, and empty-result invariant.
2026-08-14 22:46:42 +09:00
5dc2530951 fix(engine): make composition transitions deterministic 2026-08-14 22:13:16 +09:00
e4fc327ffd popup: show the candidate page 2026-08-14 20:06:53 +09:00
4cac6f1a15 engine: use stable candidate pages 2026-08-14 19:27:22 +09:00
2e6d7d8e48 xim: clear callback preedit on owner loss 2026-08-14 19:17:37 +09:00
b536573622 engine: update active preedit capability 2026-08-14 18:44:52 +09:00
9a3a92170e engine: reject stale dictionary results 2026-08-14 18:43:12 +09:00
2376035524 engine: route popup preedit by client capability 2026-08-14 17:02:46 +09:00
b6a9ccd9d9 cleanup: simplify frontend request ownership 2026-08-13 21:57:32 +09:00
125e9349c0 fix: pass empty search backspace through 2026-08-12 21:35:33 +09:00
136695a900 hanja: separate temporary search mode 2026-08-12 21:23:10 +09:00
4e1c15dde4 hanja: add single-character dictionary data 2026-08-12 19:29:11 +09:00
0216cc3c8a hanja: add one-shot Korean search 2026-08-12 19:19:26 +09:00
a8a6c3b455 fix: construct Plan 9 paths without truncation 2026-08-12 17:28:17 +09:00
5927f6a5e1 fix: forward input at the composition limit 2026-08-12 16:21:33 +09:00
103f2ec448 fix: harden small core containers 2026-08-12 15:54:16 +09:00
bc5712b6ac fix: retain the active owner's caret 2026-08-12 15:44:04 +09:00
5ba5cf209c fix: assign one active engine owner 2026-08-12 15:41:46 +09:00
9c244d1dd1 fix: retain the newest dictionary request 2026-08-12 15:37:50 +09:00
d0def814ef refactor: remove empty language maps 2026-08-12 15:35:02 +09:00
f0ba7fc5f6 fix: normalize Korean shifted input 2026-08-12 15:32:28 +09:00
6dfbc08704 fix: correct Katakana composition 2026-08-12 15:29:35 +09:00
ec7e6eb992 fix: preserve complete Japanese readings 2026-08-12 15:28:16 +09:00
2ae87a3926 emoji: repair one-shot candidate selection 2026-08-12 02:08:01 +09:00
0fff17c8b8 emoji: add one-shot candidate search 2026-08-11 22:24:59 +09:00
82276bf37f strengthen core unit tests
Add table-driven dictionary miss and language-switch state coverage, regress stale candidates after backspace, and clear them before dictionary refresh. Keep IPC and runtime-created file checks outside the unit runner.
2026-08-11 21:12:23 +09:00
9dc116a035 harden ipc and frontend recovery 2026-08-11 19:34:47 +09:00
7b40ef419f fix vietnamese telex state 2026-08-11 19:34:14 +09:00
b63122dd14 add GtkInputPurpose 2026-08-03 12:03:45 +09:00
7e69827c13 passthrough unmatched keys 2026-05-28 23:38:23 +09:00
f4347b70cc default popup off 2026-05-28 19:07:28 +09:00
b842c724e2 add popup toggle 2026-05-28 18:10:41 +09:00
ef749ba730 add preedit to ipc 2026-05-28 17:28:42 +09:00
884ba56619 optimize rendering 2026-02-08 18:10:21 +09:00
64d50afc6b fix kouho selection. 2026-02-08 17:43:26 +09:00
b887972fb2 vietnamese telex input 2026-02-08 16:57:52 +09:00
d06cef6575 add lang dispatch, korean hangul input 2026-02-08 16:52:08 +09:00
5653298bb1 use trie for map lookup 2026-02-08 16:36:59 +09:00
97f897755f rename hnode fields, functions. 2026-02-08 16:29:29 +09:00
db2b3eacad add vietnam telex input 2026-01-01 18:22:16 +09:00
559b82ec9b strans.c:Fix preedit window is not displayed or cleared. 2026-01-01 13:52:41 +09:00
72063f84b7 set default language to English
add dummy map/english.map
2025-12-28 17:33:50 +09:00
97ae9b1709 add eomji(ctrl+e)
TODO: Some emojis can't be displayed. A font fallback or font merge is required.
2025-12-28 16:49:26 +09:00
436a49c3ca remove jp.c 2025-12-28 13:02:53 +09:00
e5ce5fd61e rename line => pre 2025-12-28 12:26:28 +09:00
8a2ef65379 remove hangul.dict 2025-12-28 11:58:18 +09:00