On Friday 12 August 2005 14:21, Peter Stephenson wrote: > After this, completion is basically working with ZLE_UNICODE_SUPPORT > defined when you stick to using single-byte characters. It's almost > time to allow that to be enabled by default, which will help picking up > the remaining problems with multi-byte characters: those are likely to > be widespread, but probably in most cases fixable by local changes. > Hat off to you, Sir! It is worth more than pizza ... Multibyte basically works (ru_RU.UTF-8, Mandrake^H^H^Hiva cooker, gcc 4.0.1, glibc 2.3.5). I.e. basic line editing (movement char, word, emacs or vi mode). Completion - i.e. listing etc. Some random problems. 1. attempt to use a-a-m-c results in {pts/2}% ll кккккккк ккккккккккк/home/bor/src/zsh/Src/Zle/compresult.c:690: line not metafied zsh: segmentation fault (core dumped) pkg/bin/zsh #0 0xb7bef892 in hasbrpsfx (m=0x8178a50, pre=0x0, suf=0x0) at /home/bor/src/zsh/Src/Zle/compresult.c:699 699 memcpy(oline, zlemetaline, zlemetall); (gdb) bt #0 0xb7bef892 in hasbrpsfx (m=0x8178a50, pre=0x0, suf=0x0) at /home/bor/src/zsh/Src/Zle/compresult.c:699 #1 0xb7bf1e67 in calclist (showall=1) at /home/bor/src/zsh/Src/Zle/compresult.c:1489 #2 0xb7f4e3a4 in complistmatches (dummy=0xb7bf6ab0, dat=0xbff669b0) at /home/bor/src/zsh/Src/Zle/complist.c:1608 #3 0x080961f4 in runhookdef (h=0xb7bf6ab0, d=0xbff669b0) at /home/bor/src/zsh/Src/module.c:1889 #4 0xb7bf4761 in list_matches (dummy=0xb7c2cec0, dummy2=0x0) at /home/bor/src/zsh/Src/Zle/compresult.c:2200 #5 0x080961f4 in runhookdef (h=0xb7c2cec0, d=0x0) at /home/bor/src/zsh/Src/module.c:1889 #6 0xb7c14a5e in zrefresh () at /home/bor/src/zsh/Src/Zle/zle_refresh.c:752 #7 0xb7f5027c in domenuselect (dummy=0xb7bf6a74, dat=0xbff66fe0) at /home/bor/src/zsh/Src/Zle/complist.c:2153 #8 0x0809618f in runhookdef (h=0xb7bf6a74, d=0xbff66fe0) at /home/bor/src/zsh/Src/module.c:1883 #9 0xb7bdea62 in after_complete (dummy=0xb7c2cefc, dat=0xbff6706c) at /home/bor/src/zsh/Src/Zle/compcore.c:506 #10 0x080961f4 in runhookdef (h=0xb7c2cefc, d=0xbff6706c) at /home/bor/src/zsh/Src/module.c:1889 #11 0xb7c19e55 in docomplete (lst=0) at /home/bor/src/zsh/Src/Zle/zle_tricky.c:851 #12 0xb7c18544 in completeword (args=0xb7c2d13c) at /home/bor/src/zsh/Src/Zle/zle_tricky.c:232 #13 0xb7c18421 in completecall (args=0xb7c2d13c) at /home/bor/src/zsh/Src/Zle/zle_tricky.c:208 #14 0xb7c0b09f in execzlefunc (func=0xb7c2b050, args=0xb7c2d13c) at /home/bor/src/zsh/Src/Zle/zle_main.c:1063 #15 0xb7c0a62b in zlecore () at /home/bor/src/zsh/Src/Zle/zle_main.c:838 #16 0xb7c0ad1b in zleread (lp=0x80e63e0, rp=0x0, flags=7, context=0) at /home/bor/src/zsh/Src/Zle/zle_main.c:992 #17 0x08080ac3 in inputline () at /home/bor/src/zsh/Src/input.c:278 #18 0x08080978 in ingetc () at /home/bor/src/zsh/Src/input.c:214 #19 0x0807775b in ihgetc () at /home/bor/src/zsh/Src/hist.c:240 #20 0x080880f4 in gettok () at /home/bor/src/zsh/Src/lex.c:628 #21 0x0808792c in yylex () at /home/bor/src/zsh/Src/lex.c:344 #22 0x080a1269 in parse_event () at /home/bor/src/zsh/Src/parse.c:451 #23 0x0807d8d6 in loop (toplevel=1, justonce=0) at /home/bor/src/zsh/Src/init.c:128 #24 0x080805ba in zsh_main (argc=1, argv=0xbff67614) at /home/bor/src/zsh/Src/init.c:1315 #25 0x08052652 in main (argc=1, argv=0xbff67614) at /home/bor/src/zsh/Src/main.c:93 apparently it correctly inserts first match but crashes at recursive completion attempt. 2. Attempt to complete anything beyond U'd183' results in {pts/2}% ll уBUG: substring ends in the middle of a metachar in ztrsub()mpleting `files' ll у {pts/2}% echo у | xxd 0000000: d183 0a ... I do not know what is magic about it; all characters before are completed normally. Probably it somehow clashes with META characters. The above is in UTF-8, it is 0400 unicode plane, character in question is 0443. 3. emacs ^W sometimes removes too much not just a previous word in Russian (where word delimiter in this case is space): {pts/2}% ll АААААА ББББББББ ВВВВВВВВВ^W {pts/2}% 4. Undo (in emacs or vi) often puts cursor not at previous position but at some random position. In the above example, if I have anyhing after cursor: {pts/2}% ll А Б В^W ^cursor here {pts/2}% ^_ ^ cursor here {pts/2}% ll А Б В ^ cursor here the position is really random, sometimes it is end of buffer sometimes more. But yes, I think it makes sense enable UNICODE by default now. It seems to be usable, at least for simple filename completion. Thank you -andrey
Attachment:
pgp4l3ke63Q63.pgp
Description: PGP signature