summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ansi.go3
-rwxr-xr-xtest/test_go.rb12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/ansi.go b/src/ansi.go
index b5b3a203..b15bd91c 100644
--- a/src/ansi.go
+++ b/src/ansi.go
@@ -90,10 +90,11 @@ func init() {
- http://ascii-table.com/ansi-escape-sequences.php
- http://ascii-table.com/ansi-escape-sequences-vt-100.php
- http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html
+ - https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
*/
// The following regular expression will include not all but most of the
// frequently used ANSI sequences
- ansiRegex = regexp.MustCompile("(?:\x1b[\\[()][0-9;]*[a-zA-Z@]|\x1b.|[\x0e\x0f]|.\x08)")
+ ansiRegex = regexp.MustCompile("(?:\x1b[\\[()][0-9;]*[a-zA-Z@]|\x1b][0-9];[[:print:]]+(?:\x1b\\\\|\x07)|\x1b.|[\x0e\x0f]|.\x08)")
}
func findAnsiStart(str string) int {
diff --git a/test/test_go.rb b/test/test_go.rb
index 7c448fe1..fac25dcc 100755
--- a/test/test_go.rb
+++ b/test/test_go.rb
@@ -1716,6 +1716,18 @@ class TestGoFZF < TestBase
tmux.prepare
end
+ def test_strip_xterm_osc_sequence
+ %W[\x07 \x1b\\].each do |esc|
+ writelines tempname, [%(printf $1"\e]4;3;rgb:aa/bb/cc#{esc} "$2)]
+ File.chmod(0o755, tempname)
+ tmux.prepare
+ tmux.send_keys(
+ %(echo foo bar | #{FZF} --preview '#{tempname} {2} {1}'), :Enter
+ )
+ tmux.until { |lines| lines.any_include?('bar foo') }
+ tmux.send_keys :Enter
+ end
+ end
end
module TestShell