mirror of
https://github.com/lotabout/skim.git
synced 2026-09-10 07:16:23 -04:00
* fix(zsh): don't relay completion items through a named pipe `_skim_complete` handed its candidates to skim through a fifo at the fixed path `$TMPDIR/skim-complete-fifo-$$`, created by `_skim_feed_fifo` and fed by a backgrounded `cat`. Opening a fifo for reading blocks until a writer opens the other end, so if the feeder ever fails to get there -- it dies, or a stale fifo left behind by an interrupted completion makes `mkfifo` fail, or the leftover in the world-writable temp dir belongs to someone else -- the widget blocks forever with nothing drawn and no way to interrupt it. Interrupted completions also leaked the fifos that set this up. That rendezvous is the only step of the completion path that can block indefinitely, and `kill` is the only completion that reaches it without the `**` trigger, so `kill<TAB>` is where it surfaces. The fifo is not needed in the first place: the `_skim_complete_*` helpers pass their candidates on `_skim_complete`'s stdin, and the command substitution that runs skim inherits fd 0, so skim can read them directly. (fzf relays through a fifo because its completion functions cannot pass their own stdin along; this file is zsh-only and has no such constraint.) Verified in a pty, in tmux and under kitty that `kill`, `ssh`, `export`, `unset`, `unalias` and the path/dir completions all still populate skim, that multi-select still runs through the `_post` filters (`kill<TAB>` still inserts bare PIDs), and that no fifos are left in the temp dir. Refs: https://github.com/skim-rs/skim/issues/1161 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PFgaE1MjSaUGAGtR4aqVzT * cleanup comms --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| completion.bash | ||
| completion.fish | ||
| completion.nu | ||
| completion.zsh | ||
| key-bindings.bash | ||
| key-bindings.fish | ||
| key-bindings.zsh | ||
| LICENSE | ||
| README.md | ||
| version.txt | ||
This directory contains the shell bindings for skim.
Note that the content in this directory is copied from fzf and modified to fit skim.
The scripts in this directory will not be maintained by skim.
But you are welcome to submit PR for update the scripts to the fzf's latest scripts. Thanks!