Mobileread
Tag Completion
#1  atjnjk 02-18-2011, 07:57 AM
I have some tags like this: !not finished, +favourite, -deleted,... After typing "!", "+" or "-" as first character, the tag completion didn't appear (Tags start with alphabetical character work just fine). I created ticket #9028 and kovidgoyal said it worked for him. I think there is something wrong in my configuration but I don't know what is. Could anyone check this and/or have the same problem? Thank you very much.
Reply 

#2  user_none 02-18-2011, 08:19 AM
+ works fine ! and - do not work.
Reply 

#3  chaley 02-18-2011, 09:48 AM
The problem is that ICU's sort_key (ICU == International Components for Unicode, sort_key == the unicode sort key generator) orders the list differently from ASCII order, putting '!' and '+' after '-' instead of before it. Calibre tells the Qt completer that the list is ordered, so unless the search gets lucky (the binary search hits exactly), the out-of-order items are never found. The same problem exists with accented characters like é, because ascii and ICU disagree about the order.

Two possible solutions:

1) change to an ascii ordering. Not sure this will really work in the face of non-ansi (larger than 255) unicode characters.

2) Tell the completer that the list is not ordered (c.setModelSorting(QCompleter.UnsortedModel). This works because the completer scans for a match, but will be somewhat more costly if the completion list is very long. My guess is that unless the list is in excess of hundreds of thousands, the performance penalty won't be visible.

I leave it to the owners of completer.py to decide what to do.
Reply 

Today's Posts | Search this Thread | Login | Register