@@ -1,8 +1,8 @@ # -*- tclsh -*- -# FILE: "/disk01/home/joze/src/tclreadline/tclreadlineCompleter.tcl" -# LAST MODIFICATION: "Wed Sep 29 18:00:58 1999 (joze)" +# FILE: "/home/joze/src/tclreadline/tclreadlineCompleter.tcl" +# LAST MODIFICATION: "Wed Sep 29 21:25:15 1999 (joze)" # (C) 1998, 1999 by Johannes Zellner, # $Id$ # --- # # tclreadline -- gnu readline for tcl @@ -248,11 +248,11 @@ # the bell if not. If inhibit is non-zero, the result # will be formatted such that readline will not insert # a space after a complete (single) match. # proc CompleteFromList {text lst {allow ""} {inhibit 0}} { - set result [TryFromList ${text} ${lst} ${allow} $inhibit] + set result [TryFromList ${text} ${lst} ${allow} ${inhibit}] if {![llength ${result}]} { Alert # return [string trim [list ${text}] ${lst}"] if {[llength ${lst}]} { return [string trim "${text} ${lst}"] @@ -3589,20 +3589,38 @@ [uplevel [info level] info vars "${mod}*"]] } 3 { switch -- ${cmd} { variable - - vdelete { return [CompleteFromList ${text} {r w u}] } + variable { return [CompleteFromList ${text} {r w u}] } + vdelete { + set var [PreviousWord ${start} ${line}] + set modes "" + foreach info [uplevel [info level] trace vinfo ${var}] { + lappend modes [lindex ${info} 0] + } + return [CompleteFromList ${text} ${modes}] + } } } 4 { switch -- ${cmd} { - variable - - vdelete { + variable { return [CompleteFromList ${text} \ [CommandCompletion ${text}]] } + vdelete { + set var [Lindex ${line} 2] + set mode [PreviousWord ${start} ${line}] + set scripts "" + foreach info [uplevel [info level] trace vinfo ${var}] { + if {${mode} == [lindex ${info} 0]} { + lappend scripts [list [lindex ${info} 1]] + } + } + return [DisplayHints ${scripts}] + } } } } return "" }