Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fzf for openSUSE:Factory checked in 
at 2023-05-27 00:51:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fzf (Old)
 and      /work/SRC/openSUSE:Factory/.fzf.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fzf"

Sat May 27 00:51:10 2023 rev:34 rq:1089242 version:0.41.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/fzf/fzf.changes  2023-05-01 18:51:20.661413319 
+0200
+++ /work/SRC/openSUSE:Factory/.fzf.new.1533/fzf.changes        2023-05-27 
00:51:15.298920470 +0200
@@ -1,0 +2,11 @@
+Fri May 26 18:38:52 UTC 2023 - Avindra Goolcharan <avin...@opensuse.org>
+
+- Update to version 0.41.0:
+  * Added color name preview-border and preview-scrollbar
+  * Added new border style block which uses block elements
+  * --scrollbar can take two characters, one for the main window,
+   the other for the preview window
+  * Bug fixes and improvements
+- require golang >= 1.19 instead of "="
+
+-------------------------------------------------------------------

Old:
----
  fzf-0.40.0.tar.gz

New:
----
  fzf-0.41.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fzf.spec ++++++
--- /var/tmp/diff_new_pack.b3IINq/_old  2023-05-27 00:51:15.846923736 +0200
+++ /var/tmp/diff_new_pack.b3IINq/_new  2023-05-27 00:51:15.854923784 +0200
@@ -16,9 +16,9 @@
 #
 
 
-%global _lto_cflags %nil
+%global _lto_cflags %{nil}
 Name:           fzf
-Version:        0.40.0
+Version:        0.41.0
 Release:        0
 Summary:        A command-line fuzzy finder
 License:        MIT
@@ -27,7 +27,7 @@
 Source0:        
https://github.com/junegunn/fzf/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
 Source1:        vendor.tar.zst
 BuildRequires:  zstd
-BuildRequires:  golang(API) = 1.19
+BuildRequires:  golang(API) >= 1.19
 
 %description
 fzf is an interactive Unix filter for command-line that can be used with any 
list; files,

++++++ fzf-0.40.0.tar.gz -> fzf-0.41.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/.github/workflows/typos.yml 
new/fzf-0.41.0/.github/workflows/typos.yml
--- old/fzf-0.40.0/.github/workflows/typos.yml  2023-04-30 18:59:21.000000000 
+0200
+++ new/fzf-0.41.0/.github/workflows/typos.yml  2023-05-25 17:25:09.000000000 
+0200
@@ -7,4 +7,4 @@
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v3
-    - uses: crate-ci/typos@v1.13.16
+    - uses: crate-ci/typos@v1.14.10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/.tool-versions 
new/fzf-0.41.0/.tool-versions
--- old/fzf-0.40.0/.tool-versions       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/.tool-versions       2023-05-25 17:25:09.000000000 +0200
@@ -1 +1 @@
-golang 1.20.2
+golang 1.20.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/ADVANCED.md new/fzf-0.41.0/ADVANCED.md
--- old/fzf-0.40.0/ADVANCED.md  2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/ADVANCED.md  2023-05-25 17:25:09.000000000 +0200
@@ -1,8 +1,8 @@
 Advanced fzf examples
 ======================
 
-* *Last update: 2023/02/15*
-* *Requires fzf 0.38.0 or above*
+* *Last update: 2023/05/26*
+* *Requires fzf 0.41.0 or above*
 
 ---
 
@@ -336,9 +336,8 @@
 # 3. Open the file in Vim
 RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
 INITIAL_QUERY="${*:-}"
-FZF_DEFAULT_COMMAND="$RG_PREFIX $(printf %q "$INITIAL_QUERY")" \
-fzf --ansi \
-    --disabled --query "$INITIAL_QUERY" \
+: | fzf --ansi --disabled --query "$INITIAL_QUERY" \
+    --bind "start:reload:$RG_PREFIX {q}" \
     --bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \
     --delimiter : \
     --preview 'bat --color=always {1} --highlight-line {2}' \
@@ -348,11 +347,11 @@
 
 
![image](https://user-images.githubusercontent.com/700826/113684212-f9ff0a00-96ff-11eb-8737-7bb571d320cc.png)
 
-- Instead of starting fzf in `rg ... | fzf` form, we start fzf without an
-  explicit input, but with a custom `FZF_DEFAULT_COMMAND` variable. This way
-  fzf can kill the initial Ripgrep process it starts with the initial query.
-  Otherwise, the initial Ripgrep process will keep consuming system resources
-  even after `reload` is triggered.
+- Instead of starting fzf in the usual `rg ... | fzf` form, we start fzf with
+  an empty input (`: | fzf`), then we make it start the initial Ripgrep
+  process immediately via `start:reload` binding. This way, fzf owns the
+  initial Ripgrep process so it can kill it on the next `reload`. Otherwise,
+  the process will keep running in the background.
 - Filtering is no longer a responsibility of fzf; hence `--disabled`
 - `{q}` in the reload command evaluates to the query string on fzf prompt.
 - `sleep 0.1` in the reload command is for "debouncing". This small delay will
@@ -376,12 +375,11 @@
 # 3. Open the file in Vim
 RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
 INITIAL_QUERY="${*:-}"
-FZF_DEFAULT_COMMAND="$RG_PREFIX $(printf %q "$INITIAL_QUERY")" \
-fzf --ansi \
-    --color "hl:-1:underline,hl+:-1:underline:reverse" \
-    --disabled --query "$INITIAL_QUERY" \
+: | fzf --ansi --disabled --query "$INITIAL_QUERY" \
+    --bind "start:reload:$RG_PREFIX {q}" \
     --bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \
     --bind "alt-enter:unbind(change,alt-enter)+change-prompt(2. fzf> 
)+enable-search+clear-query" \
+    --color "hl:-1:underline,hl+:-1:underline:reverse" \
     --prompt '1. ripgrep> ' \
     --delimiter : \
     --preview 'bat --color=always {1} --highlight-line {2}' \
@@ -421,14 +419,12 @@
 rm -f /tmp/rg-fzf-{r,f}
 RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
 INITIAL_QUERY="${*:-}"
-FZF_DEFAULT_COMMAND="$RG_PREFIX $(printf %q "$INITIAL_QUERY")" \
-fzf --ansi \
-    --color "hl:-1:underline,hl+:-1:underline:reverse" \
-    --disabled --query "$INITIAL_QUERY" \
+: | fzf --ansi --disabled --query "$INITIAL_QUERY" \
+    --bind "start:reload($RG_PREFIX {q})+unbind(ctrl-r)" \
     --bind "change:reload:sleep 0.1; $RG_PREFIX {q} || true" \
     --bind "ctrl-f:unbind(change,ctrl-f)+change-prompt(2. fzf> 
)+enable-search+rebind(ctrl-r)+transform-query(echo {q} > /tmp/rg-fzf-r; cat 
/tmp/rg-fzf-f)" \
     --bind "ctrl-r:unbind(ctrl-r)+change-prompt(1. ripgrep> 
)+disable-search+reload($RG_PREFIX {q} || 
true)+rebind(change,ctrl-f)+transform-query(echo {q} > /tmp/rg-fzf-f; cat 
/tmp/rg-fzf-r)" \
-    --bind "start:unbind(ctrl-r)" \
+    --color "hl:-1:underline,hl+:-1:underline:reverse" \
     --prompt '1. ripgrep> ' \
     --delimiter : \
     --header '╱ CTRL-R (ripgrep mode) ╱ CTRL-F (fzf mode) ╱' \
@@ -471,16 +467,17 @@
 
 ```bash
 pods() {
-  FZF_DEFAULT_COMMAND="kubectl get pods --all-namespaces" \
-    fzf --info=inline --layout=reverse --header-lines=1 \
-        --prompt "$(kubectl config current-context | sed 's/-context$//')> " \
-        --header $'╱ Enter (kubectl exec) ╱ CTRL-O (open log in editor) 
╱ CTRL-R (reload) ╱\n\n' \
-        --bind 'ctrl-/:change-preview-window(80%,border-bottom|hidden|)' \
-        --bind 'enter:execute:kubectl exec -it --namespace {1} {2} -- bash > 
/dev/tty' \
-        --bind 'ctrl-o:execute:${EDITOR:-vim} <(kubectl logs --all-containers 
--namespace {1} {2}) > /dev/tty' \
-        --bind 'ctrl-r:reload:$FZF_DEFAULT_COMMAND' \
-        --preview-window up:follow \
-        --preview 'kubectl logs --follow --all-containers --tail=10000 
--namespace {1} {2}' "$@"
+  : | command='kubectl get pods --all-namespaces' fzf \
+    --info=inline --layout=reverse --header-lines=1 \
+    --prompt "$(kubectl config current-context | sed 's/-context$//')> " \
+    --header $'╱ Enter (kubectl exec) ╱ CTRL-O (open log in editor) ╱ 
CTRL-R (reload) ╱\n\n' \
+    --bind 'start:reload:$command' \
+    --bind 'ctrl-r:reload:$command' \
+    --bind 'ctrl-/:change-preview-window(80%,border-bottom|hidden|)' \
+    --bind 'enter:execute:kubectl exec -it --namespace {1} {2} -- bash > 
/dev/tty' \
+    --bind 'ctrl-o:execute:${EDITOR:-vim} <(kubectl logs --all-containers 
--namespace {1} {2}) > /dev/tty' \
+    --preview-window up:follow \
+    --preview 'kubectl logs --follow --all-containers --tail=10000 --namespace 
{1} {2}' "$@"
 }
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/CHANGELOG.md new/fzf-0.41.0/CHANGELOG.md
--- old/fzf-0.40.0/CHANGELOG.md 2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/CHANGELOG.md 2023-05-25 17:25:09.000000000 +0200
@@ -1,6 +1,21 @@
 CHANGELOG
 =========
 
+0.41.0
+------
+- Added color name `preview-border` and `preview-scrollbar`
+- Added new border style `block` which uses [block 
elements](https://en.wikipedia.org/wiki/Block_Elements)
+- `--scrollbar` can take two characters, one for the main window, the other
+  for the preview window
+- Putting it altogether:
+  ```sh
+  fzf-tmux -p 80% --padding 1,2 --preview 'bat --style=plain --color=always 
{}' \
+      --color 'bg:237,bg+:235,gutter:237,border:238,scrollbar:236' \
+      --color 'preview-bg:235,preview-border:236,preview-scrollbar:234' \
+      --preview-window 'border-block' --border block --scrollbar '▌▐'
+  ```
+- Bug fixes and improvements
+
 0.40.0
 ------
 - Added `zero` event that is triggered when there's no match
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/Dockerfile new/fzf-0.41.0/Dockerfile
--- old/fzf-0.40.0/Dockerfile   2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/Dockerfile   2023-05-25 17:25:09.000000000 +0200
@@ -1,4 +1,4 @@
-FROM archlinux
+FROM --platform=linux/amd64 archlinux
 RUN pacman -Sy && pacman --noconfirm -S awk git tmux zsh fish ruby procps go 
make gcc
 RUN gem install --no-document -v 5.14.2 minitest
 RUN echo '. /usr/share/bash-completion/completions/git' >> ~/.bashrc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/Makefile new/fzf-0.41.0/Makefile
--- old/fzf-0.40.0/Makefile     2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/Makefile     2023-05-25 17:25:09.000000000 +0200
@@ -88,7 +88,7 @@
 install: bin/fzf
 
 build:
-       goreleaser --rm-dist --snapshot
+       goreleaser build --rm-dist --snapshot --skip-post-hooks
 
 release:
 ifndef GITHUB_TOKEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/README.md new/fzf-0.41.0/README.md
--- old/fzf-0.40.0/README.md    2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/README.md    2023-05-25 17:25:09.000000000 +0200
@@ -630,8 +630,8 @@
 #### 1. Update the list of processes by pressing CTRL-R
 
 ```sh
-FZF_DEFAULT_COMMAND='ps -ef' \
-  fzf --bind 'ctrl-r:reload(eval "$FZF_DEFAULT_COMMAND")' \
+ps -ef |
+  fzf --bind 'ctrl-r:reload(ps -ef)' \
       --header 'Press CTRL-R to reload' --header-lines=1 \
       --height=50% --layout=reverse
 ```
@@ -653,12 +653,12 @@
 doesn't perform any secondary filtering.
 
 ```sh
-INITIAL_QUERY=""
-RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
-FZF_DEFAULT_COMMAND="$RG_PREFIX '$INITIAL_QUERY'" \
-  fzf --bind "change:reload:$RG_PREFIX {q} || true" \
-      --ansi --disabled --query "$INITIAL_QUERY" \
-      --height=50% --layout=reverse
+: | rg_prefix='rg --column --line-number --no-heading --color=always 
--smart-case' \
+    fzf --bind 'start:reload:$rg_prefix ""' \
+        --bind 'change:reload:$rg_prefix {q} || true' \
+        --bind 'enter:become(vim {1} +{2})' \
+        --ansi --disabled \
+        --height=50% --layout=reverse
 ```
 
 If ripgrep doesn't find any matches, it will exit with a non-zero exit status,
@@ -666,7 +666,7 @@
 `|| true` to the command, so that it always exits with 0.
 
 See ["Using fzf as interactive Ripgrep 
launcher"](https://github.com/junegunn/fzf/blob/master/ADVANCED.md#using-fzf-as-interactive-ripgrep-launcher)
-for a fuller example with preview window options.
+for more sophisticated examples.
 
 ### Preview window
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/go.mod new/fzf-0.41.0/go.mod
--- old/fzf-0.40.0/go.mod       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/go.mod       2023-05-25 17:25:09.000000000 +0200
@@ -7,8 +7,8 @@
        github.com/mattn/go-shellwords v1.0.12
        github.com/rivo/uniseg v0.4.4
        github.com/saracen/walker v0.1.3
-       golang.org/x/sys v0.7.0
-       golang.org/x/term v0.7.0
+       golang.org/x/sys v0.8.0
+       golang.org/x/term v0.8.0
 )
 
 require (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/go.sum new/fzf-0.41.0/go.sum
--- old/fzf-0.40.0/go.sum       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/go.sum       2023-05-25 17:25:09.000000000 +0200
@@ -32,12 +32,12 @@
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
-golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
-golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
+golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/install new/fzf-0.41.0/install
--- old/fzf-0.40.0/install      2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/install      2023-05-25 17:25:09.000000000 +0200
@@ -2,7 +2,7 @@
 
 set -u
 
-version=0.40.0
+version=0.41.0
 auto_completion=
 key_bindings=
 update_config=2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/install.ps1 new/fzf-0.41.0/install.ps1
--- old/fzf-0.40.0/install.ps1  2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/install.ps1  2023-05-25 17:25:09.000000000 +0200
@@ -1,4 +1,4 @@
-$version="0.40.0"
+$version="0.41.0"
 
 $fzf_base=Split-Path -Parent $MyInvocation.MyCommand.Definition
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/main.go new/fzf-0.41.0/main.go
--- old/fzf-0.40.0/main.go      2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/main.go      2023-05-25 17:25:09.000000000 +0200
@@ -5,7 +5,7 @@
        "github.com/junegunn/fzf/src/protector"
 )
 
-var version string = "0.40"
+var version string = "0.41"
 var revision string = "devel"
 
 func main() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/man/man1/fzf-tmux.1 
new/fzf-0.41.0/man/man1/fzf-tmux.1
--- old/fzf-0.40.0/man/man1/fzf-tmux.1  2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/man/man1/fzf-tmux.1  2023-05-25 17:25:09.000000000 +0200
@@ -21,7 +21,7 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 ..
-.TH fzf-tmux 1 "May 2023" "fzf 0.40.0" "fzf-tmux - open fzf in tmux split pane"
+.TH fzf-tmux 1 "May 2023" "fzf 0.41.0" "fzf-tmux - open fzf in tmux split pane"
 
 .SH NAME
 fzf-tmux - open fzf in tmux split pane
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/man/man1/fzf.1 
new/fzf-0.41.0/man/man1/fzf.1
--- old/fzf-0.40.0/man/man1/fzf.1       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/man/man1/fzf.1       2023-05-25 17:25:09.000000000 +0200
@@ -21,7 +21,7 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 ..
-.TH fzf 1 "May 2023" "fzf 0.40.0" "fzf - a command-line fuzzy finder"
+.TH fzf 1 "May 2023" "fzf 0.41.0" "fzf - a command-line fuzzy finder"
 
 .SH NAME
 fzf - a command-line fuzzy finder
@@ -377,9 +377,10 @@
 \fB--separator=''\fB
 
 .TP
-.BI "--scrollbar=" "CHAR"
+.BI "--scrollbar=" "CHAR1[CHAR2]"
 Use the given character to render scrollbar. (default: '│' or ':' depending 
on
-\fB--no-unicode\fR).
+\fB--no-unicode\fR). The optional \fBCHAR2\fR is used to render scrollbar of
+the preview window.
 
 .TP
 .B "--no-scrollbar"
@@ -433,28 +434,30 @@
     \fBbw      \fRNo colors (equivalent to \fB--no-color\fR)
 
 .B COLOR NAMES:
-    \fBfg              \fRText
-      \fBpreview-fg    \fRPreview window text
-    \fBbg              \fRBackground
-      \fBpreview-bg    \fRPreview window background
-    \fBhl              \fRHighlighted substrings
-    \fBfg+             \fRText (current line)
-    \fBbg+             \fRBackground (current line)
-      \fBgutter        \fRGutter on the left
-    \fBhl+             \fRHighlighted substrings (current line)
-    \fBquery           \fRQuery string
-      \fBdisabled      \fRQuery string when search is disabled 
(\fB--disabled\fR)
-    \fBinfo            \fRInfo line (match counters)
-    \fBborder          \fRBorder around the window (\fB--border\fR and 
\fB--preview\fR)
-      \fBseparator     \fRHorizontal separator on info line
-      \fBscrollbar     \fRScrollbar
-    \fBlabel           \fRBorder label (\fB--border-label\fR and 
\fB--preview-label\fR)
-      \fBpreview-label \fRBorder label of the preview window 
(\fB--preview-label\fR)
-    \fBprompt          \fRPrompt
-    \fBpointer         \fRPointer to the current line
-    \fBmarker          \fRMulti-select marker
-    \fBspinner         \fRStreaming input indicator
-    \fBheader          \fRHeader
+    \fBfg                  \fRText
+      \fBpreview-fg        \fRPreview window text
+    \fBbg                  \fRBackground
+      \fBpreview-bg        \fRPreview window background
+    \fBhl                  \fRHighlighted substrings
+    \fBfg+                 \fRText (current line)
+    \fBbg+                 \fRBackground (current line)
+      \fBgutter            \fRGutter on the left
+    \fBhl+                 \fRHighlighted substrings (current line)
+    \fBquery               \fRQuery string
+      \fBdisabled          \fRQuery string when search is disabled 
(\fB--disabled\fR)
+    \fBinfo                \fRInfo line (match counters)
+    \fBborder              \fRBorder around the window (\fB--border\fR and 
\fB--preview\fR)
+      \fBscrollbar         \fRScrollbar
+      \fBpreview-border    \fRBorder around the preview window 
(\fB--preview\fR)
+      \fBpreview-scrollbar \fRScrollbar
+      \fBseparator         \fRHorizontal separator on info line
+    \fBlabel               \fRBorder label (\fB--border-label\fR and 
\fB--preview-label\fR)
+      \fBpreview-label     \fRBorder label of the preview window 
(\fB--preview-label\fR)
+    \fBprompt              \fRPrompt
+    \fBpointer             \fRPointer to the current line
+    \fBmarker              \fRMulti-select marker
+    \fBspinner             \fRStreaming input indicator
+    \fBheader              \fRHeader
 
 .B ANSI COLORS:
     \fB-1         \fRDefault terminal foreground/background color
@@ -870,6 +873,8 @@
 .br
 \fIctrl-space\fR
 .br
+\fIctrl-delete\fR
+.br
 \fIctrl-\\\fR
 .br
 \fIctrl-]\fR
@@ -938,6 +943,8 @@
 .br
 \fIshift-right\fR
 .br
+\fIshift-delete\fR
+.br
 \fIalt-shift-up\fR
 .br
 \fIalt-shift-down\fR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/core.go new/fzf-0.41.0/src/core.go
--- old/fzf-0.40.0/src/core.go  2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/core.go  2023-05-25 17:25:09.000000000 +0200
@@ -320,15 +320,16 @@
                                        if !changed {
                                                break
                                        }
+                                       reset := false
                                        if !useSnapshot {
                                                newSnapshot, _ := 
chunkList.Snapshot()
                                                // We want to avoid showing 
empty list when reload is triggered
                                                // and the query string is 
changed at the same time i.e. command != nil && changed
                                                if command == nil || 
len(newSnapshot) > 0 {
                                                        snapshot = newSnapshot
+                                                       reset = clearCache()
                                                }
                                        }
-                                       reset := !useSnapshot && clearCache()
                                        matcher.Reset(snapshot, input(reset), 
true, !reading, sort, reset)
                                        delay = false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/options.go 
new/fzf-0.41.0/src/options.go
--- old/fzf-0.40.0/src/options.go       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/options.go       2023-05-25 17:25:09.000000000 +0200
@@ -63,7 +63,7 @@
                            (default: 10)
     --layout=LAYOUT        Choose layout: [default|reverse|reverse-list]
     --border[=STYLE]       Draw border around the finder
-                           [rounded|sharp|horizontal|vertical|
+                           
[rounded|sharp|bold|block|double|horizontal|vertical|
                             top|bottom|left|right|none] (default: rounded)
     --border-label=LABEL   Label to print on the border
     --border-label-pos=COL Position of the border label
@@ -75,7 +75,7 @@
     --info=STYLE           Finder info style 
[default|hidden|inline|inline:SEPARATOR]
     --separator=STR        String to form horizontal separator on info line
     --no-separator         Hide info line separator
-    --scrollbar[=CHAR]     Scrollbar character
+    --scrollbar[=C1[C2]]   Scrollbar character(s) (each for main and preview 
window)
     --no-scrollbar         Hide scrollbar
     --prompt=STR           Input prompt (default: '> ')
     --pointer=STR          Pointer to the current line (default: '>')
@@ -544,6 +544,8 @@
                return tui.BorderSharp
        case "bold":
                return tui.BorderBold
+       case "block":
+               return tui.BorderBlock
        case "double":
                return tui.BorderDouble
        case "horizontal":
@@ -564,7 +566,7 @@
                if optional && str == "" {
                        return tui.DefaultBorderShape
                }
-               errorExit("invalid border style (expected: 
rounded|sharp|bold|double|horizontal|vertical|top|bottom|left|right|none)")
+               errorExit("invalid border style (expected: 
rounded|sharp|bold|block|double|horizontal|vertical|top|bottom|left|right|none)")
        }
        return tui.BorderNone
 }
@@ -612,6 +614,8 @@
                        add(tui.BSpace)
                case "ctrl-space":
                        add(tui.CtrlSpace)
+               case "ctrl-delete":
+                       add(tui.CtrlDelete)
                case "ctrl-^", "ctrl-6":
                        add(tui.CtrlCaret)
                case "ctrl-/", "ctrl-_":
@@ -682,6 +686,8 @@
                        add(tui.SLeft)
                case "shift-right":
                        add(tui.SRight)
+               case "shift-delete":
+                       add(tui.SDelete)
                case "left-click":
                        add(tui.LeftClick)
                case "right-click":
@@ -888,10 +894,14 @@
                                mergeAttr(&theme.CurrentMatch)
                        case "border":
                                mergeAttr(&theme.Border)
+                       case "preview-border":
+                               mergeAttr(&theme.PreviewBorder)
                        case "separator":
                                mergeAttr(&theme.Separator)
                        case "scrollbar":
                                mergeAttr(&theme.Scrollbar)
+                       case "preview-scrollbar":
+                               mergeAttr(&theme.PreviewScrollbar)
                        case "label":
                                mergeAttr(&theme.BorderLabel)
                        case "preview-label":
@@ -1426,6 +1436,8 @@
                        opts.border = tui.BorderSharp
                case "border-bold":
                        opts.border = tui.BorderBold
+               case "border-block":
+                       opts.border = tui.BorderBlock
                case "border-double":
                        opts.border = tui.BorderDouble
                case "noborder", "border-none":
@@ -1952,8 +1964,16 @@
                errorExit("--height option is currently not supported on this 
platform")
        }
 
-       if opts.Scrollbar != nil && runewidth.StringWidth(*opts.Scrollbar) > 1 {
-               errorExit("scrollbar display width should be 1")
+       if opts.Scrollbar != nil {
+               runes := []rune(*opts.Scrollbar)
+               if len(runes) > 2 {
+                       errorExit("--scrollbar should be given one or two 
characters")
+               }
+               for _, r := range runes {
+                       if runewidth.RuneWidth(r) != 1 {
+                               errorExit("scrollbar display width should be 1")
+                       }
+               }
        }
 
        // Default actions for CTRL-N / CTRL-P when --history is set
@@ -1969,25 +1989,25 @@
        // Extend the default key map
        keymap := defaultKeymap()
        for key, actions := range opts.Keymap {
-               var lastChangePreviewWindow *action
+               reordered := []*action{}
                for _, act := range actions {
                        switch act.t {
                        case actToggleSort:
                                // To display "+S"/"-S" on info line
                                opts.ToggleSort = true
-                       case actChangePreviewWindow:
-                               lastChangePreviewWindow = act
+                       case actTogglePreview, actShowPreview, actHidePreview, 
actChangePreviewWindow:
+                               reordered = append(reordered, act)
                        }
                }
 
-               // Re-organize actions so that we only keep the last 
change-preview-window
-               // and it comes first in the list.
+               // Re-organize actions so that we put actions that change the 
preview window first in the list.
                //  *  change-preview-window(up,+10)+preview(sleep 3; cat 
{})+change-preview-window(up,+20)
-               //  -> change-preview-window(up,+20)+preview(sleep 3; cat {})
-               if lastChangePreviewWindow != nil {
-                       reordered := []*action{lastChangePreviewWindow}
+               //  -> 
change-preview-window(up,+10)+change-preview-window(up,+20)+preview(sleep 3; 
cat {})
+               if len(reordered) > 0 {
                        for _, act := range actions {
-                               if act.t != actChangePreviewWindow {
+                               switch act.t {
+                               case actTogglePreview, actShowPreview, 
actHidePreview, actChangePreviewWindow:
+                               default:
                                        reordered = append(reordered, act)
                                }
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/terminal.go 
new/fzf-0.41.0/src/terminal.go
--- old/fzf-0.40.0/src/terminal.go      2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/terminal.go      2023-05-25 17:25:09.000000000 +0200
@@ -199,6 +199,7 @@
        header0            []string
        ellipsis           string
        scrollbar          string
+       previewScrollbar   string
        ansi               bool
        tabstop            int
        margin             [4]sizeSpec
@@ -690,8 +691,16 @@
                } else {
                        t.scrollbar = "|"
                }
+               t.previewScrollbar = t.scrollbar
        } else {
-               t.scrollbar = *opts.Scrollbar
+               runes := []rune(*opts.Scrollbar)
+               if len(runes) > 0 {
+                       t.scrollbar = string(runes[0])
+                       t.previewScrollbar = t.scrollbar
+                       if len(runes) > 1 {
+                               t.previewScrollbar = string(runes[1])
+                       }
+               }
        }
 
        _, t.hasLoadActions = t.keymap[tui.Load.AsEvent()]
@@ -717,7 +726,7 @@
 
 func borderLines(shape tui.BorderShape) int {
        switch shape {
-       case tui.BorderHorizontal, tui.BorderRounded, tui.BorderSharp, 
tui.BorderBold, tui.BorderDouble:
+       case tui.BorderHorizontal, tui.BorderRounded, tui.BorderSharp, 
tui.BorderBold, tui.BorderBlock, tui.BorderDouble:
                return 2
        case tui.BorderTop, tui.BorderBottom:
                return 1
@@ -1073,7 +1082,7 @@
                        if idx == 3 {
                                extraMargin[idx] += 1 + bw
                        }
-               case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, 
tui.BorderDouble:
+               case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, 
tui.BorderBlock, tui.BorderDouble:
                        extraMargin[idx] += 1 + bw*(idx%2)
                }
                marginInt[idx] = sizeSpecToInt(idx, sizeSpec) + extraMargin[idx]
@@ -1166,7 +1175,7 @@
                t.border = t.tui.NewWindow(
                        marginInt[0], marginInt[3], width+(1+bw), height,
                        false, tui.MakeBorderStyle(tui.BorderRight, t.unicode))
-       case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, 
tui.BorderDouble:
+       case tui.BorderRounded, tui.BorderSharp, tui.BorderBold, 
tui.BorderBlock, tui.BorderDouble:
                t.border = t.tui.NewWindow(
                        marginInt[0]-1, marginInt[3]-(1+bw), width+(1+bw)*2, 
height+2,
                        false, tui.MakeBorderStyle(t.borderShape, t.unicode))
@@ -1200,7 +1209,7 @@
                                }
                                t.pborder = t.tui.NewWindow(y, x, w, h, true, 
previewBorder)
                                switch previewOpts.border {
-                               case tui.BorderSharp, tui.BorderRounded, 
tui.BorderBold, tui.BorderDouble:
+                               case tui.BorderSharp, tui.BorderRounded, 
tui.BorderBold, tui.BorderBlock, tui.BorderDouble:
                                        pwidth -= (1 + bw) * 2
                                        pheight -= 2
                                        x += 1 + bw
@@ -1226,6 +1235,8 @@
                                        // Need a column to show scrollbar
                                        pwidth -= 1
                                }
+                               pwidth = util.Max(0, pwidth)
+                               pheight = util.Max(0, pheight)
                                t.pwindow = t.tui.NewWindow(y, x, pwidth, 
pheight, true, noBorder)
                        }
                        verticalPad := 2
@@ -1342,7 +1353,7 @@
        }
 
        switch borderShape {
-       case tui.BorderHorizontal, tui.BorderTop, tui.BorderBottom, 
tui.BorderRounded, tui.BorderSharp, tui.BorderBold, tui.BorderDouble:
+       case tui.BorderHorizontal, tui.BorderTop, tui.BorderBottom, 
tui.BorderRounded, tui.BorderSharp, tui.BorderBold, tui.BorderBlock, 
tui.BorderDouble:
                if redrawBorder {
                        window.DrawHBorder()
                }
@@ -1930,7 +1941,9 @@
 func (t *Terminal) renderPreviewScrollbar(yoff int, barLength int, barStart 
int) {
        height := t.pwindow.Height()
        w := t.pborder.Width()
+       redraw := false
        if len(t.previewer.bar) != height {
+               redraw = true
                t.previewer.bar = make([]bool, height)
        }
        xshift := -1 - t.borderWidth
@@ -1947,22 +1960,22 @@
 
                // Avoid unnecessary redraws
                bar := i >= yoff+barStart && i < yoff+barStart+barLength
-               if bar == t.previewer.bar[i] && !t.tui.NeedScrollbarRedraw() {
+               if !redraw && bar == t.previewer.bar[i] && 
!t.tui.NeedScrollbarRedraw() {
                        continue
                }
 
                t.previewer.bar[i] = bar
                t.pborder.Move(y, x)
                if i >= yoff+barStart && i < yoff+barStart+barLength {
-                       t.pborder.CPrint(tui.ColScrollbar, t.scrollbar)
+                       t.pborder.CPrint(tui.ColPreviewScrollbar, 
t.previewScrollbar)
                } else {
-                       t.pborder.Print(" ")
+                       t.pborder.CPrint(tui.ColPreviewScrollbar, " ")
                }
        }
 }
 
 func (t *Terminal) printPreview() {
-       if !t.hasPreviewWindow() {
+       if !t.hasPreviewWindow() || t.pwindow.Height() == 0 {
                return
        }
        numLines := len(t.previewer.lines)
@@ -2706,11 +2719,6 @@
                }
        }
 
-       var onFocus []*action
-       if actions, prs := t.keymap[tui.Focus.AsEvent()]; prs {
-               onFocus = actions
-       }
-
        go func() {
                var focusedIndex int32 = minItem.Index()
                var version int64 = -1
@@ -2751,7 +2759,7 @@
                                                        t.track = trackDisabled
                                                        t.printInfo()
                                                }
-                                               if onFocus != nil && 
focusChanged {
+                                               if onFocus, prs := 
t.keymap[tui.Focus.AsEvent()]; prs && focusChanged {
                                                        t.serverChan <- onFocus
                                                }
                                                if focusChanged || version != 
t.version {
@@ -2953,6 +2961,14 @@
                                                if t.history != nil {
                                                        
t.history.append(string(t.input))
                                                }
+                                               /*
+                                                       FIXME: It is not at all 
clear why this is required.
+                                                       The following command 
will report 'not a tty', unless we open
+                                                       /dev/tty *twice* after 
closing the standard input for 'reload'
+                                                       in Reader.terminate().
+                                                               : | fzf --bind 
'start:reload:ls' --bind 'enter:become:tty'
+                                               */
+                                               tui.TtyIn()
                                                util.SetStdin(tui.TtyIn())
                                                syscall.Exec(shellPath, 
[]string{shell, "-c", command}, os.Environ())
                                        }
@@ -3523,6 +3539,9 @@
 
                                // Split window options
                                tokens := strings.Split(a.a, "|")
+                               if len(tokens[0]) > 0 && 
t.initialPreviewOpts.hidden {
+                                       t.previewOpts.hidden = false
+                               }
                                parsePreviewWindow(&t.previewOpts, tokens[0])
                                if len(tokens) > 1 {
                                        a.a = strings.Join(append(tokens[1:], 
tokens[0]), "|")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/tui/light.go 
new/fzf-0.41.0/src/tui/light.go
--- old/fzf-0.40.0/src/tui/light.go     2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/tui/light.go     2023-05-25 17:25:09.000000000 +0200
@@ -430,7 +430,19 @@
                                }
                                return Event{Invalid, 0, nil} // INS
                        case '3':
-                               return Event{Del, 0, nil}
+                               if r.buffer[3] == '~' {
+                                       return Event{Del, 0, nil}
+                               }
+                               if len(r.buffer) == 6 && r.buffer[5] == '~' {
+                                       *sz = 6
+                                       switch r.buffer[4] {
+                                       case '5':
+                                               return Event{CtrlDelete, 0, nil}
+                                       case '2':
+                                               return Event{SDelete, 0, nil}
+                                       }
+                               }
+                               return Event{Invalid, 0, nil}
                        case '4':
                                return Event{End, 0, nil}
                        case '5':
@@ -745,7 +757,7 @@
 
 func (w *LightWindow) drawBorder(onlyHorizontal bool) {
        switch w.border.shape {
-       case BorderRounded, BorderSharp, BorderBold, BorderDouble:
+       case BorderRounded, BorderSharp, BorderBold, BorderBlock, BorderDouble:
                w.drawBorderAround(onlyHorizontal)
        case BorderHorizontal:
                w.drawBorderHorizontal(true, true)
@@ -776,14 +788,14 @@
        if w.preview {
                color = ColPreviewBorder
        }
-       hw := runewidth.RuneWidth(w.border.horizontal)
+       hw := runewidth.RuneWidth(w.border.top)
        if top {
                w.Move(0, 0)
-               w.CPrint(color, repeat(w.border.horizontal, w.width/hw))
+               w.CPrint(color, repeat(w.border.top, w.width/hw))
        }
        if bottom {
                w.Move(w.height-1, 0)
-               w.CPrint(color, repeat(w.border.horizontal, w.width/hw))
+               w.CPrint(color, repeat(w.border.bottom, w.width/hw))
        }
 }
 
@@ -799,11 +811,11 @@
        for y := 0; y < w.height; y++ {
                w.Move(y, 0)
                if left {
-                       w.CPrint(color, string(w.border.vertical))
+                       w.CPrint(color, string(w.border.left))
                }
                w.CPrint(color, repeat(' ', width))
                if right {
-                       w.CPrint(color, string(w.border.vertical))
+                       w.CPrint(color, string(w.border.right))
                }
        }
 }
@@ -814,23 +826,23 @@
        if w.preview {
                color = ColPreviewBorder
        }
-       hw := runewidth.RuneWidth(w.border.horizontal)
+       hw := runewidth.RuneWidth(w.border.top)
        tcw := runewidth.RuneWidth(w.border.topLeft) + 
runewidth.RuneWidth(w.border.topRight)
        bcw := runewidth.RuneWidth(w.border.bottomLeft) + 
runewidth.RuneWidth(w.border.bottomRight)
        rem := (w.width - tcw) % hw
-       w.CPrint(color, string(w.border.topLeft)+repeat(w.border.horizontal, 
(w.width-tcw)/hw)+repeat(' ', rem)+string(w.border.topRight))
+       w.CPrint(color, string(w.border.topLeft)+repeat(w.border.top, 
(w.width-tcw)/hw)+repeat(' ', rem)+string(w.border.topRight))
        if !onlyHorizontal {
-               vw := runewidth.RuneWidth(w.border.vertical)
+               vw := runewidth.RuneWidth(w.border.left)
                for y := 1; y < w.height-1; y++ {
                        w.Move(y, 0)
-                       w.CPrint(color, string(w.border.vertical))
+                       w.CPrint(color, string(w.border.left))
                        w.CPrint(color, repeat(' ', w.width-vw*2))
-                       w.CPrint(color, string(w.border.vertical))
+                       w.CPrint(color, string(w.border.right))
                }
        }
        w.Move(w.height-1, 0)
        rem = (w.width - bcw) % hw
-       w.CPrint(color, string(w.border.bottomLeft)+repeat(w.border.horizontal, 
(w.width-bcw)/hw)+repeat(' ', rem)+string(w.border.bottomRight))
+       w.CPrint(color, string(w.border.bottomLeft)+repeat(w.border.bottom, 
(w.width-bcw)/hw)+repeat(' ', rem)+string(w.border.bottomRight))
 }
 
 func (w *LightWindow) csi(code string) string {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/tui/tcell.go 
new/fzf-0.41.0/src/tui/tcell.go
--- old/fzf-0.40.0/src/tui/tcell.go     2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/tui/tcell.go     2023-05-25 17:25:09.000000000 +0200
@@ -413,6 +413,12 @@
                case tcell.KeyHome:
                        return Event{Home, 0, nil}
                case tcell.KeyDelete:
+                       if ctrl {
+                               return Event{CtrlDelete, 0, nil}
+                       }
+                       if shift {
+                               return Event{SDelete, 0, nil}
+                       }
                        return Event{Del, 0, nil}
                case tcell.KeyEnd:
                        return Event{End, 0, nil}
@@ -707,9 +713,9 @@
                style = w.normal.style()
        }
 
-       hw := runewidth.RuneWidth(w.borderStyle.horizontal)
+       hw := runewidth.RuneWidth(w.borderStyle.top)
        switch shape {
-       case BorderRounded, BorderSharp, BorderBold, BorderDouble, 
BorderHorizontal, BorderTop:
+       case BorderRounded, BorderSharp, BorderBold, BorderBlock, BorderDouble, 
BorderHorizontal, BorderTop:
                max := right - 2*hw
                if shape == BorderHorizontal || shape == BorderTop {
                        max = right - hw
@@ -720,36 +726,36 @@
                //       ==================
                //                 (  HH  ) => TR is ignored
                for x := left; x <= max; x += hw {
-                       _screen.SetContent(x, top, w.borderStyle.horizontal, 
nil, style)
+                       _screen.SetContent(x, top, w.borderStyle.top, nil, 
style)
                }
        }
        switch shape {
-       case BorderRounded, BorderSharp, BorderBold, BorderDouble, 
BorderHorizontal, BorderBottom:
+       case BorderRounded, BorderSharp, BorderBold, BorderBlock, BorderDouble, 
BorderHorizontal, BorderBottom:
                max := right - 2*hw
                if shape == BorderHorizontal || shape == BorderBottom {
                        max = right - hw
                }
                for x := left; x <= max; x += hw {
-                       _screen.SetContent(x, bot-1, w.borderStyle.horizontal, 
nil, style)
+                       _screen.SetContent(x, bot-1, w.borderStyle.bottom, nil, 
style)
                }
        }
        if !onlyHorizontal {
                switch shape {
-               case BorderRounded, BorderSharp, BorderBold, BorderDouble, 
BorderVertical, BorderLeft:
+               case BorderRounded, BorderSharp, BorderBold, BorderBlock, 
BorderDouble, BorderVertical, BorderLeft:
                        for y := top; y < bot; y++ {
-                               _screen.SetContent(left, y, 
w.borderStyle.vertical, nil, style)
+                               _screen.SetContent(left, y, w.borderStyle.left, 
nil, style)
                        }
                }
                switch shape {
-               case BorderRounded, BorderSharp, BorderBold, BorderDouble, 
BorderVertical, BorderRight:
-                       vw := runewidth.RuneWidth(w.borderStyle.vertical)
+               case BorderRounded, BorderSharp, BorderBold, BorderBlock, 
BorderDouble, BorderVertical, BorderRight:
+                       vw := runewidth.RuneWidth(w.borderStyle.right)
                        for y := top; y < bot; y++ {
-                               _screen.SetContent(right-vw, y, 
w.borderStyle.vertical, nil, style)
+                               _screen.SetContent(right-vw, y, 
w.borderStyle.right, nil, style)
                        }
                }
        }
        switch shape {
-       case BorderRounded, BorderSharp, BorderBold, BorderDouble:
+       case BorderRounded, BorderSharp, BorderBold, BorderBlock, BorderDouble:
                _screen.SetContent(left, top, w.borderStyle.topLeft, nil, style)
                
_screen.SetContent(right-runewidth.RuneWidth(w.borderStyle.topRight), top, 
w.borderStyle.topRight, nil, style)
                _screen.SetContent(left, bot-1, w.borderStyle.bottomLeft, nil, 
style)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/src/tui/tui.go 
new/fzf-0.41.0/src/tui/tui.go
--- old/fzf-0.40.0/src/tui/tui.go       2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/src/tui/tui.go       2023-05-25 17:25:09.000000000 +0200
@@ -41,6 +41,7 @@
        CtrlZ
        ESC
        CtrlSpace
+       CtrlDelete
 
        // 
https://apple.stackexchange.com/questions/24261/how-do-i-send-c-that-is-control-slash-to-the-terminal
        CtrlBackSlash
@@ -74,6 +75,7 @@
        SDown
        SLeft
        SRight
+       SDelete
 
        F1
        F2
@@ -253,29 +255,31 @@
 }
 
 type ColorTheme struct {
-       Colored      bool
-       Input        ColorAttr
-       Disabled     ColorAttr
-       Fg           ColorAttr
-       Bg           ColorAttr
-       PreviewFg    ColorAttr
-       PreviewBg    ColorAttr
-       DarkBg       ColorAttr
-       Gutter       ColorAttr
-       Prompt       ColorAttr
-       Match        ColorAttr
-       Current      ColorAttr
-       CurrentMatch ColorAttr
-       Spinner      ColorAttr
-       Info         ColorAttr
-       Cursor       ColorAttr
-       Selected     ColorAttr
-       Header       ColorAttr
-       Separator    ColorAttr
-       Scrollbar    ColorAttr
-       Border       ColorAttr
-       BorderLabel  ColorAttr
-       PreviewLabel ColorAttr
+       Colored          bool
+       Input            ColorAttr
+       Disabled         ColorAttr
+       Fg               ColorAttr
+       Bg               ColorAttr
+       PreviewFg        ColorAttr
+       PreviewBg        ColorAttr
+       DarkBg           ColorAttr
+       Gutter           ColorAttr
+       Prompt           ColorAttr
+       Match            ColorAttr
+       Current          ColorAttr
+       CurrentMatch     ColorAttr
+       Spinner          ColorAttr
+       Info             ColorAttr
+       Cursor           ColorAttr
+       Selected         ColorAttr
+       Header           ColorAttr
+       Separator        ColorAttr
+       Scrollbar        ColorAttr
+       Border           ColorAttr
+       PreviewBorder    ColorAttr
+       PreviewScrollbar ColorAttr
+       BorderLabel      ColorAttr
+       PreviewLabel     ColorAttr
 }
 
 type Event struct {
@@ -310,6 +314,7 @@
        BorderRounded
        BorderSharp
        BorderBold
+       BorderBlock
        BorderDouble
        BorderHorizontal
        BorderVertical
@@ -337,8 +342,10 @@
 
 type BorderStyle struct {
        shape       BorderShape
-       horizontal  rune
-       vertical    rune
+       top         rune
+       bottom      rune
+       left        rune
+       right       rune
        topLeft     rune
        topRight    rune
        bottomLeft  rune
@@ -351,8 +358,10 @@
        if !unicode {
                return BorderStyle{
                        shape:       shape,
-                       horizontal:  '-',
-                       vertical:    '|',
+                       top:         '-',
+                       bottom:      '-',
+                       left:        '|',
+                       right:       '|',
                        topLeft:     '+',
                        topRight:    '+',
                        bottomLeft:  '+',
@@ -363,8 +372,10 @@
        case BorderSharp:
                return BorderStyle{
                        shape:       shape,
-                       horizontal:  '─',
-                       vertical:    '│',
+                       top:         '─',
+                       bottom:      '─',
+                       left:        '│',
+                       right:       '│',
                        topLeft:     '┌',
                        topRight:    '┐',
                        bottomLeft:  '└',
@@ -373,18 +384,37 @@
        case BorderBold:
                return BorderStyle{
                        shape:       shape,
-                       horizontal:  '━',
-                       vertical:    '┃',
+                       top:         '━',
+                       bottom:      '━',
+                       left:        '┃',
+                       right:       '┃',
                        topLeft:     '┏',
                        topRight:    '┓',
                        bottomLeft:  '┗',
                        bottomRight: '┛',
                }
+       case BorderBlock:
+               // ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+               // ▌                  ▐
+               // ▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+               return BorderStyle{
+                       shape:       shape,
+                       top:         '▀',
+                       bottom:      '▄',
+                       left:        '▌',
+                       right:       '▐',
+                       topLeft:     '▛',
+                       topRight:    '▜',
+                       bottomLeft:  '▙',
+                       bottomRight: '▟',
+               }
        case BorderDouble:
                return BorderStyle{
                        shape:       shape,
-                       horizontal:  '═',
-                       vertical:    '║',
+                       top:         '═',
+                       bottom:      '═',
+                       left:        '║',
+                       right:       '║',
                        topLeft:     '╔',
                        topRight:    '╗',
                        bottomLeft:  '╚',
@@ -393,8 +423,10 @@
        }
        return BorderStyle{
                shape:       shape,
-               horizontal:  '─',
-               vertical:    '│',
+               top:         '─',
+               bottom:      '─',
+               left:        '│',
+               right:       '│',
                topLeft:     '╭',
                topRight:    '╮',
                bottomLeft:  '╰',
@@ -405,8 +437,10 @@
 func MakeTransparentBorder() BorderStyle {
        return BorderStyle{
                shape:       BorderRounded,
-               horizontal:  ' ',
-               vertical:    ' ',
+               top:         ' ',
+               bottom:      ' ',
+               left:        ' ',
+               right:       ' ',
                topLeft:     ' ',
                topRight:    ' ',
                bottomLeft:  ' ',
@@ -503,61 +537,66 @@
        ColPreviewBorder        ColorPair
        ColBorderLabel          ColorPair
        ColPreviewLabel         ColorPair
+       ColPreviewScrollbar     ColorPair
 )
 
 func EmptyTheme() *ColorTheme {
        return &ColorTheme{
-               Colored:      true,
-               Input:        ColorAttr{colUndefined, AttrUndefined},
-               Fg:           ColorAttr{colUndefined, AttrUndefined},
-               Bg:           ColorAttr{colUndefined, AttrUndefined},
-               DarkBg:       ColorAttr{colUndefined, AttrUndefined},
-               Prompt:       ColorAttr{colUndefined, AttrUndefined},
-               Match:        ColorAttr{colUndefined, AttrUndefined},
-               Current:      ColorAttr{colUndefined, AttrUndefined},
-               CurrentMatch: ColorAttr{colUndefined, AttrUndefined},
-               Spinner:      ColorAttr{colUndefined, AttrUndefined},
-               Info:         ColorAttr{colUndefined, AttrUndefined},
-               Cursor:       ColorAttr{colUndefined, AttrUndefined},
-               Selected:     ColorAttr{colUndefined, AttrUndefined},
-               Header:       ColorAttr{colUndefined, AttrUndefined},
-               Border:       ColorAttr{colUndefined, AttrUndefined},
-               BorderLabel:  ColorAttr{colUndefined, AttrUndefined},
-               Disabled:     ColorAttr{colUndefined, AttrUndefined},
-               PreviewFg:    ColorAttr{colUndefined, AttrUndefined},
-               PreviewBg:    ColorAttr{colUndefined, AttrUndefined},
-               Gutter:       ColorAttr{colUndefined, AttrUndefined},
-               PreviewLabel: ColorAttr{colUndefined, AttrUndefined},
-               Separator:    ColorAttr{colUndefined, AttrUndefined},
-               Scrollbar:    ColorAttr{colUndefined, AttrUndefined},
+               Colored:          true,
+               Input:            ColorAttr{colUndefined, AttrUndefined},
+               Fg:               ColorAttr{colUndefined, AttrUndefined},
+               Bg:               ColorAttr{colUndefined, AttrUndefined},
+               DarkBg:           ColorAttr{colUndefined, AttrUndefined},
+               Prompt:           ColorAttr{colUndefined, AttrUndefined},
+               Match:            ColorAttr{colUndefined, AttrUndefined},
+               Current:          ColorAttr{colUndefined, AttrUndefined},
+               CurrentMatch:     ColorAttr{colUndefined, AttrUndefined},
+               Spinner:          ColorAttr{colUndefined, AttrUndefined},
+               Info:             ColorAttr{colUndefined, AttrUndefined},
+               Cursor:           ColorAttr{colUndefined, AttrUndefined},
+               Selected:         ColorAttr{colUndefined, AttrUndefined},
+               Header:           ColorAttr{colUndefined, AttrUndefined},
+               Border:           ColorAttr{colUndefined, AttrUndefined},
+               BorderLabel:      ColorAttr{colUndefined, AttrUndefined},
+               Disabled:         ColorAttr{colUndefined, AttrUndefined},
+               PreviewFg:        ColorAttr{colUndefined, AttrUndefined},
+               PreviewBg:        ColorAttr{colUndefined, AttrUndefined},
+               Gutter:           ColorAttr{colUndefined, AttrUndefined},
+               PreviewBorder:    ColorAttr{colUndefined, AttrUndefined},
+               PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined},
+               PreviewLabel:     ColorAttr{colUndefined, AttrUndefined},
+               Separator:        ColorAttr{colUndefined, AttrUndefined},
+               Scrollbar:        ColorAttr{colUndefined, AttrUndefined},
        }
 }
 
 func NoColorTheme() *ColorTheme {
        return &ColorTheme{
-               Colored:      false,
-               Input:        ColorAttr{colDefault, AttrUndefined},
-               Fg:           ColorAttr{colDefault, AttrUndefined},
-               Bg:           ColorAttr{colDefault, AttrUndefined},
-               DarkBg:       ColorAttr{colDefault, AttrUndefined},
-               Prompt:       ColorAttr{colDefault, AttrUndefined},
-               Match:        ColorAttr{colDefault, Underline},
-               Current:      ColorAttr{colDefault, Reverse},
-               CurrentMatch: ColorAttr{colDefault, Reverse | Underline},
-               Spinner:      ColorAttr{colDefault, AttrUndefined},
-               Info:         ColorAttr{colDefault, AttrUndefined},
-               Cursor:       ColorAttr{colDefault, AttrUndefined},
-               Selected:     ColorAttr{colDefault, AttrUndefined},
-               Header:       ColorAttr{colDefault, AttrUndefined},
-               Border:       ColorAttr{colDefault, AttrUndefined},
-               BorderLabel:  ColorAttr{colDefault, AttrUndefined},
-               Disabled:     ColorAttr{colDefault, AttrUndefined},
-               PreviewFg:    ColorAttr{colDefault, AttrUndefined},
-               PreviewBg:    ColorAttr{colDefault, AttrUndefined},
-               Gutter:       ColorAttr{colDefault, AttrUndefined},
-               PreviewLabel: ColorAttr{colDefault, AttrUndefined},
-               Separator:    ColorAttr{colDefault, AttrUndefined},
-               Scrollbar:    ColorAttr{colDefault, AttrUndefined},
+               Colored:          false,
+               Input:            ColorAttr{colDefault, AttrUndefined},
+               Fg:               ColorAttr{colDefault, AttrUndefined},
+               Bg:               ColorAttr{colDefault, AttrUndefined},
+               DarkBg:           ColorAttr{colDefault, AttrUndefined},
+               Prompt:           ColorAttr{colDefault, AttrUndefined},
+               Match:            ColorAttr{colDefault, Underline},
+               Current:          ColorAttr{colDefault, Reverse},
+               CurrentMatch:     ColorAttr{colDefault, Reverse | Underline},
+               Spinner:          ColorAttr{colDefault, AttrUndefined},
+               Info:             ColorAttr{colDefault, AttrUndefined},
+               Cursor:           ColorAttr{colDefault, AttrUndefined},
+               Selected:         ColorAttr{colDefault, AttrUndefined},
+               Header:           ColorAttr{colDefault, AttrUndefined},
+               Border:           ColorAttr{colDefault, AttrUndefined},
+               BorderLabel:      ColorAttr{colDefault, AttrUndefined},
+               Disabled:         ColorAttr{colDefault, AttrUndefined},
+               PreviewFg:        ColorAttr{colDefault, AttrUndefined},
+               PreviewBg:        ColorAttr{colDefault, AttrUndefined},
+               Gutter:           ColorAttr{colDefault, AttrUndefined},
+               PreviewBorder:    ColorAttr{colDefault, AttrUndefined},
+               PreviewScrollbar: ColorAttr{colDefault, AttrUndefined},
+               PreviewLabel:     ColorAttr{colDefault, AttrUndefined},
+               Separator:        ColorAttr{colDefault, AttrUndefined},
+               Scrollbar:        ColorAttr{colDefault, AttrUndefined},
        }
 }
 
@@ -568,79 +607,85 @@
 
 func init() {
        Default16 = &ColorTheme{
-               Colored:      true,
-               Input:        ColorAttr{colDefault, AttrUndefined},
-               Fg:           ColorAttr{colDefault, AttrUndefined},
-               Bg:           ColorAttr{colDefault, AttrUndefined},
-               DarkBg:       ColorAttr{colBlack, AttrUndefined},
-               Prompt:       ColorAttr{colBlue, AttrUndefined},
-               Match:        ColorAttr{colGreen, AttrUndefined},
-               Current:      ColorAttr{colYellow, AttrUndefined},
-               CurrentMatch: ColorAttr{colGreen, AttrUndefined},
-               Spinner:      ColorAttr{colGreen, AttrUndefined},
-               Info:         ColorAttr{colWhite, AttrUndefined},
-               Cursor:       ColorAttr{colRed, AttrUndefined},
-               Selected:     ColorAttr{colMagenta, AttrUndefined},
-               Header:       ColorAttr{colCyan, AttrUndefined},
-               Border:       ColorAttr{colBlack, AttrUndefined},
-               BorderLabel:  ColorAttr{colWhite, AttrUndefined},
-               Disabled:     ColorAttr{colUndefined, AttrUndefined},
-               PreviewFg:    ColorAttr{colUndefined, AttrUndefined},
-               PreviewBg:    ColorAttr{colUndefined, AttrUndefined},
-               Gutter:       ColorAttr{colUndefined, AttrUndefined},
-               PreviewLabel: ColorAttr{colUndefined, AttrUndefined},
-               Separator:    ColorAttr{colUndefined, AttrUndefined},
-               Scrollbar:    ColorAttr{colUndefined, AttrUndefined},
+               Colored:          true,
+               Input:            ColorAttr{colDefault, AttrUndefined},
+               Fg:               ColorAttr{colDefault, AttrUndefined},
+               Bg:               ColorAttr{colDefault, AttrUndefined},
+               DarkBg:           ColorAttr{colBlack, AttrUndefined},
+               Prompt:           ColorAttr{colBlue, AttrUndefined},
+               Match:            ColorAttr{colGreen, AttrUndefined},
+               Current:          ColorAttr{colYellow, AttrUndefined},
+               CurrentMatch:     ColorAttr{colGreen, AttrUndefined},
+               Spinner:          ColorAttr{colGreen, AttrUndefined},
+               Info:             ColorAttr{colWhite, AttrUndefined},
+               Cursor:           ColorAttr{colRed, AttrUndefined},
+               Selected:         ColorAttr{colMagenta, AttrUndefined},
+               Header:           ColorAttr{colCyan, AttrUndefined},
+               Border:           ColorAttr{colBlack, AttrUndefined},
+               BorderLabel:      ColorAttr{colWhite, AttrUndefined},
+               Disabled:         ColorAttr{colUndefined, AttrUndefined},
+               PreviewFg:        ColorAttr{colUndefined, AttrUndefined},
+               PreviewBg:        ColorAttr{colUndefined, AttrUndefined},
+               Gutter:           ColorAttr{colUndefined, AttrUndefined},
+               PreviewBorder:    ColorAttr{colUndefined, AttrUndefined},
+               PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined},
+               PreviewLabel:     ColorAttr{colUndefined, AttrUndefined},
+               Separator:        ColorAttr{colUndefined, AttrUndefined},
+               Scrollbar:        ColorAttr{colUndefined, AttrUndefined},
        }
        Dark256 = &ColorTheme{
-               Colored:      true,
-               Input:        ColorAttr{colDefault, AttrUndefined},
-               Fg:           ColorAttr{colDefault, AttrUndefined},
-               Bg:           ColorAttr{colDefault, AttrUndefined},
-               DarkBg:       ColorAttr{236, AttrUndefined},
-               Prompt:       ColorAttr{110, AttrUndefined},
-               Match:        ColorAttr{108, AttrUndefined},
-               Current:      ColorAttr{254, AttrUndefined},
-               CurrentMatch: ColorAttr{151, AttrUndefined},
-               Spinner:      ColorAttr{148, AttrUndefined},
-               Info:         ColorAttr{144, AttrUndefined},
-               Cursor:       ColorAttr{161, AttrUndefined},
-               Selected:     ColorAttr{168, AttrUndefined},
-               Header:       ColorAttr{109, AttrUndefined},
-               Border:       ColorAttr{59, AttrUndefined},
-               BorderLabel:  ColorAttr{145, AttrUndefined},
-               Disabled:     ColorAttr{colUndefined, AttrUndefined},
-               PreviewFg:    ColorAttr{colUndefined, AttrUndefined},
-               PreviewBg:    ColorAttr{colUndefined, AttrUndefined},
-               Gutter:       ColorAttr{colUndefined, AttrUndefined},
-               PreviewLabel: ColorAttr{colUndefined, AttrUndefined},
-               Separator:    ColorAttr{colUndefined, AttrUndefined},
-               Scrollbar:    ColorAttr{colUndefined, AttrUndefined},
+               Colored:          true,
+               Input:            ColorAttr{colDefault, AttrUndefined},
+               Fg:               ColorAttr{colDefault, AttrUndefined},
+               Bg:               ColorAttr{colDefault, AttrUndefined},
+               DarkBg:           ColorAttr{236, AttrUndefined},
+               Prompt:           ColorAttr{110, AttrUndefined},
+               Match:            ColorAttr{108, AttrUndefined},
+               Current:          ColorAttr{254, AttrUndefined},
+               CurrentMatch:     ColorAttr{151, AttrUndefined},
+               Spinner:          ColorAttr{148, AttrUndefined},
+               Info:             ColorAttr{144, AttrUndefined},
+               Cursor:           ColorAttr{161, AttrUndefined},
+               Selected:         ColorAttr{168, AttrUndefined},
+               Header:           ColorAttr{109, AttrUndefined},
+               Border:           ColorAttr{59, AttrUndefined},
+               BorderLabel:      ColorAttr{145, AttrUndefined},
+               Disabled:         ColorAttr{colUndefined, AttrUndefined},
+               PreviewFg:        ColorAttr{colUndefined, AttrUndefined},
+               PreviewBg:        ColorAttr{colUndefined, AttrUndefined},
+               Gutter:           ColorAttr{colUndefined, AttrUndefined},
+               PreviewBorder:    ColorAttr{colUndefined, AttrUndefined},
+               PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined},
+               PreviewLabel:     ColorAttr{colUndefined, AttrUndefined},
+               Separator:        ColorAttr{colUndefined, AttrUndefined},
+               Scrollbar:        ColorAttr{colUndefined, AttrUndefined},
        }
        Light256 = &ColorTheme{
-               Colored:      true,
-               Input:        ColorAttr{colDefault, AttrUndefined},
-               Fg:           ColorAttr{colDefault, AttrUndefined},
-               Bg:           ColorAttr{colDefault, AttrUndefined},
-               DarkBg:       ColorAttr{251, AttrUndefined},
-               Prompt:       ColorAttr{25, AttrUndefined},
-               Match:        ColorAttr{66, AttrUndefined},
-               Current:      ColorAttr{237, AttrUndefined},
-               CurrentMatch: ColorAttr{23, AttrUndefined},
-               Spinner:      ColorAttr{65, AttrUndefined},
-               Info:         ColorAttr{101, AttrUndefined},
-               Cursor:       ColorAttr{161, AttrUndefined},
-               Selected:     ColorAttr{168, AttrUndefined},
-               Header:       ColorAttr{31, AttrUndefined},
-               Border:       ColorAttr{145, AttrUndefined},
-               BorderLabel:  ColorAttr{59, AttrUndefined},
-               Disabled:     ColorAttr{colUndefined, AttrUndefined},
-               PreviewFg:    ColorAttr{colUndefined, AttrUndefined},
-               PreviewBg:    ColorAttr{colUndefined, AttrUndefined},
-               Gutter:       ColorAttr{colUndefined, AttrUndefined},
-               PreviewLabel: ColorAttr{colUndefined, AttrUndefined},
-               Separator:    ColorAttr{colUndefined, AttrUndefined},
-               Scrollbar:    ColorAttr{colUndefined, AttrUndefined},
+               Colored:          true,
+               Input:            ColorAttr{colDefault, AttrUndefined},
+               Fg:               ColorAttr{colDefault, AttrUndefined},
+               Bg:               ColorAttr{colDefault, AttrUndefined},
+               DarkBg:           ColorAttr{251, AttrUndefined},
+               Prompt:           ColorAttr{25, AttrUndefined},
+               Match:            ColorAttr{66, AttrUndefined},
+               Current:          ColorAttr{237, AttrUndefined},
+               CurrentMatch:     ColorAttr{23, AttrUndefined},
+               Spinner:          ColorAttr{65, AttrUndefined},
+               Info:             ColorAttr{101, AttrUndefined},
+               Cursor:           ColorAttr{161, AttrUndefined},
+               Selected:         ColorAttr{168, AttrUndefined},
+               Header:           ColorAttr{31, AttrUndefined},
+               Border:           ColorAttr{145, AttrUndefined},
+               BorderLabel:      ColorAttr{59, AttrUndefined},
+               Disabled:         ColorAttr{colUndefined, AttrUndefined},
+               PreviewFg:        ColorAttr{colUndefined, AttrUndefined},
+               PreviewBg:        ColorAttr{colUndefined, AttrUndefined},
+               Gutter:           ColorAttr{colUndefined, AttrUndefined},
+               PreviewBorder:    ColorAttr{colUndefined, AttrUndefined},
+               PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined},
+               PreviewLabel:     ColorAttr{colUndefined, AttrUndefined},
+               Separator:        ColorAttr{colUndefined, AttrUndefined},
+               Scrollbar:        ColorAttr{colUndefined, AttrUndefined},
        }
 }
 
@@ -681,8 +726,10 @@
        theme.PreviewFg = o(theme.Fg, theme.PreviewFg)
        theme.PreviewBg = o(theme.Bg, theme.PreviewBg)
        theme.PreviewLabel = o(theme.BorderLabel, theme.PreviewLabel)
+       theme.PreviewBorder = o(theme.Border, theme.PreviewBorder)
        theme.Separator = o(theme.Border, theme.Separator)
        theme.Scrollbar = o(theme.Border, theme.Scrollbar)
+       theme.PreviewScrollbar = o(theme.PreviewBorder, theme.PreviewScrollbar)
 
        initPalette(theme)
 }
@@ -720,5 +767,6 @@
        ColBorderLabel = pair(theme.BorderLabel, theme.Bg)
        ColPreviewLabel = pair(theme.PreviewLabel, theme.PreviewBg)
        ColPreview = pair(theme.PreviewFg, theme.PreviewBg)
-       ColPreviewBorder = pair(theme.Border, theme.PreviewBg)
+       ColPreviewBorder = pair(theme.PreviewBorder, theme.PreviewBg)
+       ColPreviewScrollbar = pair(theme.PreviewScrollbar, theme.PreviewBg)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fzf-0.40.0/test/test_go.rb 
new/fzf-0.41.0/test/test_go.rb
--- old/fzf-0.40.0/test/test_go.rb      2023-04-30 18:59:21.000000000 +0200
+++ new/fzf-0.41.0/test/test_go.rb      2023-05-25 17:25:09.000000000 +0200
@@ -2493,6 +2493,39 @@
     end
   end
 
+  def test_change_preview_window_rotate_hidden
+    tmux.send_keys "seq 100 | #{FZF} --preview-window hidden --preview 'echo 
=={}==' --bind '" \
+      "a:change-preview-window(nohidden||down,1|)'", :Enter
+    tmux.until { |lines| assert_equal 100, lines.match_count }
+    tmux.until { |lines| refute_includes lines[1], '==1==' }
+    tmux.send_keys 'a'
+    tmux.until { |lines| assert_includes lines[1], '==1==' }
+    tmux.send_keys 'a'
+    tmux.until { |lines| refute_includes lines[1], '==1==' }
+    tmux.send_keys 'a'
+    tmux.until { |lines| assert_includes lines[-2], '==1==' }
+    tmux.send_keys 'a'
+    tmux.until { |lines| refute_includes lines[-2], '==1==' }
+    tmux.send_keys 'a'
+    tmux.until { |lines| assert_includes lines[1], '==1==' }
+  end
+
+  def test_change_preview_window_rotate_hidden_down
+    tmux.send_keys "seq 100 | #{FZF} --bind 
'?:change-preview-window:up||down|' --preview 'echo =={}==' --preview-window 
hidden,down,1", :Enter
+    tmux.until { |lines| assert_equal 100, lines.match_count }
+    tmux.until { |lines| refute_includes lines[1], '==1==' }
+    tmux.send_keys '?'
+    tmux.until { |lines| assert_includes lines[1], '==1==' }
+    tmux.send_keys '?'
+    tmux.until { |lines| refute_includes lines[1], '==1==' }
+    tmux.send_keys '?'
+    tmux.until { |lines| assert_includes lines[-2], '==1==' }
+    tmux.send_keys '?'
+    tmux.until { |lines| refute_includes lines[-2], '==1==' }
+    tmux.send_keys '?'
+    tmux.until { |lines| assert_includes lines[1], '==1==' }
+  end
+
   def test_ellipsis
     tmux.send_keys 'seq 1000 | tr "\n" , | fzf --ellipsis=SNIPSNIP -e -q500', 
:Enter
     tmux.until { |lines| assert_equal 1, lines.match_count }
@@ -2595,12 +2628,16 @@
   end
 
   def test_focus_event
-    tmux.send_keys 'seq 100 | fzf --bind "focus:transform-prompt(echo 
[[{}]])"', :Enter
+    tmux.send_keys 'seq 100 | fzf --bind "focus:transform-prompt(echo 
[[{}]]),?:unbind(focus)"', :Enter
     tmux.until { |lines| assert_includes(lines[-1], '[[1]]') }
     tmux.send_keys :Up
     tmux.until { |lines| assert_includes(lines[-1], '[[2]]') }
     tmux.send_keys :X
     tmux.until { |lines| assert_includes(lines[-1], '[[]]') }
+    tmux.send_keys '?'
+    tmux.send_keys :BSpace
+    tmux.until { |lines| assert_equal 100, lines.match_count }
+    tmux.until { |lines| refute_includes(lines[-1], '[[1]]') }
   end
 
   def test_labels_center
@@ -2866,6 +2903,38 @@
     tmux.send_keys "(echo foo; echo bar) | #{FZF} --bind 
'load:reload-sync(sleep 60)+change-query(bar)'", :Enter
     tmux.until { |lines| assert_equal 1, lines.match_count }
   end
+
+  def test_reload_and_change_cache
+    tmux.send_keys "echo bar | #{FZF} --bind 
'zero:change-header(foo)+reload(echo foo)+clear-query'", :Enter
+    expected = <<~OUTPUT
+      > bar
+        1/1
+      >
+    OUTPUT
+    tmux.until { assert_block(expected, _1) }
+    tmux.send_keys :z
+    expected = <<~OUTPUT
+      > foo
+        foo
+        1/1
+      >
+    OUTPUT
+    tmux.until { assert_block(expected, _1) }
+  end
+
+  def test_delete_with_modifiers
+    tmux.send_keys "seq 100 | #{FZF} --bind 
'ctrl-delete:up+up,shift-delete:down,focus:transform-prompt:echo [{}]'", :Enter
+    tmux.until { |lines| assert_equal 100, lines.item_count }
+    tmux.send_keys 'C-Delete'
+    tmux.until { |lines| assert_equal '[3]', lines[-1] }
+    tmux.send_keys 'S-Delete'
+    tmux.until { |lines| assert_equal '[2]', lines[-1] }
+  end
+
+  def test_become_tty
+    tmux.send_keys "sleep 0.5 | #{FZF} --bind 'start:reload:ls' --bind 
'load:become:tty'", :Enter
+    tmux.until { |lines| assert_includes lines, '/dev/tty' }
+  end
 end
 
 module TestShell

++++++ vendor.tar.zst ++++++
Binary files /var/tmp/diff_new_pack.b3IINq/_old and 
/var/tmp/diff_new_pack.b3IINq/_new differ

Reply via email to