X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fstartup.tcl;h=1b5092e0a7df86b8239b54438b4a9088eacc8bb6;hb=94966bf2e3933e308f3093a3fbf403ab83331ac5;hp=acf93be4cf4156731215aaacb1bec28ee4713f81;hpb=0f2dfabd3b6123eb0cf9620e557e95ad76eaef91;p=openocd.git diff --git a/src/startup.tcl b/src/startup.tcl index acf93be4cf..1b5092e0a7 100644 --- a/src/startup.tcl +++ b/src/startup.tcl @@ -5,6 +5,20 @@ # Embedded into OpenOCD executable # + +# Help text list. A list of command + help text pairs. +# +# Commands can be more than one word and they are stored +# as "flash banks" "help text x x x" + +global ocd_helptext +set ocd_helptext {} + +proc add_help_text {cmd cmd_help} { + global ocd_helptext + lappend ocd_helptext [list $cmd $cmd_help] +} + # Production command # FIX!!! need to figure out how to feed back relevant output # from e.g. "flash banks" command... @@ -48,6 +62,43 @@ proc flash args { openocd_throw "flash $args" } +#Print help text for a command. Word wrap +#help text that is too wide inside column. +proc tcl_help {args} { + global ocd_helptext + set cmd $args + foreach a [lsort $ocd_helptext] { + if {[string length $cmd]==0||[string first $cmd $a]!=-1||[string first $cmd [lindex $a 1]]!=-1} { + set w 40 + 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] + } + } + } +} + +add_help_text tcl_help "Tcl implementation of help command" + + # If a fn is unknown to Tcl, we try to execute it as an OpenOCD command proc unknown {args} { if {[string length $args]>0} {