@ -2534,24 +2534,26 @@ tcl::namespace::eval textblock {
set parts [punk::ansi::ta::split_codes_single $c]
#we have detected ansi - so there will always be at least 3 parts beginning and ending with pt pt,ansi,pt,ansi...,pt
set codes [list]
set ptlens [list]
foreach {pt cd} $parts {
if {$cd ne ""} {
lappend codes $cd
}
lappend codes $cd
lappend ptlens [string length $pt]
}
#set takebg [lindex $parts end-1]
#set cell_bg [punk::ansi::codetype::sgr_merge_singles [list $takebg] -filter_fg 1]
set cell_bg [punk::ansi::codetype::sgr_merge_singles $codes -filter_fg 1 -filter_reset 1]
#puts --->[ansistring VIEW $codes]
if {[punk::ansi::codetype::is_sgr_reset [lindex $codes end]]} {
if {[punk::ansi::codetype::is_sgr_reset [lindex $codes end-1 ]]} {
if {[punk::ansi::codetype::is_sgr_reset [lindex $codes end-1 ]]} {
if {[lindex $ptlens end] == 0 && [lindex $ptlens end-1] == 0 && [ punk::ansi::codetype::is_sgr_reset [lindex $codes end-2 ]]} {
#special case double reset at end of content
set cell_ansi_tail [punk::ansi::codetype::sgr_merge_singles $codes] ;#no filters
#TODO - write test!
set cell_ansi_tail [punk::ansi::codetype::sgr_merge_singles [lrange $codes 0 end-3]] ;#no filters
set ansibase ""
set row_ansibase ""
if {$ftblock} {
set ansiborder_final [punk::ansi::codetype::sgr_merge [list $ansiborder_body_col_row] -filter_bg 1]
set ansiborder_final [punk::ansi::codetype::sgr_merge [list $ansiborder_final $cell_bg]]
}
set cell_ansibase $cell_ansi_tail
} else {
@ -2565,6 +2567,28 @@ tcl::namespace::eval textblock {
}
set cell_ansibase $cell_bg
}
#v1
#if {[punk::ansi::codetype::is_sgr_reset [lindex $codes end]]} {
# if {[punk::ansi::codetype::is_sgr_reset [lindex $codes end-1]]} {
# #special case double reset at end of content
# set cell_ansi_tail [punk::ansi::codetype::sgr_merge_singles $codes] ;#no filters
# set ansibase ""
# set row_ansibase ""
# if {$ftblock} {
# set ansiborder_final [punk::ansi::codetype::sgr_merge [list $ansiborder_body_col_row] -filter_bg 1]
# }
# set cell_ansibase $cell_ansi_tail
# } else {
# #single trailing reset in content
# set cell_ansibase "" ;#cell doesn't contribute to frame's ansibase
# }
#} else {
# if {$ftblock} {
# #no resets - use cell's bg to extend to the border - only for block frames
# set ansiborder_final $ansiborder_body_col_row$cell_bg
# }
# set cell_ansibase $cell_bg
#}
}
set ansibase_final $ansibase$row_ansibase$cell_ansibase
@ -8629,8 +8653,11 @@ tcl::namespace::eval textblock {
if {$opt_ansibase ne ""} {
if {[punk::ansi::ta::detect $cache_inner]} {
#set cache_inner [punk::ansi::ansiwrap -rawansi $opt_ansibase $cache_inner]
set cache_inner [punk::ansi::ansiwrap_raw $opt_ansibase "" "" $cache_inner]
#set cache_inner [punk::ansi::ansiwrap_raw $opt_ansibase "" "" $cache_inner]
#jjj ??? review
set cache_inner [punk::ansi::ansiwrap_raw $opt_ansibase "\x1b\[m" "" $cache_inner]
} else {
#!!!
set cache_inner "$opt_ansibase$cache_inner\x1b\[0m"
}
}
@ -8723,7 +8750,10 @@ tcl::namespace::eval textblock {
if {$opt_ansibase ne ""} {
if {$contents_has_ansi} {
#set contents [punk::ansi::ansiwrap -rawansi $opt_ansibase $contents]
set contents [punk::ansi::ansiwrap_raw $opt_ansibase "" "" $contents]
#set contents [punk::ansi::ansiwrap_raw $opt_ansibase "" "" $contents]
#jjj
set contents [punk::ansi::ansiwrap_raw $opt_ansibase "\x1b\[m" "" $contents]
#set contents "$opt_ansibase$contents\x1b\[0m"
} else {
set contents "$opt_ansibase$contents\x1b\[0m"
set contents_has_ansi 1