f1f99beceb
This is just an experimental hack and cannot happily be merged into the upstream. Zsh's line editor apparently needs a rewrite in order to support multi-byte encodings because it strongly relies on the single-byte character scheme. These patches are mostly based on the work by ono@ono.org (Thanks!): http://www.ono.org/software/zsh-euc/ What I did over this is disable the hack for non-EUC locales. Maybe the patches can be moved to shells/zsh in the future, but it's premature for the moment. Notes: - forward-char, backward-char and backward-delete-char with no numeric argument should work properly with this hack. - Completion and redisplay should work fine. - There can be some trivial side-effects. - JIS X0201-Roman and JIS X0208-Kanji are supported. - JIS X0201-Katakana and JIS X0212 Kanji are NOT supported. - Only tested with the EUC-JP (ja_JP.eucJP) locale. I'm not sure if it works for GB 2312/CNS 11643-1/KS X 1001. Any feedbacks is welcome, especially a patch if it does not work. :)
21 lines
398 B
C
21 lines
398 B
C
--- Src/Zle/zle_utils.c.orig Mon Mar 26 17:58:34 2001
|
|
+++ Src/Zle/zle_utils.c Thu May 9 17:57:20 2002
|
|
@@ -197,6 +197,17 @@
|
|
mod_export void
|
|
backdel(int ct)
|
|
{
|
|
+#ifdef ZSH_EUC
|
|
+ if (locale_is_euc) {
|
|
+ if (ct == 1) {
|
|
+ if (_mbmap_euc[line[cs-1]] & _MB2 &&
|
|
+ cs-2 >=0 &&
|
|
+ _mbmap_euc[line[cs-2]] & _MB1) {
|
|
+ ct = 2;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
shiftchars(cs -= ct, ct);
|
|
}
|
|
|