Age | Commit message (Collapse) | Author |
|
Previously, string vectors were built by reading input line-by line, and
multiple copies of string vectors were made when searching.
Now, input is read into one big buffer, and string vectors only contain
references to the strings in this buffer. This both speeds up reading of
input, and avoids unnecessary copying of strings in various places.
The main downside currently is that input read from stdin is no longer
UTF-8 normalised. This means, for example, that a search for `e` won't
necessarily match `é`. Normalisation is very slow relative to the rest
of tofi, however, and not needed for most use-cases. This could either
be solved by accepting the slowdown, or making this an option, such as
--unicode or --unicode-normalize.
|
|
This adds `_sorted` to the names of `string_vec_find` and
`desktop_vec_find`, to make it clear that these functions require their
input to already be sorted.
Also fix a potential bug from not sorting the list of desktops in drun
mode.
|
|
By using a hash table rather than binary search to find existing items,
we can avoid the need to sort the input.
|
|
Some of the string vec code was still assuming that it was just a list
of `char *`s, rather than `struct scored_string`s. Correcting that makes
future changes a little less error prone, and allows significantly
simpler history sorting for tofi-run.
|
|
This enables some simple fuzzy matching logic for searches.
|
|
|
|
There's starting to be a fair amount of duplicated code between the drun
and normal run modes. At some point in the future, it's likely to be
worth combining them, such that there's only a single
`struct search_item` or similar, and just handle the different modes at
the start and end of execution.
|
|
Probably a good idea to allow more than 128 runs of a program.
|
|
Search results will now be sorted by history first, then by the position
of the match, such that a match at the start of a result will appear
before a match later in the result.
|
|
Single letter style arguments have been removed.
|
|
A list of commands is now stored in $XDG_CACHE_HOME/.cache/tofi-compgen,
and regenerated as necessary.
|
|
This implements a rofi-like run cache. Other smaller changes include
simplification of resize logic now that there's only one surface.
|
|
- Remove the background image and libpng dependency
- Add a prompt
- Add xmalloc with out-of-memory handling
- Add beginnings of a rofi-like run cache
|
|
|
|
|