Skip to content

Commit c7da16f

Browse files
LoricAndreSkim bot
andauthored
feat: back to stable rust (#980)
* wip: stable rust, but no match indices * feat: use restored indices api * chore: use crates.io pushed 0.8.0 * chore: generate completions & manpage * fix: remove nightly-specific coverage annotations --------- Co-authored-by: Skim bot <skim-bot@skim-rs.github.io>
1 parent 1a90f4f commit c7da16f

33 files changed

+106
-137
lines changed

.githooks/pre-commit

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,4 @@ set -xeuo pipefail
22

33
cargo fmt --check --all
44
cargo clippy --all-targets --features test-utils
5-
cargo +stable check --no-default-features
6-
cargo +stable check --no-default-features --features cli
7-
cargo check --no-default-features --features nightly-frizbee
5+
cargo check --no-default-features

.github/workflows/test.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,4 @@ jobs:
113113
uses: Swatinem/rust-cache@v2
114114
- name: Build without any feature
115115
run: |
116-
cargo +stable build --no-default-features
117-
- name: Build with cli feature
118-
run: |
119-
cargo +stable build --no-default-features --features cli
120-
- name: Build with frizbee feature
121-
# Do not use +nightly to make sure we use the correct toolchain date
122-
run: |
123-
cargo build --no-default-features --features nightly-frizbee
116+
cargo build --no-default-features

Cargo.lock

Lines changed: 13 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ clap_complete_nushell = "4.5.10"
6262
interprocess = { version = "2.3.1", features = ["tokio"] }
6363
serde = { version = "1.0.228", features = ["derive"] }
6464
ron = "0.12.0"
65-
frizbee = { version = "0.7.0", optional = true }
65+
frizbee = { version = "0.8.0" }
6666
roff = "1.0.0"
6767
unicode-display-width = "0.3.0"
6868
unicode-normalization = "0.1.25"
@@ -72,11 +72,9 @@ tui-term = "0.3.1"
7272
kanal = "0.1.1"
7373

7474
[features]
75-
default = ["cli", "nightly-frizbee"]
75+
default = ["cli"]
7676
# Everyting needed to use skim as a cli (argument parsing, shell integrations...)
7777
cli = ["dep:clap", "dep:clap_complete", "dep:shlex", "dep:env_logger", "dep:clap_mangen"]
78-
# The frizbee matcher, which requires cargo nightly
79-
nightly-frizbee = ["dep:frizbee"]
8078
# Enable test utilities (e.g., Tui::new_for_test)
8179
test-utils = []
8280

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,7 @@ Any of the following applies:
102102
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/latest/download/skim-installer.sh | sh
103103
```
104104
- Using Binary: Simply [download the sk executable](https://github.com/skim-rs/skim/releases) directly.
105-
- Install from [crates.io](https://crates.io/):
106-
- For the frizbee typo-resistant matcher, we need nightly rust: `cargo +nightly-2026-02-11 install skim` (run `rustup toolchain install nightly-2026-02-11` if needed)
107-
- Otherwise, use `cargo install skim --no-default-features --features cli`
105+
- Install from [crates.io](https://crates.io/): `cargo install skim`
108106
- Build Manually:
109107
```sh
110108
$ git clone --depth 1 git@github.com:skim-rs/skim.git ~/.skim
@@ -521,7 +519,6 @@ skim = { version = "<version>", default-features = false, features = [..] }
521519
522520
_Note on features_:
523521
- the `cli` feature is required to use skim as a cli, it *should* not be needed when using it as a library.
524-
- the `nightly-frizbee` feature adds the frizbee algorithm, but requires cargo nigthly.
525522
526523
### Basic usage
527524

man/man1/sk.1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ sk \- Fuzzy Finder in rust!
88
.ie \n(.g .ds Aq \(aq
99
.el .ds Aq '
1010
.SH SYNOPSIS
11-
\fBsk\fR [\fB\-\-tac\fR] [\fB\-\-min\-query\-length\fR] [\fB\-\-no\-sort\fR] [\fB\-t\fR|\fB\-\-tiebreak\fR] [\fB\-n\fR|\fB\-\-nth\fR] [\fB\-\-with\-nth\fR] [\fB\-d\fR|\fB\-\-delimiter\fR] [\fB\-e\fR|\fB\-\-exact\fR] [\fB\-\-regex\fR] [\fB\-\-algo\fR] [\fB\-\-case\fR] [\fB\-\-normalize\fR] [\fB\-\-split\-match\fR] [\fB\-b\fR|\fB\-\-bind\fR] [\fB\-m\fR|\fB\-\-multi\fR] [\fB\-\-no\-multi\fR] [\fB\-\-no\-mouse\fR] [\fB\-c\fR|\fB\-\-cmd\fR] [\fB\-i\fR|\fB\-\-interactive\fR] [\fB\-I \fR] [\fB\-\-color\fR] [\fB\-\-no\-hscroll\fR] [\fB\-\-keep\-right\fR] [\fB\-\-skip\-to\-pattern\fR] [\fB\-\-no\-clear\-if\-empty\fR] [\fB\-\-no\-clear\-start\fR] [\fB\-\-no\-clear\fR] [\fB\-\-show\-cmd\-error\fR] [\fB\-\-cycle\fR] [\fB\-\-disabled\fR] [\fB\-\-layout\fR] [\fB\-\-reverse\fR] [\fB\-\-height\fR] [\fB\-\-no\-height\fR] [\fB\-\-min\-height\fR] [\fB\-\-margin\fR] [\fB\-p\fR|\fB\-\-prompt\fR] [\fB\-\-cmd\-prompt\fR] [\fB\-\-selector\fR] [\fB\-\-multi\-selector\fR] [\fB\-\-ansi\fR] [\fB\-\-tabstop\fR] [\fB\-\-info\fR] [\fB\-\-no\-info\fR] [\fB\-\-inline\-info\fR] [\fB\-\-header\fR] [\fB\-\-header\-lines\fR] [\fB\-\-border\fR] [\fB\-\-wrap\fR] [\fB\-\-history\fR] [\fB\-\-history\-size\fR] [\fB\-\-cmd\-history\fR] [\fB\-\-cmd\-history\-size\fR] [\fB\-\-preview\fR] [\fB\-\-preview\-window\fR] [\fB\-q\fR|\fB\-\-query\fR] [\fB\-\-cmd\-query\fR] [\fB\-\-read0\fR] [\fB\-\-print0\fR] [\fB\-\-print\-query\fR] [\fB\-\-print\-cmd\fR] [\fB\-\-print\-score\fR] [\fB\-\-print\-header\fR] [\fB\-\-no\-strip\-ansi\fR] [\fB\-1\fR|\fB\-\-select\-1\fR] [\fB\-0\fR|\fB\-\-exit\-0\fR] [\fB\-\-sync\fR] [\fB\-\-pre\-select\-n\fR] [\fB\-\-pre\-select\-pat\fR] [\fB\-\-pre\-select\-items\fR] [\fB\-\-pre\-select\-file\fR] [\fB\-f\fR|\fB\-\-filter\fR] [\fB\-\-shell\fR] [\fB\-\-shell\-bindings\fR] [\fB\-\-man\fR] [\fB\-\-listen\fR] [\fB\-\-remote\fR] [\fB\-\-tmux\fR] [\fB\-\-log\-file\fR] [\fB\-\-expect\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
11+
\fBsk\fR [\fB\-\-tac\fR] [\fB\-\-min\-query\-length\fR] [\fB\-\-no\-sort\fR] [\fB\-t\fR|\fB\-\-tiebreak\fR] [\fB\-n\fR|\fB\-\-nth\fR] [\fB\-\-with\-nth\fR] [\fB\-d\fR|\fB\-\-delimiter\fR] [\fB\-e\fR|\fB\-\-exact\fR] [\fB\-\-regex\fR] [\fB\-\-algo\fR] [\fB\-\-case\fR] [\fB\-\-normalize\fR] [\fB\-\-split\-match\fR] [\fB\-b\fR|\fB\-\-bind\fR] [\fB\-m\fR|\fB\-\-multi\fR] [\fB\-\-no\-multi\fR] [\fB\-\-no\-mouse\fR] [\fB\-c\fR|\fB\-\-cmd\fR] [\fB\-i\fR|\fB\-\-interactive\fR] [\fB\-I \fR] [\fB\-\-color\fR] [\fB\-\-no\-hscroll\fR] [\fB\-\-keep\-right\fR] [\fB\-\-skip\-to\-pattern\fR] [\fB\-\-no\-clear\-if\-empty\fR] [\fB\-\-no\-clear\-start\fR] [\fB\-\-no\-clear\fR] [\fB\-\-show\-cmd\-error\fR] [\fB\-\-cycle\fR] [\fB\-\-disabled\fR] [\fB\-\-layout\fR] [\fB\-\-reverse\fR] [\fB\-\-height\fR] [\fB\-\-no\-height\fR] [\fB\-\-min\-height\fR] [\fB\-\-margin\fR] [\fB\-p\fR|\fB\-\-prompt\fR] [\fB\-\-cmd\-prompt\fR] [\fB\-\-selector\fR] [\fB\-\-multi\-selector\fR] [\fB\-\-ansi\fR] [\fB\-\-tabstop\fR] [\fB\-\-info\fR] [\fB\-\-no\-info\fR] [\fB\-\-inline\-info\fR] [\fB\-\-header\fR] [\fB\-\-header\-lines\fR] [\fB\-\-border\fR] [\fB\-\-wrap\fR] [\fB\-\-history\fR] [\fB\-\-history\-size\fR] [\fB\-\-cmd\-history\fR] [\fB\-\-cmd\-history\-size\fR] [\fB\-\-preview\fR] [\fB\-\-preview\-window\fR] [\fB\-q\fR|\fB\-\-query\fR] [\fB\-\-cmd\-query\fR] [\fB\-\-read0\fR] [\fB\-\-print0\fR] [\fB\-\-print\-query\fR] [\fB\-\-print\-cmd\fR] [\fB\-\-print\-score\fR] [\fB\-\-print\-header\fR] [\fB\-\-print\-current\fR] [\fB\-\-output\-format\fR] [\fB\-\-no\-strip\-ansi\fR] [\fB\-1\fR|\fB\-\-select\-1\fR] [\fB\-0\fR|\fB\-\-exit\-0\fR] [\fB\-\-sync\fR] [\fB\-\-pre\-select\-n\fR] [\fB\-\-pre\-select\-pat\fR] [\fB\-\-pre\-select\-items\fR] [\fB\-\-pre\-select\-file\fR] [\fB\-f\fR|\fB\-\-filter\fR] [\fB\-\-shell\fR] [\fB\-\-shell\-bindings\fR] [\fB\-\-man\fR] [\fB\-\-listen\fR] [\fB\-\-remote\fR] [\fB\-\-tmux\fR] [\fB\-\-log\-file\fR] [\fB\-\-expect\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
1212
.ie \n(.g .ds Aq \(aq
1313
.el .ds Aq '
1414
.SH OPTIONS
@@ -455,6 +455,12 @@ Print the score after each item
455455
\fB\-\-print\-header\fR
456456
Print the header as the first line (after print\-score)
457457
.TP
458+
\fB\-\-print\-current\fR
459+
Print the current (highlighted) item as the first line (after print\-header)
460+
.TP
461+
\fB\-\-output\-format\fR \fI<OUTPUT_FORMAT>\fR
462+
Set the output format If set, overrides all print_ options Will be expanded the same way as preview or commands
463+
.TP
458464
\fB\-\-no\-strip\-ansi\fR
459465
Print the ANSI codes, making the output exactly match the input even when \-\-ansi is on
460466
.TP

rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[toolchain]
2-
channel = "nightly-2026-02-11"
2+
channel = "stable"
33
profile = "default"
44
components = ["rust-analyzer"]

shell/completion.bash

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ _sk() {
2323

2424
case "${cmd}" in
2525
sk)
26-
opts="-t -n -d -e -b -m -c -i -I -p -q -1 -0 -f -x -h -V --tac --min-query-length --no-sort --tiebreak --nth --with-nth --delimiter --exact --regex --algo --case --normalize --split-match --bind --multi --no-multi --no-mouse --cmd --interactive --color --no-hscroll --keep-right --skip-to-pattern --no-clear-if-empty --no-clear-start --no-clear --show-cmd-error --cycle --disabled --layout --reverse --height --no-height --min-height --margin --prompt --cmd-prompt --selector --multi-selector --ansi --tabstop --info --no-info --inline-info --header --header-lines --border --wrap --history --history-size --cmd-history --cmd-history-size --preview --preview-window --query --cmd-query --read0 --print0 --print-query --print-cmd --print-score --print-header --no-strip-ansi --select-1 --exit-0 --sync --pre-select-n --pre-select-pat --pre-select-items --pre-select-file --filter --shell --shell-bindings --man --listen --remote --tmux --log-file --flags --extended --literal --hscroll-off --filepath-word --jump-labels --no-bold --phony --scheme --tail --style --no-color --padding --border-label --border-label-pos --highlight-line --wrap-sign --no-multi-line --raw --track --gap --gap-line --freeze-left --freeze-right --scroll-off --gutter --gutter-raw --marker-multi-line --ellipsis --scrollbar --no-scrollbar --list-border --list-label --list-label-pos --no-input --info-command --separator --no-separator --ghost --input-border --input-label --input-label-pos --preview-label --preview-label-pos --header-first --header-border --header-lines-border --footer --footer-border --footer-label --footer-label-pos --with-shell --expect --help --version"
26+
opts="-t -n -d -e -b -m -c -i -I -p -q -1 -0 -f -x -h -V --tac --min-query-length --no-sort --tiebreak --nth --with-nth --delimiter --exact --regex --algo --case --normalize --split-match --bind --multi --no-multi --no-mouse --cmd --interactive --color --no-hscroll --keep-right --skip-to-pattern --no-clear-if-empty --no-clear-start --no-clear --show-cmd-error --cycle --disabled --layout --reverse --height --no-height --min-height --margin --prompt --cmd-prompt --selector --multi-selector --ansi --tabstop --ellipsis --info --no-info --inline-info --header --header-lines --border --wrap --history --history-size --cmd-history --cmd-history-size --preview --preview-window --query --cmd-query --read0 --print0 --print-query --print-cmd --print-score --print-header --print-current --output-format --no-strip-ansi --select-1 --exit-0 --sync --pre-select-n --pre-select-pat --pre-select-items --pre-select-file --filter --shell --shell-bindings --man --listen --remote --tmux --log-file --flags --extended --literal --hscroll-off --filepath-word --jump-labels --no-bold --phony --scheme --tail --style --no-color --padding --border-label --border-label-pos --highlight-line --wrap-sign --no-multi-line --raw --track --gap --gap-line --freeze-left --freeze-right --scroll-off --gutter --gutter-raw --marker-multi-line --scrollbar --no-scrollbar --list-border --list-label --list-label-pos --no-input --info-command --separator --no-separator --ghost --input-border --input-label --input-label-pos --preview-label --preview-label-pos --header-first --header-border --header-lines-border --footer --footer-border --footer-label --footer-label-pos --with-shell --expect --help --version"
2727
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
2828
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
2929
return 0
@@ -141,6 +141,10 @@ _sk() {
141141
COMPREPLY=($(compgen -f "${cur}"))
142142
return 0
143143
;;
144+
--ellipsis)
145+
COMPREPLY=($(compgen -f "${cur}"))
146+
return 0
147+
;;
144148
--info)
145149
COMPREPLY=($(compgen -W "default inline hidden" -- "${cur}"))
146150
return 0
@@ -193,6 +197,10 @@ _sk() {
193197
COMPREPLY=($(compgen -f "${cur}"))
194198
return 0
195199
;;
200+
--output-format)
201+
COMPREPLY=($(compgen -f "${cur}"))
202+
return 0
203+
;;
196204
--pre-select-n)
197205
COMPREPLY=($(compgen -f "${cur}"))
198206
return 0
@@ -309,10 +317,6 @@ _sk() {
309317
COMPREPLY=($(compgen -f "${cur}"))
310318
return 0
311319
;;
312-
--ellipsis)
313-
COMPREPLY=($(compgen -f "${cur}"))
314-
return 0
315-
;;
316320
--scrollbar)
317321
COMPREPLY=($(compgen -f "${cur}"))
318322
return 0

shell/completion.fish

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ complete -c sk -l cmd-prompt -d 'Set prompt in command mode' -r
3636
complete -c sk -l selector -d 'Set selected item icon' -r
3737
complete -c sk -l multi-selector -d 'Set selected item icon' -r
3838
complete -c sk -l tabstop -d 'Number of spaces that make up a tab' -r
39+
complete -c sk -l ellipsis -d 'The characters used to display truncated lines' -r
3940
complete -c sk -l info -d 'Set matching result count display position' -r -f -a "default\t''
4041
inline\t''
4142
hidden\t''"
@@ -61,6 +62,7 @@ complete -c sk -l preview -d 'Preview command' -r
6162
complete -c sk -l preview-window -d 'Preview window layout' -r
6263
complete -c sk -s q -l query -d 'Initial query' -r
6364
complete -c sk -l cmd-query -d 'Initial query in interactive mode' -r
65+
complete -c sk -l output-format -d 'Set the output format If set, overrides all print_ options Will be expanded the same way as preview or commands' -r
6466
complete -c sk -l pre-select-n -d 'Pre-select the first n items in multi-selection mode' -r
6567
complete -c sk -l pre-select-pat -d 'Pre-select the matched items in multi-selection mode' -r
6668
complete -c sk -l pre-select-items -d 'Pre-select the items separated by newline character' -r
@@ -94,7 +96,6 @@ complete -c sk -l scroll-off -r
9496
complete -c sk -l gutter -r
9597
complete -c sk -l gutter-raw -r
9698
complete -c sk -l marker-multi-line -r
97-
complete -c sk -l ellipsis -r
9899
complete -c sk -l scrollbar -r
99100
complete -c sk -l list-border -r
100101
complete -c sk -l list-label -r
@@ -144,6 +145,7 @@ complete -c sk -l print-query -d 'Print the query as the first line'
144145
complete -c sk -l print-cmd -d 'Print the command as the first line (after print-query)'
145146
complete -c sk -l print-score -d 'Print the score after each item'
146147
complete -c sk -l print-header -d 'Print the header as the first line (after print-score)'
148+
complete -c sk -l print-current -d 'Print the current (highlighted) item as the first line (after print-header)'
147149
complete -c sk -l no-strip-ansi -d 'Print the ANSI codes, making the output exactly match the input even when --ansi is on'
148150
complete -c sk -s 1 -l select-1 -d 'Do not enter the TUI if the query passed in -q matches only one item and return it'
149151
complete -c sk -s 0 -l exit-0 -d 'Do not enter the TUI if the query passed in -q does not match any item'

shell/completion.nu

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ module completions {
7676
--multi-selector: string # Set selected item icon
7777
--ansi # Parse ANSI color codes in input strings
7878
--tabstop: string # Number of spaces that make up a tab
79+
--ellipsis: string # The characters used to display truncated lines
7980
--info: string@"nu-complete sk info" # Set matching result count display position
8081
--no-info # Alias for --info=hidden
8182
--inline-info # Alias for --info=inline
@@ -97,6 +98,8 @@ module completions {
9798
--print-cmd # Print the command as the first line (after print-query)
9899
--print-score # Print the score after each item
99100
--print-header # Print the header as the first line (after print-score)
101+
--print-current # Print the current (highlighted) item as the first line (after print-header)
102+
--output-format: string # Set the output format If set, overrides all print_ options Will be expanded the same way as preview or commands
100103
--no-strip-ansi # Print the ANSI codes, making the output exactly match the input even when --ansi is on
101104
--select-1(-1) # Do not enter the TUI if the query passed in -q matches only one item and return it
102105
--exit-0(-0) # Do not enter the TUI if the query passed in -q does not match any item
@@ -141,7 +144,6 @@ module completions {
141144
--gutter: string
142145
--gutter-raw: string
143146
--marker-multi-line: string
144-
--ellipsis: string
145147
--scrollbar: string
146148
--no-scrollbar
147149
--list-border: string

0 commit comments

Comments
 (0)