lappend cmdinfo [list help "?${I}topic${NI}?" "This help.\nTo see available subitems type:\nhelp topics\n\nFor an unrecognised ${I}topic${NI}\nhelp will look for basic\ninfo for it as a command.\n"]
lappend cmdinfo [list help "?${I}topic${NI}?" "This help.\nTo see available subitems type:\nhelp topics\n\nFor an unrecognised ${I}topic${NI}\nhelp will look for basic\ninfo for it as a command.\n"]
set t [textblock::class::table new -minwidth 51 -show_seps 0]
set t [textblock::class::table new -minwidth 51 -show_seps 0]
$t configure -frametype $frametype
foreach row $cmdinfo {
foreach row $cmdinfo {
$t add_row $row
$t add_row $row
}
}
@ -8468,6 +8483,7 @@ namespace eval punk {
lappend cmdinfo [list newdir "${I}subdir${NI}..." "make new dir or dirs and show status"]
lappend cmdinfo [list newdir "${I}subdir${NI}..." "make new dir or dirs and show status"]
@ -6044,6 +6044,7 @@ be as if this was off - ie lone CR.
#[para]These functions will emit the code - but read it in from stdin so that it doesn't display, and then return the row and column as a colon-delimited string or list respectively.
#[para]These functions will emit the code - but read it in from stdin so that it doesn't display, and then return the row and column as a colon-delimited string or list respectively.
#[para]The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
#[para]The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
return \033\[6n
return \033\[6n
#same as 'tput u7' which just emits CSI 6n to stdout
}
}
proc cursor_pos_extended {} {
proc cursor_pos_extended {} {
@ -6053,6 +6054,7 @@ be as if this was off - ie lone CR.
}
}
#DECFRA - Fill rectangular area
#DECFRA - Fill rectangular area
#REVIEW - vt100 accepts decimal values 132-126 and 160-255 ("in the current GL or GR in-use table")
#REVIEW - vt100 accepts decimal values 132-126 and 160-255 ("in the current GL or GR in-use table")
#some modern terminals accept and display characters outside this range - but this needs investigation.
#some modern terminals accept and display characters outside this range - but this needs investigation.
#convert time from windows (100ns units since jan 1, 1601) to Tcl time (seconds since Jan 1, 1970)
#convert time from windows (100ns units since jan 1, 1601) to Tcl time (seconds since Jan 1, 1970)
#We lose some precision by not passing the boolean to the large_system_time_to_secs_since_1970 function which returns fractional seconds
#We lose some precision by not passing the boolean to the large_system_time_to_secs_since_1970 function which returns fractional seconds
#but we need to maintain compatibility with other platforms and other tcl functions so if we want to return more precise times we will need another flag and/or result dict
#but we need to maintain compatibility with other platforms and other tcl functions so if we want to return more precise times we will need another flag and/or result dict
dict set alltimes $fullname [dict create {*}{
dict set alltimes $fullname [dict create {*}{
} c [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo ctime]] {*}{
} c [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo ctime]] {*}{
} a [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo atime]] {*}{
} a [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo atime]] {*}{
} m [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo mtime]] {*}{
} m [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo mtime]] {*}{
#no parse tree - This is likely for an empty argument with expansion e.g {*}{ }
#no parse tree - This is likely for an empty argument with expansion e.g {*}{ }
#This construct occurs when using {*} in place of line continuation for long lists or dicts, e.g
#This construct occurs when using {*} in place of line continuation for long lists or dicts, e.g
#dict create {*}{
#dict create {*}{
# } key1 $dynamic {*}{
# } key1 $dynamic {*}{
# key2 value2
# key2 value2
#}
#}
#review - the 'empty' argument will still have an entry in cmdlineranges - as although 'empty' in terms of how it expands it may be whitespace across multiple lines.
#review - the 'empty' argument will still have an entry in cmdlineranges - as although 'empty' in terms of how it expands it may be whitespace across multiple lines.
lappend cmdinfo [list help "?${I}topic${NI}?" "This help.\nTo see available subitems type:\nhelp topics\n\nFor an unrecognised ${I}topic${NI}\nhelp will look for basic\ninfo for it as a command.\n"]
lappend cmdinfo [list help "?${I}topic${NI}?" "This help.\nTo see available subitems type:\nhelp topics\n\nFor an unrecognised ${I}topic${NI}\nhelp will look for basic\ninfo for it as a command.\n"]
set t [textblock::class::table new -minwidth 51 -show_seps 0]
set t [textblock::class::table new -minwidth 51 -show_seps 0]
$t configure -frametype $frametype
foreach row $cmdinfo {
foreach row $cmdinfo {
$t add_row $row
$t add_row $row
}
}
@ -8468,6 +8486,7 @@ namespace eval punk {
lappend cmdinfo [list newdir "${I}subdir${NI}..." "make new dir or dirs and show status"]
lappend cmdinfo [list newdir "${I}subdir${NI}..." "make new dir or dirs and show status"]
@ -6044,6 +6044,7 @@ be as if this was off - ie lone CR.
#[para]These functions will emit the code - but read it in from stdin so that it doesn't display, and then return the row and column as a colon-delimited string or list respectively.
#[para]These functions will emit the code - but read it in from stdin so that it doesn't display, and then return the row and column as a colon-delimited string or list respectively.
#[para]The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
#[para]The punk::ansi::cursor_pos function is used by punk::console::get_cursor_pos and punk::console::get_cursor_pos_list
return \033\[6n
return \033\[6n
#same as 'tput u7' which just emits CSI 6n to stdout
}
}
proc cursor_pos_extended {} {
proc cursor_pos_extended {} {
@ -6053,6 +6054,7 @@ be as if this was off - ie lone CR.
}
}
#DECFRA - Fill rectangular area
#DECFRA - Fill rectangular area
#REVIEW - vt100 accepts decimal values 132-126 and 160-255 ("in the current GL or GR in-use table")
#REVIEW - vt100 accepts decimal values 132-126 and 160-255 ("in the current GL or GR in-use table")
#some modern terminals accept and display characters outside this range - but this needs investigation.
#some modern terminals accept and display characters outside this range - but this needs investigation.
#convert time from windows (100ns units since jan 1, 1601) to Tcl time (seconds since Jan 1, 1970)
#convert time from windows (100ns units since jan 1, 1601) to Tcl time (seconds since Jan 1, 1970)
#We lose some precision by not passing the boolean to the large_system_time_to_secs_since_1970 function which returns fractional seconds
#We lose some precision by not passing the boolean to the large_system_time_to_secs_since_1970 function which returns fractional seconds
#but we need to maintain compatibility with other platforms and other tcl functions so if we want to return more precise times we will need another flag and/or result dict
#but we need to maintain compatibility with other platforms and other tcl functions so if we want to return more precise times we will need another flag and/or result dict
dict set alltimes $fullname [dict create {*}{
dict set alltimes $fullname [dict create {*}{
} c [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo ctime]] {*}{
} c [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo ctime]] {*}{
} a [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo atime]] {*}{
} a [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo atime]] {*}{
} m [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo mtime]] {*}{
} m [twapi::large_system_time_to_secs_since_1970 [dict get $iteminfo mtime]] {*}{
#no parse tree - This is likely for an empty argument with expansion e.g {*}{ }
#no parse tree - This is likely for an empty argument with expansion e.g {*}{ }
#This construct occurs when using {*} in place of line continuation for long lists or dicts, e.g
#This construct occurs when using {*} in place of line continuation for long lists or dicts, e.g
#dict create {*}{
#dict create {*}{
# } key1 $dynamic {*}{
# } key1 $dynamic {*}{
# key2 value2
# key2 value2
#}
#}
#review - the 'empty' argument will still have an entry in cmdlineranges - as although 'empty' in terms of how it expands it may be whitespace across multiple lines.
#review - the 'empty' argument will still have an entry in cmdlineranges - as although 'empty' in terms of how it expands it may be whitespace across multiple lines.