Files
fish-shell/share/functions
Johannes Altmanninger 044afefc5c Fix regression causing cursor shape commands to leak into noninteractive shell
As reported in
https://matrix.to/#/!YLTeaulxSDauOOxBoR:matrix.org/$CLuoHTdvcRj_8-HBBq0p-lmGWeix5khEtKEDxN2Ulfo

Running

	fish -C '
		fzf_key_bindings
		echo fish_vi_key_bindings >>~/.config/fish/config.fish
		fzf-history-widget
	'

and pressing "enter" will add escape sequences like "[2 q" (cursor shape)
to fish's command line.

This is because fzf-history-widget binds "enter" to a filter
that happens to be a fish script:

	set -lx FZF_DEFAULT_OPTS \
		... \
		"--bind='enter:become:string replace -a -- \n\t \n {2..} | string collect'" \
		'--with-shell='(status fish-path)\\ -c)

The above ~/.config/fish/config.fish (redundantly) runs "fish_vi_key_bindings"
even in *noninteractive* shells, then "fish_vi_cursor" will print cursor
sequences in its "fish_exit" handler.  The sequence is not printed to the
terminal but to fzf which doesn't parse CSI commands.

This is a regression introduced by a5dfa84f73 (fish_vi_cursor: skip if stdin
is not a tty, 2023-11-14). That commit wanted "fish -c read" to be able to
use Vi cursor.  This is a noninteractive shell, but inside "read" we are
"effectively interactive".  However "status is-interactive" does not tell
us that.

Let's use a more contained fix to make sure that we print escape sequences only
if either fish is interactive, or if we are evaluating an interactive read.

In general, "fish -c read" is prone to configuration errors, since we
recommend gating configuration (for bind etc) on "status is-interactive"
which will not run here.

(cherry picked from commit 495083249b)
2025-03-02 09:34:51 +01:00
..
2019-05-05 12:09:25 +02:00
2023-04-26 19:38:10 +02:00
2019-05-05 12:09:25 +02:00
2020-11-22 14:39:48 +01:00
2024-06-24 14:30:37 -05:00
2022-06-08 21:23:43 +02:00
2022-08-02 00:42:37 -07:00
2017-10-01 01:11:17 -07:00
2022-01-27 16:21:22 -08:00
2022-01-27 16:21:22 -08:00
2025-02-02 16:21:12 -08:00
2016-11-27 21:27:22 -08:00
2024-12-06 22:12:26 +01:00
2021-12-02 02:22:40 -08:00
2023-12-25 18:46:23 +01:00
2017-04-05 15:31:13 -07:00
2023-06-01 18:20:19 +02:00
2022-01-27 16:21:22 -08:00
2022-04-23 16:35:52 -07:00