Commit Graph

43 Commits (master)

Author SHA1 Message Date
Junegunn Choi 4bedd33c59
Refactor the code to remove global variables 2 weeks ago
Junegunn Choi e8405f40fe
Refactor the code so that fzf can be used as a library (#3769) 2 weeks ago
Junegunn Choi c30e486b64
Further performance improvements by removing unnecessary copies 2 months ago
Junegunn Choi 0e999482cb
Fix handling of empty ANSI color sequence
Fix #3320
5 months ago
Junegunn Choi 4490b2d209
Respect ANSI codes to reset properties
Fix #3441
8 months ago
Emil Vanherp 4bef330ce1
Add support for ANSI strike-through (#2932)
Close #2932

Co-authored-by: Emil Vanherp <emil@vanherp.me>
2 years ago
Charlie Vieth 209d5e8e90
ansi: speed up escape sequence parsing (#2927) 2 years ago
Junegunn Choi aa10dccf90
Support colon delimiter in ANSI escape sequences
# Both should work
    printf "\e[38;5;208mOption 1\e[m\nOption 2" | fzf --ansi
    printf "\e[38:5:208mOption 1\e[m\nOption 2" | fzf --ansi

This change makes ANSI parsing slightly slower.

    cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz

    Before:
      BenchmarkNextAnsiEscapeSequence-12            992.22 MB/s
      BenchmarkExtractColor-12                      174.35 MB/s

    After:
      BenchmarkNextAnsiEscapeSequence-12            925.05 MB/s
      BenchmarkExtractColor-12                      163.33 MB/s

Fix #2913
2 years ago
Junegunn Choi f4fd53211a
Reformat comments adhere to gofmt 2 years ago
Junegunn Choi be36de2482
Ignore more ANSI escape sequences
Fix #2420
3 years ago
Charlie Vieth 5a874ae241
Speed up ANSI code processing (#2368)
This commit speeds up the parsing/processing of ANSI escape codes by
roughly 7.5x. The speedup is mostly accomplished by replacing the regex
with dedicated parsing logic (nextAnsiEscapeSequence()) and reducing the
number of allocations in extractColor().

#### Benchmarks
```
name             old time/op    new time/op     delta
ExtractColor-16    4.89µs ± 5%     0.64µs ± 2%   -86.87%  (p=0.000 n=9+9)

name             old speed      new speed       delta
ExtractColor-16  25.6MB/s ± 5%  194.6MB/s ± 2%  +661.43%  (p=0.000 n=9+9)

name             old alloc/op   new alloc/op    delta
ExtractColor-16    1.37kB ± 0%     0.31kB ± 0%   -77.31%  (p=0.000 n=10+10)

name             old allocs/op  new allocs/op   delta
ExtractColor-16      48.0 ± 0%        4.0 ± 0%   -91.67%  (p=0.000 n=10+10)
```
3 years ago
Junegunn Choi 1cfeec0ca3
Fix segmentation fault on \x1b[0K
Fix #2339
3 years ago
Junegunn Choi 3829eab1cf
Support ANSI code for clearing the rest of the line (ESC[0K)
Some programs use it to set the background color for the whole line.

  fzf --preview "printf 'normal \x1b[42mgreen\x1b[0K \x1b[43myellow\x1b[m\nnormal again'"

  fzf --preview 'delta <(echo foo) <(echo bar) < /dev/tty'

Fix #2249
4 years ago
Junegunn Choi dd49e41c42
Ignore xterm OSC control sequences
- OSC Ps ; Pt BEL
- OSC Ps ; Pt ST

Fix #1415
4 years ago
Junegunn Choi 567c8303bf
Update ANSI processor to handle "rmso" and "rmul"
Fix #1877
4 years ago
Junegunn Choi 85c1f8a9e0
Always prepend ANSI reset code before re-assembling tokens 5 years ago
Junegunn Choi 1a6defdbcc
Use simple string concatenation instead of using fmt.Sprintf 5 years ago
Junegunn Choi ef577a6509
Preserve the original color of each token when using --with-nth with --ansi
Close #1500
5 years ago
Junegunn Choi af809c9661
Minor refactorings 7 years ago
Junegunn Choi 931c78a70c
Short-circuit ANSI processing if no ANSI codes are found
Rework of 656963e. Makes --ansi processing around 20% faster on plain
strings without ANSI codes.
7 years ago
Junegunn Choi 8d23646fe6
Revert "Short-circuit ANSI processing if no ANSI codes are found"
This reverts commit 656963e018.
7 years ago
Junegunn Choi 656963e018
Short-circuit ANSI processing if no ANSI codes are found 7 years ago
Junegunn Choi 28810c178f
Optimize ANSI code scanner
This change gives 5x speed improvement
7 years ago
Junegunn Choi bd9c46ee34
Update ANSI processor to strip ^H along with its preceding character 7 years ago
Junegunn Choi de1c6b8727
[tcell] 24-bit color support
TAGS=tcell make install

    printf "\x1b[38;2;100;200;250mTRUECOLOR\x1b[m\n" |
        TERM=xterm-truecolor fzf --ansi
8 years ago
Junegunn Choi 182a6d99fd
[ncurses6] Support italics 8 years ago
Junegunn Choi dc557c0d4c
Update ANSI processor to handle more VT-100 escape sequences
The updated regular expression should include not all but most of the
frequently used ANSI sequences. Close #735.
8 years ago
Junegunn Choi 0c573b3dff
Prepare for termbox/windows build
`TAGS=termbox make` (or `go build -tags termbox`)
8 years ago
Junegunn Choi 06a6ad8bca
Update ANSI processor to ignore ^N and ^O
This reverts commit 02c6ad0e59.
8 years ago
Junegunn Choi 1fc5659842
Add support for more ANSI color attributes (#674)
Dim, underline, blink, reverse
8 years ago
Junegunn Choi bef405bfa5
Ignore VT100-related escape codes 8 years ago
Junegunn Choi 0612074abe
Support high intensity colors
Close #671
8 years ago
Junegunn Choi 37dc273148
Micro-optimizations
- Make structs smaller
- Introduce Result struct and use it to represent matched items instead of
  reusing Item struct for that purpose
- Avoid unnecessary memory allocation
- Avoid growing slice from the initial capacity
- Code cleanup
8 years ago
Junegunn Choi a9a29dff4f
Fix duplicate rendering of the last line in preview window 8 years ago
Junegunn Choi 24e1fabf2e
Do not process ANSI codes in --preview output at once
Close #598
8 years ago
Junegunn Choi 0ea66329b8 Performance tuning - eager rune array conversion
> wc -l /tmp/list2
     2594098 /tmp/list2

    > time cat /tmp/list2 | fzf-0.10.1-darwin_amd64 -fqwerty > /dev/null

    real    0m5.418s
    user    0m10.990s
    sys     0m1.302s

    > time cat /tmp/list2 | fzf-head -fqwerty > /dev/null

    real    0m4.862s
    user    0m6.619s
    sys     0m0.982s
9 years ago
Junegunn Choi 5e3cb3a4ea Fix ANSI processor to handle multi-line regions 9 years ago
Junegunn Choi b68e59a24b Fix ANSI offset calculation 9 years ago
Junegunn Choi ce7d4a1c53 Fix #162 - Ignore \e[K 9 years ago
Junegunn Choi 9d138173be Fix #155 - Empty ANSI color code to reset color state 9 years ago
Junegunn Choi 618706a5f5 Fix ANSI output in the presence of multibyte characters
tree -C | fzf --ansi --tac
9 years ago
Junegunn Choi b431e227da Code cleanup 9 years ago
Junegunn Choi e70a2a5817 Add support for ANSI color codes 9 years ago