Breaking Changes in API
Skim::run_with
now accept a stream ofSkimItem
instead of aBufRead
.
Feature:
- #233 support mouse scroll/click event
- #254 support
{+}
in preview and execute command - #226 support exact match
combination(e.g.
^abc$
) - #216 support item specific preview hook method
- #219 support case insensitive match
Bug fixes:
- #252 Deal with
\b
correctly - #210 exclude current item in multi-selection
- #225 disable score in filter output
Feature:
- New fuzzy matching algorithm, should be more precise and faster.
Bug fixes:
- PR #227
Fix
isatty
check on more OS. - Fix various cases where ANSI code not behave correctly.
Bug fixes:
- PR #171 search with more than one multi-byte condition would crash skim.
- #194 color not working with ag
- #196
+
in execute expression was eaten by skim - bind
Home
key tobegining-of-line
by default. - #192 Prompt was eaten in shell completion
- #205
tabstop of selection was initialized to
0
, now to8
. - #207 color config not working for header
Feature:
- New action:
if-query-empty
,if-query-not-empty
. Execute actions on certain query conditions. - New action:
append-and-select
allows you to append current query to the item pool and select it. It would help to turn skim into a tag manager where new tags could be added to the candidate list.
Bug fixes:
- Fix #188: crates.io breaks on 0.6.7
- Fix:
run_with
will break if called multiple times from the same process. - Update nix to 0.14
Feature:
- Refer to query and command query with
{q}
and{cq}
in preview command. - Support fzf's theme strings, e.g.
bg+
for current line's background. - Support customizing styles of query strings.
Bug fixes:
- skim would crash if multiple CJK items are matched in an
OR
query. - SKIM_DEFAULT_COMMAND not correctly recognized in
sk-tmux
- UI responses are slow on large input
fix #158: preview window not udpate correctly.
Bug Fixes:
- #155: screen is not fully cleared upon resize
- #156: preview dies on large chunk of input
- #157: cursor overflow on empty input
- #154: reduce CPU usage on idle
- wrong matches on empty input lines
Fix: #153 build fail with rust 2018 (1.31.0)
Feature:
- support action:
execute
- support action chaining
- preview window actions:
toggle-preview-wrap
,preview-[up|down|left|right]
,preview-page-[up|down]
- support
--filter
mode, it will print out the screen and matched item - support more (alt) keys
Bug Fixes:
- wrong cursor position after item changed
- #142: NULL character was dropped with
--ansi
- regression:
--margin
not working - #148: screen won't clear in interactive mode
- number of matched item not showing correctly (during matching)
- lag in changing query on large collection of inputs
Feature:
- Support
--header-lines
- Support
--layout
- Update the latest fzf.vim
Fix:
- compile fail with rust 2018 (1.31.0)
- reduce the time on exit. It took time to free memories on large collections.
Performance improvement.
This is a large rewrite of skim, previously there are 4 major components of skim:
- reader: for reading from command or piped input
- sender: will cache the lines from reader and re-send all lines to matcher on restart
- matcher: match against the lines and send the matched items to model
- model: handle the selection of items and draw on screen.
They are communicated using rust's channel
which turned out to be too slow
in skim's use case. Now we use SpinLock
for sharing data. The performance on
large collections are greatly improved.
Besides, use tuikit
for buferred rendering.
Bug fixes:
- fix: regression on
--with-nth
feature - fix: 100% CPU on not enough printing area
Emergency release that fix test failures which breaks APKBUILD. Check out #128.
Features:
--header
for adding header line--inline-info
for displaying info besides query- run preview commands asynchronizely
- implement action
delete-charEOF
- support key:
ctrl+space
More bug fixes, noticable ones are:
- Panic on reading non-utf8 characters
- 100% CPU when input is not ready
- fix: stop command immediately on accept or abort.
- minor optimization over ASCII inputs.
- #90: escape quotes in specified preview command
Use cross to build targets.
Change the field syntax to be fzf compatible.
- Previously it was git style
- fields starts with
0
1..3
results in2, 3
(which is0, 1, 2, 3
minus0, 1
)
- fields starts with
- Now it is
cut
style- fields starts with
1
1..3
results in1, 2, 3
- fields starts with
Refactor skim into a library. With minor bug fixes:
- support multiple arguments, to be a drop-in replacement of fzf.
- support negative range field. (e.g.
-1
to specify the last field) - respond to terminal resize event on Mac.
Some minor enhancements that might comes handy.
- Reserve all fzf options, so that skim can be a drop-in replacement of fzf.
- Fix: the number of columns a unicode character occupies
- Accept multiple values for most options. So that you can safely put them
in
$SKIM_DEFAULT_OPTIONS
and override it in command line.
Thanks to @magnetophon for the bug report and feature requests.
Support more options, and reserve several others. The purpose is to reuse
fzf.vim
as much as possible.
--print0
: use NUL(\0) as field separator for output.--read0
: read input delimited by NUL(\0) characters--tabstop
: allow customizing tabstop (default to 8).--no-hscroll
: disable hscroll on match.- reserve several other options, skim will do nothing on them instead of throwing errors.
This release starts from adding --height
featuren, ends up a big change in
the code base.
- feature:
--bind
accept character keys. Only Ctrl/Alt/F keys were accepted. - feature: support multiple
--bind
options. (replace getopts with clap.rs) - feature:
--tac
to reverse the order of input lines. - feature:
--preview
to show preview of current selected line. - feature:
--height
to use only part instead of full of the screen. - test: use tmux for integration test
- replace ncurses-rs with termion, now skim is fully rust, no C bindings.