diff options
-rw-r--r-- | src/helper/startup.tcl | 62 |
1 files changed, 34 insertions, 28 deletions
diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl index eefb690e..30dc184f 100644 --- a/src/helper/startup.tcl +++ b/src/helper/startup.tcl @@ -25,6 +25,39 @@ proc exit {} { ocd_throw exit } +proc cmd_help {cmdname h indent} { + set indent [expr $indent * 2] + + set fmt_str [format "%%%ds%%-%ds %%s" $indent [expr 25 - $indent]] + set w [expr 50 - $indent] + set n 0 + + while 1 { + if {$n > [string length $h]} {break} + + set next_a [expr $n + $w] + if {[string length $h] > $n + $w} \ + { + set xxxx [string range $h $n [expr $n + $w]] + for {set lastpos [expr [string length $xxxx] - 1]} \ + {$lastpos >= 0 && [string compare \ + [string range $xxxx $lastpos $lastpos] " "] != 0} \ + {set lastpos [expr $lastpos - 1]} \ + { + } + #set next_a -1 + if {$lastpos != -1} { + set next_a [expr $lastpos + $n + 1] + } + } + + puts [format $fmt_str "" $cmdname \ + [string range $h $n [expr $next_a - 1]] ] + set cmdname "" + set n [expr $next_a] + } +} + #Print help text for a command. Word wrap #help text that is too wide inside column. proc help {args} { @@ -35,34 +68,7 @@ proc help {args} { [string first $cmd $a] != -1 || \ [string first $cmd [lindex $a 1]] != -1} \ { - set w 50 - set cmdname [lindex $a 0] - set h [lindex $a 1] - set n 0 - while 1 { - if {$n > [string length $h]} {break} - - set next_a [expr $n + $w] - if {[string length $h] > $n + $w} \ - { - set xxxx [string range $h $n [expr $n + $w]] - for {set lastpos [expr [string length $xxxx] - 1]} \ - {$lastpos >= 0 && [string compare \ - [string range $xxxx $lastpos $lastpos] " "] != 0} \ - {set lastpos [expr $lastpos - 1]} \ - { - } - #set next_a -1 - if {$lastpos != -1} { - set next_a [expr $lastpos + $n + 1] - } - } - - puts [format "%-25s %s" $cmdname \ - [string range $h $n [expr $next_a-1]] ] - set cmdname "" - set n [expr $next_a] - } + cmd_help [lindex $a 0] [lindex $a 1] 0 } } } |