From: Sebastian Gniazdowski <sgniazdowski@gmail.com>
To: Oliver Kiddle <okiddle@yahoo.co.uk>
Cc: Zsh hackers list <zsh-workers@zsh.org>
Subject: X04 zle highlight tests, near-color bug
Date: Sun, 11 Nov 2018 06:38:40 +0100 [thread overview]
Message-ID: <CAKc7PVAHAg-PGRQ6iMcyCGHgNba-G857g2C+KypnS=zFEy4+AQ@mail.gmail.com> (raw)
In-Reply-To: <20626-1541726901.821000@xGvJ.shtD.SkCN>
[-- Attachment #1: Type: text/plain, Size: 1982 bytes --]
On Fri, 9 Nov 2018 at 02:28, Oliver Kiddle <okiddle@yahoo.co.uk> wrote:
> difference of termcap definition. The only hope would be to strip the output
> down to just the section actually being tested (which comptest manages),
> also using something like:
> zle_highlight=( fg_start_code:FGSTART fg_end_code:FGEND fg_default_code:FGDEF )
> and perhaps zle -T somehow to map escape sequences to something readable
> somehow contriving to set TERM to something that claims 256 colour support.
> And, only relying on the portable subset of sed syntax.
> It's not without reason that I was too lazy to attempt this in the first
> place.
I'm sending the same uplifted, bugs and not-nice things fixed (zpty
-n, Zle-echoing-back, etc. ) test file X04zlehighlight as in my answer
where I've elaborated on zle -T and enumerated codes being removed
like "^[[?2004h" (X-seq: 43811), but with:
zpty -w zsh 'zle_highlight=( fg_start_code:"CDE|"
fg_end_code:"|" bg_start_code:"BCDE|" bg_end_code:"|" )'
I adapted the visible-codes by readability on the terminal, example
new-code and it's previous form:
-0m38;2;4;8;16mtrue39m
+0mCDE|8;2;4;8;16|trueCDE|9|
(I've accepted this and other changes into the test, they're correct
with the zle_highlight contents).
And a bug appeared – every test works, instead of the two near-color
tests. The reported differences:
-0mCDE|8;5;232|trueCDE|9|
+0m38;5;232mtrueCDE|9|
(...)
Was testing: basic region_highlight with near-color (hex-triplets at input)
-0mCDE|8;5;40|tCDE|8;5;160|rCDE|9|CDE|8;5;40|ueCDE|9|
+0m38;5;40mt38;5;160mrCDE|9|38;5;40mueCDE|9|
Was testing: overlapping region_highlight with near-color
(hex-triplets at input)
The minus-lines are hand-crafted by me, holding the expected contents
after zle_highlight was customized.
--
Sebastian Gniazdowski
News: https://twitter.com/ZdharmaI
IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin
Blog: http://zdharma.org
[-- Attachment #2: X04zlehighlight.ztst.txt --]
[-- Type: text/plain, Size: 5719 bytes --]
# Tests for region_highlight, true-color support, near-color support
# Version 0.5
%prep
if [[ $OSTYPE == cygwin ]]; then
ZTST_unimplemented='the zsh/zpty module does not work on Cygwin'
elif zmodload zsh/zpty 2> /dev/null; then
export TERM=xterm-256color
zpty_start() {
export PS1= PS2=
zpty -d
zpty zsh "${(q)ZTST_testdir}/../Src/zsh -fiV +Z"
zpty -w zsh 'zle_highlight=( fg_start_code:"CDE|" fg_end_code:"|" bg_start_code:"BCDE|" bg_end_code:"|" )'
}
zpty_input() {
zpty ${${(M)2:#nonl}:+-n} -w zsh "$1"
}
zpty_enable_zle() {
zpty -w zsh "tcfunc() { REPLY=""; }"
zpty -w zsh "setopt zle; zle -T tc tcfunc" # This line will not be echoed back, behaving like ! -o zle
}
zpty_line() {
setopt localoptions extendedglob noshwordsplit
local REPLY cm=$'\r'
integer i
for (( i = 0; i < ${1:-1}; ++i )); do
zpty -r zsh REPLY
# P is for "preserve", induces keeping some
# color codes to test region_highlight, etc.
# The color codes are then made regular text
[[ "$2" = "p" ]] && {
print -rl -- "$REPLY" >> /tmp/output # THE LINE
REPLY=${REPLY//$'\x1b'\[([2][0-9;]m|[JK]|\?[0-9]##(h|l))/}
REPLY=${REPLY//(#b)$'\x1b'\[([0-9;]##m)/${match[1]}}
} || {
REPLY=${REPLY//$'\x1b'\[([0-9;]##m|[JK]|\?[0-9]##(h|l))/}
}
# Fix e^Mexit - match ((?)\r(?)), if \2 == \3, then replace with \2
# otherwise replace with \1 stripped out of leading/trailing [[:space:]]
REPLY=${REPLY//(#b)((?(#c0,1))$cm(?(#c0,1)))/${${${(M)match[2]:#${match[3]}}:+${match[2]}}:-${${match[1]##[[:space:]]##}%%[[:space:]]##}}}
[[ -n "$REPLY" ]] && print -r -- ${${REPLY%%[[:space:]]##}##[[:space:]]##}
done
}
zpty_stop() {
setopt localoptions extendedglob
local REPLY cm=$'\r'
# Zle is active, can use Ctrl-D to exit
zpty -n -w zsh $'\C-d'
# zpty gives no output when piped without these braces (?)
# The while loop with // substitution is to convert `e^Mexit'
# into `exit' (see zpty_line). The sed commands remove escapes
{ zpty -r zsh } | sed $'/[^[:space:]]/!d; s/\r$//; s/\x1b\\[[0-9;]*m//g; s/\x1b\\[[JK]//g; s/\x1b\\[?[0-9]*[hl]//g' | while read REPLY; do REPLY=${REPLY//(#b)((?(#c0,1))$cm(?(#c0,1)))/${${${(M)match[2]:#${match[3]}}:+${match[2]}}:-${${match[1]##[[:space:]]##}%%[[:space:]]##}}}; print -rn -- "$REPLY"; done
zpty -d
:
}
else
ZTST_unimplemented='the zsh/zpty module is not available'
fi
%test
zpty_start
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=green" ); }'
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:basic region_highlight with 8 colors
>0mCDE|2|trueCDE|9|
zpty_start
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=#040810" ); }'
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:basic region_highlight with true-color (hex-triplets)
>0mCDE|8;2;4;8;16|trueCDE|9|
zpty_start
zpty_input 'zmodload zsh/nearcolor'
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=#040810" ); }'
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:basic region_highlight with near-color (hex-triplets at input)
>0mCDE|8;5;232|trueCDE|9|
zpty_start
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=green" ); rh2; }'
zpty_input 'rh2() { region_highlight+=( "1 2 fg=red" ); }' # `r' in red; the above line would be too long
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:overlapping region_highlight with 8 colors
>0mCDE|2|tCDE|1|rCDE|9|CDE|2|ueCDE|9|
zpty_start
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=#00cc00" ); rh2; }'
zpty_input 'rh2() { region_highlight+=( "1 2 fg=#cc0000" ); }' # `r' in red; the above line would be too long
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:overlapping region_highlight with true-color
>0mCDE|8;2;0;204;0|tCDE|8;2;204;0;0|rCDE|9|CDE|8;2;0;204;0|ueCDE|9|
zpty_start
zpty_input 'zmodload zsh/nearcolor'
zpty_input 'rh_widget() { BUFFER="true"; region_highlight+=( "0 4 fg=#00cc00" ); rh2; }'
zpty_input 'rh2() { region_highlight+=( "1 2 fg=#cc0000" ); }' # `r' in red; the above line would be too long
zpty_input 'zle -N rh_widget'
zpty_input 'bindkey "\C-a" rh_widget'
zpty_enable_zle
zpty_input $'\C-a' # emits newline, which executes BUFFER="true" command
zpty_line 1 p # the line of interest, preserving escapes ("p")
zpty_stop
0:overlapping region_highlight with near-color (hex-triplets at input)
>0mCDE|8;5;40|tCDE|8;5;160|rCDE|9|CDE|8;5;40|ueCDE|9|
%clean
zmodload -ui zsh/zpty
# vim:ft=zsh
next prev parent reply other threads:[~2018-11-11 5:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-07 13:19 [BUG?] If true-color is used, overlapping colors do not work Sebastian Gniazdowski
2018-11-07 14:40 ` Sebastian Gniazdowski
2018-11-07 19:19 ` Sebastian Gniazdowski
2018-11-08 3:48 ` Oliver Kiddle
2018-11-08 9:25 ` Sebastian Gniazdowski
2018-11-08 3:03 ` Oliver Kiddle
2018-11-08 9:19 ` Sebastian Gniazdowski
2018-11-09 1:28 ` Oliver Kiddle
2018-11-09 15:39 ` Sebastian Gniazdowski
2018-11-11 0:43 ` Sebastian Gniazdowski
2018-11-11 5:11 ` Sebastian Gniazdowski
2018-11-24 17:32 ` highlight test cases (was Re: [BUG?] If true-color is used, overlapping colors do not work) Oliver Kiddle
2018-11-30 0:34 ` Sebastian Gniazdowski
2018-12-07 1:55 ` [BUG] General 256 colors bug – zle_highlight / fg_start_code, etc. is not respected (was: highlight test cases) Sebastian Gniazdowski
2018-12-07 20:26 ` Sebastian Gniazdowski
2018-12-09 19:13 ` Daniel Shahaf
2018-12-11 8:06 ` Sebastian Gniazdowski
2018-12-10 2:54 ` highlight test cases (was Re: [BUG?] If true-color is used, overlapping colors do not work) Oliver Kiddle
2018-12-10 23:51 ` Sebastian Gniazdowski
2018-12-10 23:54 ` Sebastian Gniazdowski
2018-11-11 5:38 ` Sebastian Gniazdowski [this message]
2018-11-18 15:34 ` X04 zle highlight tests, near-color bug Sebastian Gniazdowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAKc7PVAHAg-PGRQ6iMcyCGHgNba-G857g2C+KypnS=zFEy4+AQ@mail.gmail.com' \
--to=sgniazdowski@gmail.com \
--cc=okiddle@yahoo.co.uk \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).