mirror of
https://github.com/junegunn/fzf.git
synced 2026-11-07 17:05:55 +00:00
Compare commits
17
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab9a552f5b | ||
|
|
a38beb544f | ||
|
|
b5c054ee18 | ||
|
|
3dd8e03ddc | ||
|
|
02d8843869 | ||
|
|
c076805825 | ||
|
|
398b66342d | ||
|
|
fa30c5a278 | ||
|
|
e279faac50 | ||
|
|
386c3e9ea9 | ||
|
|
14aacc115d | ||
|
|
5853d57518 | ||
|
|
e19c2c4c6e | ||
|
|
68ef9cf0d0 | ||
|
|
243ccc325b | ||
|
|
d7138593f2 | ||
|
|
5b2936db82 |
No files matched your search
@@ -30,7 +30,6 @@ CHANGELOG
|
||||
```
|
||||
- Fixed `--no-sort` being ignored in filter mode with `--sync`, `--tac`, or `--bench` (#4940) (@NavpreetSSidhu)
|
||||
- Fixed `--walker=follow` skipping a symlink in one `--walker-root` when its target is an ancestor of another root (#4944) (@mabunemeh)
|
||||
- Fixed data races in the preview and the search result cache (#4947)
|
||||
- Fixed O(n^2) action parsing in `--listen`. A single ~1 MB request could block the server for ~30 s (@zachariah-mithani, AploSec)
|
||||
- Windows
|
||||
- Fixed `--with-shell` on Windows not detecting cmd, PowerShell, and pwsh, which made fzf quote commands and entries for a POSIX shell (#4936) (@vimkim)
|
||||
|
||||
+3
-3
@@ -22,7 +22,7 @@ triggered by a tag push.
|
||||
3. Verify file consistency, sign the tag, and push the tag.
|
||||
|
||||
```sh
|
||||
make tag VERSION=0.75.0
|
||||
make tag VERSION=0.74.5
|
||||
```
|
||||
|
||||
`make tag` runs `prerelease` first (checks that the version
|
||||
@@ -54,8 +54,8 @@ The release stays a draft. Do not push `master` until it is published.
|
||||
- Publish without MSIs and submit to winget by hand:
|
||||
|
||||
```sh
|
||||
gh release edit v0.75.0 --draft=false
|
||||
gh workflow run winget.yml -f release-tag=v0.75.0
|
||||
gh release edit v0.74.5 --draft=false
|
||||
gh workflow run winget.yml -f release-tag=v0.74.5
|
||||
```
|
||||
|
||||
## Testing the workflow
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
set -u
|
||||
|
||||
version=0.75.0
|
||||
version=0.74.5
|
||||
auto_completion=
|
||||
key_bindings=
|
||||
update_config=2
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
$version="0.75.0"
|
||||
$version="0.74.5"
|
||||
|
||||
$fzf_base=Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
"github.com/junegunn/fzf/src/protector"
|
||||
)
|
||||
|
||||
var version = "0.75"
|
||||
var version = "0.74"
|
||||
var revision = "devel"
|
||||
|
||||
//go:embed shell/key-bindings.bash
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
..
|
||||
.TH fzf\-tmux 1 "Nov 2026" "fzf 0.75.0" "fzf\-tmux - open fzf in tmux split pane"
|
||||
.TH fzf\-tmux 1 "Oct 2026" "fzf 0.74.5" "fzf\-tmux - open fzf in tmux split pane"
|
||||
|
||||
.SH NAME
|
||||
fzf\-tmux - open fzf in tmux split pane
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
..
|
||||
.TH fzf 1 "Nov 2026" "fzf 0.75.0" "fzf - a command-line fuzzy finder"
|
||||
.TH fzf 1 "Oct 2026" "fzf 0.74.5" "fzf - a command-line fuzzy finder"
|
||||
|
||||
.SH NAME
|
||||
fzf - a command-line fuzzy finder
|
||||
|
||||
+1
-5
@@ -137,17 +137,13 @@ func (m *Matcher) Loop() {
|
||||
m.scanMutex.Lock()
|
||||
result = m.scan(request)
|
||||
m.scanMutex.Unlock()
|
||||
// Not on a cached merger, which the terminal may be reading. It
|
||||
// already has the same value.
|
||||
if result.merger != nil {
|
||||
result.merger.final = request.final
|
||||
}
|
||||
}
|
||||
|
||||
if !result.cancelled {
|
||||
if result.cacheable() {
|
||||
m.mergerCache[patternString] = result
|
||||
}
|
||||
result.merger.final = request.final
|
||||
m.eventBox.Set(EvtSearchFin, result)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-20
@@ -843,8 +843,6 @@ type previewRequest struct {
|
||||
list [3][]*Item // current, select, and all matched items
|
||||
env []string
|
||||
query string
|
||||
lastAction actionType
|
||||
prompt string
|
||||
}
|
||||
|
||||
type previewResult struct {
|
||||
@@ -6460,8 +6458,6 @@ func (t *Terminal) Loop() error {
|
||||
var commandTemplate string
|
||||
var env []string
|
||||
var query string
|
||||
var lastAction actionType
|
||||
var prompt string
|
||||
initialOffset := 0
|
||||
t.previewBox.Wait(func(events *util.Events) {
|
||||
for req, value := range *events {
|
||||
@@ -6476,8 +6472,6 @@ func (t *Terminal) Loop() error {
|
||||
items = request.list
|
||||
env = request.env
|
||||
query = request.query
|
||||
lastAction = request.lastAction
|
||||
prompt = request.prompt
|
||||
requested = true
|
||||
}
|
||||
}
|
||||
@@ -6492,18 +6486,7 @@ func (t *Terminal) Loop() error {
|
||||
version++
|
||||
// We don't display preview window if no match
|
||||
if items[0] != nil {
|
||||
// Not t.replacePlaceholder, which reads fields the main loop writes
|
||||
command, tempFiles := replacePlaceholder(replacePlaceholderParams{
|
||||
template: commandTemplate,
|
||||
stripAnsi: t.ansi,
|
||||
delimiter: t.delimiter,
|
||||
printsep: t.printsep,
|
||||
query: query,
|
||||
allItems: items,
|
||||
lastAction: lastAction,
|
||||
prompt: prompt,
|
||||
executor: t.executor,
|
||||
})
|
||||
command, tempFiles := t.replacePlaceholder(commandTemplate, false, query, items)
|
||||
cmd := t.executor.ExecCommand(command, true)
|
||||
cmd.Env = env
|
||||
|
||||
@@ -6636,7 +6619,7 @@ func (t *Terminal) Loop() error {
|
||||
if len(command) > 0 && t.canPreview() {
|
||||
_, list := t.buildPlusList(command, false)
|
||||
t.cancelPreview()
|
||||
t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.evaluateScrollOffset(), list, t.environForPreview(), string(t.input), t.lastAction, t.promptString})
|
||||
t.previewBox.Set(reqPreviewEnqueue, previewRequest{command, t.evaluateScrollOffset(), list, t.environForPreview(), string(t.input)})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7251,7 +7234,7 @@ func (t *Terminal) Loop() error {
|
||||
if valid {
|
||||
t.cancelPreview()
|
||||
t.previewBox.Set(reqPreviewEnqueue,
|
||||
previewRequest{t.previewOpts.command, t.evaluateScrollOffset(), list, t.environForPreview(), string(t.input), t.lastAction, t.promptString})
|
||||
previewRequest{t.previewOpts.command, t.evaluateScrollOffset(), list, t.environForPreview(), string(t.input)})
|
||||
}
|
||||
} else {
|
||||
// Discard the preview content so that it won't accidentally appear
|
||||
|
||||
@@ -640,15 +640,6 @@ class TestPreview < TestInteractive
|
||||
end
|
||||
end
|
||||
|
||||
def test_preview_action_and_prompt
|
||||
tmux.send_keys %(seq 100 | #{FZF} --preview 'echo [$FZF_ACTION/$FZF_PROMPT/{q}]' --bind 'space:change-prompt(foo> )'), :Enter
|
||||
tmux.until { |lines| assert lines.any_include?('[start/> /]') }
|
||||
tmux.send_keys '1'
|
||||
tmux.until { |lines| assert lines.any_include?('[char/> /1]') }
|
||||
tmux.send_keys :Space, '2'
|
||||
tmux.until { |lines| assert lines.any_include?('[char/foo> /12]') }
|
||||
end
|
||||
|
||||
def test_preview_wrap_sign_between_ansi_fragments
|
||||
tmux.send_keys %(seq 1 | #{FZF} --preview 'echo -e "\\x1b[33m1234567890 \\x1b[mhello"; echo -e "\\x1b[33m1234567890 \\x1b[mhello"' --preview-window 10,wrap-word), :Enter
|
||||
tmux.until do |lines|
|
||||
|
||||
Reference in new issue
Block a user