lotabout.skim/shell
LoricAndre bb80ac138e
fix: do not feed items through a fifo in zsh completions (#1164)
* 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>
2026-08-21 22:14:19 +02:00
..
completion.bash feat: add --hide-nth to hide fields from display but keep them searchable (#1122) 2026-07-18 13:13:43 +00:00
completion.fish feat: allow binding actions & more events (#1125) 2026-07-21 11:42:47 +00:00
completion.nu feat: allow binding actions & more events (#1125) 2026-07-21 11:42:47 +00:00
completion.zsh feat: allow binding actions & more events (#1125) 2026-07-21 11:42:47 +00:00
key-bindings.bash fix: ignore missing files for ssh completion (closes #1054) 2026-04-14 11:52:23 +02:00
key-bindings.fish feat: add multiline item rendering (#999) 2026-03-30 13:57:09 +02:00
key-bindings.zsh fix: do not feed items through a fifo in zsh completions (#1164) 2026-08-21 22:14:19 +02:00
LICENSE add shell bindings (copied from fzf and modified) 2017-09-18 14:51:36 +08:00
README.md Fix typo 2020-01-08 18:51:20 +09:00
version.txt release: v5.6.5 (#1157) 2026-08-16 09:35:40 +00:00

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!