* Combi mode: Bang mode prefixes with len>1
This is required to match on modes that share a prefix.
Let 'power' and 'pass' be such modes for the following explanation:
Previously, only the first character of after the bang was compared,
so '!p' would always be matched to the 'pass' mode and there was no
way to limit selection in combi mode to the 'power' mode.
Now we can use prefixes of arbitrary length following the bang
such as '!po' (matches 'power' mode), or '!pa' (matches 'pass' mode).
Prefixes of length 1 are unchanged compared to the previous
behaviour, i.e. '!p' will still match 'pass'.
* Combi-mode prefixes should be utf-8 aware
* Initial support for using boxes for packing widgets.
* Make CapiTalIzation more consistent
* Move widgets to subdirectory
* Removed nolonger needed resize function.
* Small cleanup
* When switching mode, reuse view, don't rebuild it. Reduces artifacts.
* Needs cleaning up.
* Remove separate prompt argument, use display_name
* Simplify run-switcher code.
* Add notion of parents, and trigger parent update on resize.
* Use widget_get_height wrapper, avoid crash
* Size separator width based on height. (indent)
* TODO add margin to box.
* First draft version of listview.
* Add scrollbar to listview widget
* Add padding option to box
* Move access to global config out of widget. (1/2 done)
* Remove printf
* Make listview not access global config
* Add click support, implement on mode buttons.
* Re-introduce mouse handling on list-view.
* TODO draggin on scrollbar.
* Fix multi-select
* Fix warnings
* Fix include
* Only use get_display_data for displaying. (Except the select complete (ctrl-space), this needs fixing).
* Fix possible race condition in parallelization.
* Fix small bug in case-sensitive handling. (beware for collision in keybinding)
* Keep less lists around.
This patch adds a field lines_not_ascii to the MenuState structure. The
nth entry is 0 unless the nth member of MenuState.lines has a non-ascii
codepoint in it.
All comparison functions (menu_match_cb type) take an additional
argument to tell them if the thing they are matching is not_ascii. They
can use this to determine whether to collate and case-fold the
input (for non-ascii strings), or whether to use strstr/strcasestr (for
ascii strings).
The change is not currently implemented for flex matching, due to my
laziness. However, it should be a simple enough matter to add.
For my large input of 400,000 lines, this reduces typical filtering time
to about ten microseconds from about 2 seconds.