From d983481e8bf62023569769965b0fd528fd2cd939 Mon Sep 17 00:00:00 2001 From: knutze <34371397+knutze@users.noreply.github.com> Date: Sat, 27 Aug 2022 02:30:36 +0900 Subject: [PATCH] Updated Examples (markdown) --- Examples.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Examples.md b/Examples.md index fbda92d..f222e2c 100644 --- a/Examples.md +++ b/Examples.md @@ -553,6 +553,59 @@ fi } ``` +#### Command history not blocked in MSYS2 environment + +```sh +# CTRL-R script for MSYS2 environment (requires winpty) +# For the most part the same as the original __fzf_history__. +_fzf_history_msys2() { + # Bash 4.4 or later + local - && set -o pipefail + + # Concurrency is not considered (who needs it?) + local WORK_DIR="${TMPDIR:=${TMP:-/tmp}}/${FUNCNAME[0]##_}" + mkdir -p "${WORK_DIR}" || return + + local PERL_SCRIPT=' + BEGIN { getc; $/ = "\n\t"; $HISTCOUNT = $ENV{last_hist} + 1 } + s/^[ *]//; print $HISTCOUNT - $. . "\t$_" if !$seen{$_}++ + ' + local FZF_OPTS=" + --height ${FZF_TMUX_HEIGHT:-40%} + --bind=ctrl-z:ignore + ${FZF_DEFAULT_OPTS} + -n2..,.. --tiebreak=index + --bind=ctrl-r:toggle-sort + ${FZF_CTRL_R_OPTS} + +m --read0 + " + + # stdin is passed to winpty as-is tty, and input/output + # to/from fzf is via file. + builtin fc -lnr -2147483648 | + last_hist=$(HISTTIMEFORMAT='' builtin history 1) \ + perl -n -l0 -e "${PERL_SCRIPT}" \ + >"${WORK_DIR}"/stdin || return + winpty -- bash -c " + set -o pipefail + cat \"${WORK_DIR}\"/stdin | \ + FZF_DEFAULT_OPTS='${FZF_OPTS}' fzf --query '${READLINE_LINE}' \ + >\"${WORK_DIR}\"/stdout + " || return + + READLINE_LINE=$(sed -E 's|.*\s||' "${WORK_DIR}"/stdout) + if [[ -z "${READLINE_POINT}" ]]; then + echo "${READLINE_LINE}" + else + READLINE_POINT=0x7fffffff + fi +} + +bind -m emacs-standard -x '"\C-r": _fzf_history_msys2' +bind -m vi-command -x '"\C-r": _fzf_history_msys2' +bind -m vi-insert -x '"\C-r": _fzf_history_msys2' +``` + ### Processes ```sh