Overview
Comment: | .login .tclshrc tcl_ft.vim vim_ft.vim tclreadlineCompleter.tcl |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d67d766fd450021673f6a05602c7bb85 |
User & Date: | johannes@zellner.org on 1999-09-17 16:42:10 |
Other Links: | manifest | tags |
Context
1999-09-18
| ||
02:31 | src/tclreadline/tclreadline.c src/tclreadline/tclreadlineCompleter.tcl check-in: 7e22ff2cc0 user: johannes@zellner.org tags: trunk | |
1999-09-17
| ||
16:42 | .login .tclshrc tcl_ft.vim vim_ft.vim tclreadlineCompleter.tcl check-in: d67d766fd4 user: johannes@zellner.org tags: trunk | |
00:44 | Modified Files: src/tclcrystal/.tclcrystalrc src/tclcrystal/Makefile.in src/tclcrystal/configure.in src/tclcrystal/crystal.cc src/tclreadline/README src/tclreadline/tclreadlineCompleter.tcl src/tclreadline/tclreadlineSetup.tcl.in check-in: 1f6689ebb8 user: johannes@zellner.org tags: trunk | |
Changes
Modified tclreadlineCompleter.tcl from [cb20dd6778] to [1c598840ba].
1 | # -*- tclsh -*- | | | | 1 2 3 4 5 6 7 8 9 10 | # -*- tclsh -*- # FILE: "/disk01/home/joze/src/tclreadline/tclreadlineCompleter.tcl" # LAST MODIFICATION: "Fri Sep 17 18:41:10 1999 (joze)" # (C) 1998, 1999 by Johannes Zellner, <johannes@zellner.org> # $Id$ # --- # # tclreadline -- gnu readline for tcl # Copyright (C) 1999 Johannes Zellner # |
︙ | ︙ | |||
31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # TODO: # # - tcltest is missing # - better completion for CompleteListFromList: # RemoveUsedOptions ... # - namespace eval fred {... <-- continue with a # substitution in fred. # # namespace eval tclreadline { | > > | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # TODO: # # - tcltest is missing # - better completion for CompleteListFromList: # RemoveUsedOptions ... # - namespace eval fred {... <-- continue with a # substitution in fred. # - set tclreadline::pro<tab> geht *nicht* # set ::tclreadline::pro<tab> geht # # namespace eval tclreadline { |
︙ | ︙ | |||
312 313 314 315 316 317 318 | # @date Sep-14-1999 # proc TrySubCmds {cmd} { set trystring ____ set result "" if [catch {set result [eval ${cmd} ${trystring}]} msg] { set tcmd [string trim ${cmd}] | > | > > | | 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 | # @date Sep-14-1999 # proc TrySubCmds {cmd} { set trystring ____ set result "" if [catch {set result [eval ${cmd} ${trystring}]} msg] { set tcmd [string trim ${cmd}] # puts stderr msg=$msg if {[regexp {(bad|ambiguous) .*"____": *must *be( .*$)} ${msg} \ all junk raw] } {; # XXX see tclIndexObj.c XXX regsub -all -- , ${raw} { } raw set len [llength ${raw}] set len_2 [expr ${len} - 2] for {set i 0} {${i} < ${len}} {incr i} { set word [lindex ${raw} ${i}] if {"or" != ${word} && ${i} != ${len_2}} { lappend result ${word} } } } elseif {[regexp "wrong # args: should be \"${tcmd}\(.*\)\"" \ ${msg} all hint] } {; # XXX see tclIndexObj.c XXX set result [string trim $hint] } else { # check, if it's a blt error msg ... # set msglst [split ${msg} \n] foreach line ${msglst} { if {[regexp "${tcmd}\[ \t\]\+\(\[^ \t\]*\)\[^:\]*$" \ |
︙ | ︙ | |||
411 412 413 414 415 416 417 | proc SplitLine {start line} { set depth 0 # puts stderr SplitLine for {set i $start} {$i >= 0} {incr i -1} { set c [string index $line $i] if {{;} == $c} { incr i; # discard command break character | | | | 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 | proc SplitLine {start line} { set depth 0 # puts stderr SplitLine for {set i $start} {$i >= 0} {incr i -1} { set c [string index $line $i] if {{;} == $c} { incr i; # discard command break character return [list [expr $start - $i] [String range $line $i end]] } elseif {{]} == $c} { incr depth } elseif {{[} == $c} { incr depth -1 if {$depth < 0} { incr i; # discard command break character return [list [expr $start - $i] [String range $line $i end]] } } } return "" } proc IsWhite {char} { |
︙ | ︙ | |||
608 609 610 611 612 613 614 | set last [expr [string length $line] - 1] for {set i $last} {$i >= 0} {incr i -1} { if {![catch {llength [string range $line 0 $i]}]} { break } } incr i | | | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | set last [expr [string length $line] - 1] for {set i $last} {$i >= 0} {incr i -1} { if {![catch {llength [string range $line 0 $i]}]} { break } } incr i return [String range $line $i end] } #** # save `lindex'. works also for non-complete lines # with opening parentheses or quotes. # usage as `lindex'. # Eventually returns the Rest of an incomplete line, |
︙ | ︙ | |||
641 642 643 644 645 646 647 648 649 650 651 652 | if {[catch [list set len [llength $line]]]} { set line [ProperList $line] if {[catch [list set len [llength $line]]]} { return {} } } # puts stderr \nline=$line return $len } proc StripPrefix {text} { # puts "(StripPrefix) text=|$text|" set null [string index $text 0] if {"\"" == $null || "\{" == $null} { | > > > > > > > > > > > > > > > > > > > | | 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 | if {[catch [list set len [llength $line]]]} { set line [ProperList $line] if {[catch [list set len [llength $line]]]} { return {} } } # puts stderr \nline=$line return $len } #** # string function, which works also for older versions # of tcl, which don't have the `end' index. # proc String args { if {[info tclversion] < 8.2} { switch [lindex $args 1] { range - index { if {"end" == [lindex $args end]} { set str [lindex $args 2] lreplace args end end [expr [string length $str] - 1] } } } } return [eval string $args] } proc StripPrefix {text} { # puts "(StripPrefix) text=|$text|" set null [string index $text 0] if {"\"" == $null || "\{" == $null} { return [String range $text 1 end] } else { return $text } } proc VarCompletion {text {level -1}} { if {-1 == ${level}} { |
︙ | ︙ | |||
883 884 885 886 887 888 889 | } set pos [expr ${idx} + 1] } if {![info exists cmd]} {return} if {![info complete ${cmd}]} {return} set cmd [string range ${cmd} 1 [expr [string length ${cmd}] - 2]] | | | 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 | } set pos [expr ${idx} + 1] } if {![info exists cmd]} {return} if {![info complete ${cmd}]} {return} set cmd [string range ${cmd} 1 [expr [string length ${cmd}] - 2]] set rest [String range ${line} [expr ${idx} + 1] end] if {[catch [list set result [string trim [eval ${cmd}]]]]} {return} set line ${result}${rest} set diff [expr [string length ${result}] - ([string length ${cmd}] + 2)] incr start ${diff} incr end ${diff} |
︙ | ︙ | |||
927 928 929 930 931 932 933 | return "" } } # variable completion. Check first, if the # variable starts with a plain `$' or should # be enclosed in braces. # | | | 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 | return "" } } # variable completion. Check first, if the # variable starts with a plain `$' or should # be enclosed in braces. # set var [String range $part 1 end] # check if $var is an array name, which # already has already a "(" somewhere inside. # if {"" != [set vc [VarCompletion $var]]} { if {"" == [lindex $vc 0]} { return "\$ [lrange ${vc} 1 end]" |
︙ | ︙ | |||
978 979 980 981 982 983 984 | return [TryFromList $part $all] } else { # try to use $pos further ... # puts stderr |$line| # | | | | | | 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 | return [TryFromList $part $all] } else { # try to use $pos further ... # puts stderr |$line| # # if {"." == [string index [string trim ${line}] 0]} { # set alias WIDGET # set namespc ""; # widgets are always in the global # } else { # the double `lindex' strips {} or quotes. # the subst enables variables containing # command names. # set alias [uplevel [info level] \ subst [lindex [lindex [QuoteQuotes ${line}] 0] 0]] |
︙ | ︙ | |||
1003 1004 1005 1006 1007 1008 1009 | } # strip leading ::'s. # regsub -all {^::} $alias {} alias set namespc [namespace qualifiers $alias] set alias [namespace tail $alias] | < > | 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 | } # strip leading ::'s. # regsub -all {^::} $alias {} alias set namespc [namespace qualifiers $alias] set alias [namespace tail $alias] # } # try first a specific completer, then, and only then # the tclreadline_complete_unknown. # foreach cmd [list ${alias} tclreadline_complete_unknown] { # puts stderr ${namespc}complete(${cmd}) if {"" != [namespace eval ::tclreadline::${namespc} \ |
︙ | ︙ | |||
1404 1405 1406 1407 1408 1409 1410 | atan exp log10 tan atan2 floor pow tanh ceil fmod sin abs double int rand round srand } | < < < < < | | 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 | atan exp log10 tan atan2 floor pow tanh ceil fmod sin abs double int rand round srand } if {")" == [String index $text end] && -1 != [lsearch $cmds $left]} { return "$text "; # append a space after a closing ')' } switch -- $left { rand { return "rand() " } abs - |
︙ | ︙ | |||
2997 2998 2999 3000 3001 3002 3003 | switch -- $cmd { read {} initialize {} write {} add { return [DisplayHints <completerLine>] } completer { return [DisplayHints <line>] } customcompleter { return [DisplayHints ?scriptCompleter?] } | | | 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 | switch -- $cmd { read {} initialize {} write {} add { return [DisplayHints <completerLine>] } completer { return [DisplayHints <line>] } customcompleter { return [DisplayHints ?scriptCompleter?] } builtincompleter { return [CompleteBoolean ${text}] } eofchar { return [DisplayHints ?script?] } reset-terminal { if {[info exists ::env(TERM)]} { return [CompleteFromList ${text} $::env(TERM)] } else { return [DisplayHints ?terminalName?] } |
︙ | ︙ | |||
3220 3221 3222 3223 3224 3225 3226 | # @param command. # @param optionsT where the table will be stored. # @return number of options # @date Sep-14-1999 # proc OptionTable {cmd optionsT} { upvar $optionsT options | | > > > | | 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 | # @param command. # @param optionsT where the table will be stored. # @return number of options # @date Sep-14-1999 # proc OptionTable {cmd optionsT} { upvar $optionsT options # first we build an option table. # We always use `configure' here, # because cget will not return the # option table. # if {[catch [list set option_table [eval ${cmd} configure]] msg]} { return 0 } foreach optline ${option_table} { if {5 != [llength ${optline}]} continue else { lappend options(switches) [lindex ${optline} 0] lappend options(value) [lindex ${optline} 4] } |
︙ | ︙ | |||
3254 3255 3256 3257 3258 3259 3260 | if {-1 != ${idx}} { break } } if {-1 == ${idx}} { return } | > > > > > > | | > | 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 | if {-1 != ${idx}} { break } } if {-1 == ${idx}} { return } # separate the command, but exclude (cget|configure) # because cget won't return the option table. Instead # OptionTable always uses `configure' to get the # option table. # set cmd [lrange ${lst} 0 [expr ${idx} - 1]] TraceText $cmd if {0 < [OptionTable ${cmd} options]} { set prev [PreviousWord ${start} ${line}] if {-1 != [set found [lsearch -exact $options(switches) ${prev}]]} { # complete only if the user has not # already entered something here. |
︙ | ︙ | |||
3284 3285 3286 3287 3288 3289 3290 3291 | } proc CompleteFromOptionsOrSubCmds {text start end line pos} { set from_opts [CompleteFromOptions ${text} ${start} ${line}] if {[string length ${from_opts}]} { return ${from_opts} } else { set cmds [TrySubCmds [lrange [ProperList ${line}] 0 [expr $pos - 1]]] | > < < < < < < | < < | < > | | < | < < < | | < < < | | | | | | | | 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 | } proc CompleteFromOptionsOrSubCmds {text start end line pos} { set from_opts [CompleteFromOptions ${text} ${start} ${line}] if {[string length ${from_opts}]} { return ${from_opts} } else { # puts stderr \n\n[lrange [ProperList ${line}] 0 [expr $pos - 1]]\n set cmds [TrySubCmds [lrange [ProperList ${line}] 0 [expr $pos - 1]]] if {[llength ${cmds}]} { return [TryFromList ${text} ${cmds}] } } return "" } # TODO # write a dispatcher here, which gets the widget class name # and calls specific completers. # proc complete(WIDGET_COMMAND) {text start end line pos mod} { return [CompleteFromOptionsOrSubCmds ${text} ${start} ${end} ${line} ${pos}] } proc EventuallyInsertLeadingDot {text fallback} { if {![string length ${text}]} { return [list . {}] } else { return [DisplayHints $fallback] } } #** # TODO: shit. make this better! # @param text, a std completer argument (current word). # @param fullpart, the full text of the current position. # @param lst, the list to complete from. # @param pre, leading `quote'. # @param sep, word separator. # @param post, trailing `quote'. # @return a formatted completer string. # @date Sep-15-1999 # proc CompleteListFromList {text fullpart lst pre sep post} { # puts stderr "" # puts stderr text=|$text| # puts stderr lst=|$lst| # puts stderr pre=|$pre| |
︙ | ︙ | |||
3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 | } elseif {[string length ${left}]} { return [list ${left}]${completion} } else { return ${completion} } return "" } proc complete(bind) {text start end line pos mod} { switch -- ${pos} { 1 { set widgets [WidgetChildren ${text}] set toplevels [ToplevelWindows] if {[catch {set toplevelClass [winfo class .]}]} { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 | } elseif {[string length ${left}]} { return [list ${left}]${completion} } else { return ${completion} } return "" } #** # SpecificSwitchCompleter # --- # @param text -- the word to complete. # @param start -- the char index of text's start in line # @param line -- the line gathered so far. # @param switch -- the switch to complete for. # @return a std tclreadline formatted completer string. # @sa CompleteWidgetConfigurations # @date Sep-17-1999 # proc SpecificSwitchCompleter {text start line switch} { # TODO: # go to the `options' man page and look for possible values switch -- ${switch} { -takefocus - -exportselection { return [CompleteBoolean ${text}] } -xscrollcommand - -yscrollcommand { # return [BraceOrCommand ${text} \ # ${start} ${end} ${line} ${pos} ${mod}] } -relief { return [CompleteFromList ${text} { raised sunken flat ridge solid groove }] } default { return [DisplayHints <[String range ${prev} 1 end]>] } } } #** # CompleteWidgetConfigurations # --- # @param text -- the word to complete. # @param start -- the actual cursor position. # @param line -- the line gathered so far. # @param lst -- a list of possible completions. # @return a std tclreadline formatted completer string. # @sa SpecificSwitchCompleter # @date Sep-17-1999 # proc CompleteWidgetConfigurations {text start line lst} { set prev [PreviousWord ${start} ${line}] if {"-" == [string index ${prev} 0]} { return [SpecificSwitchCompleter ${text} ${start} ${line} ${prev}] } else { return [CompleteFromList ${text} \ [RemoveUsedOptions ${line} ${lst}]] } } # -------------------------------------- # === SPECIFIC TK COMMAND COMPLETERS === # -------------------------------------- proc complete(bell) {text start end line pos mod} { switch -- ${pos} { 1 { return [CompleteFromList ${text} -displayof] } 2 { if {"-displayof" == [PreviousWord ${start} ${line}]} { return [CompleteFromList ${text} [ToplevelWindows]] } } } } proc complete(bind) {text start end line pos mod} { switch -- ${pos} { 1 { set widgets [WidgetChildren ${text}] set toplevels [ToplevelWindows] if {[catch {set toplevelClass [winfo class .]}]} { |
︙ | ︙ | |||
3450 3451 3452 3453 3454 3455 3456 | return [CompleteListFromList ${text} [Lindex ${line} 2] \ [bindtags [Lindex ${line} 1]] \{ { } \}] } } return "" } | < < < < | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 | return [CompleteListFromList ${text} [Lindex ${line} 2] \ [bindtags [Lindex ${line} 1]] \{ { } \}] } } return "" } proc complete(button) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -activeforeground -anchor -background -bitmap -borderwidth -cursor -disabledforeground -font -foreground -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -takefocus -text -textvariable -underline -wraplength -command -default -height -state -width }] } } return "" } proc complete(canvas) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -background -borderwidth -cursor -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -relief -selectbackground -selectborderwidth -selectforeground -takefocus -xscrollcommand -yscrollcommand -closeenough -confine -height -scrollregion -width -xscrollincrement -yscrollincrement }] } } return "" } proc complete(checkbutton) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground activeBackground Foreground -activeforeground -anchor -background -bitmap -borderwidth -cursor -disabledforeground -font -foreground -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -takefocus -text -textvariable -underline -wraplength -command -height -indicatoron -offvalue -onvalue -selectcolor -selectimage -state -variable -width }] } } return "" } proc complete(entry) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -background -borderwidth -cursor -exportselection -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -justify -relief -selectbackground -selectborderwidth -selectforeground -takefocus -textvariable -xscrollcommand -show -state -width }] } } return "" } proc complete(frame) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -borderwidth -cursor -highlightbackground -highlightcolor -highlightthickness -relief -takefocus -background -class -colormap -container -height -visual -width }] } } return "" } proc complete(label) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -anchor -background -bitmap -borderwidth -cursor -font -foreground -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -takefocus -text -textvariable -underline -wraplength -height -width }] } } return "" } proc complete(listbox) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -background -borderwidth -cursor -exportselection -font -foreground -height -highlightbackground -highlightcolor -highlightthickness -relief -selectbackground -selectborderwidth -selectforeground -setgrid -takefocus -width -xscrollcommand -yscrollcommand -height -selectmode -width }] } } return "" } proc complete(menu) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -activeborderwidth -activeforeground -background -borderwidth -cursor -disabledforeground -font -foreground -relief -takefocus -postcommand -selectcolor -tearoff -tearoffcommand -title -type }] } } return "" } proc complete(menubutton) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -activeforeground -anchor -background -bitmap -borderwidth -cursor -disabledforeground -font -foreground -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -takefocus -text -textvariable -underline -wraplength -direction -height -indicatoron -menu -state -width }] } } return "" } proc complete(message) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -anchor -background -borderwidth -cursor -font -foreground -highlightbackground -highlightcolor -highlightthickness -padx -pady -relief -takefocus -text -textvariable -width -aspect -justify -width }] } } return "" } proc complete(radiobutton) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -activeforeground -anchor -background -bitmap -borderwidth -cursor -disabledforeground -font -foreground -highlightbackground -highlightcolor -highlightthickness -image -justify -padx -pady -relief -takefocus -text -textvariable -underline -wraplength -command -height -indicatoron -selectcolor -selectimage -state -value -variable -width }] } } return "" } proc complete(scale) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -background -borderwidth -cursor -font -foreground -highlightbackground -highlightcolor -highlightthickness -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -bigincrement -command -digits -from -label -length -resolution -showvalue -sliderlength -sliderrelief -state -tickinterval -to -variable -width }] } } return "" } proc complete(scrollbar) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -activebackground -background -borderwidth -cursor -highlightbackground -highlightcolor -highlightthickness -jump -orient -relief -repeatdelay -repeatinterval -takefocus -troughcolor -activerelief -command -elementborderwidth -width }] } } return "" } proc complete(text) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -background -borderwidth -cursor -exportselection -font -foreground -highlightbackground -highlightcolor -highlightthickness -insertbackground -insertborderwidth -insertofftime -insertontime -insertwidth -padx -pady -relief -selectbackground -selectborderwidth -selectforeground -setgrid -takefocus -xscrollcommand -yscrollcommand -height -spacing1 -spacing2 -spacing3 -state -tabs -width -wrap }] } } return "" } proc complete(toplevel) {text start end line pos mod} { switch -- ${pos} { 1 { return [EventuallyInsertLeadingDot ${text} <pathName>] } default { return [CompleteWidgetConfigurations ${text} ${start} ${line} { -borderwidth -cursor -highlightbackground -highlightcolor -highlightthickness -relief -takefocus -background -class -colormap -container -height -menu -screen -use -visual -width }] } } return "" } proc complete(image) {text start end line pos mod} { set sub [Lindex ${line} 1] switch -- ${pos} { 1 { return [CompleteFromList ${text} [TrySubCmds image]] } 2 { switch -- ${sub} { create { return [CompleteFromList ${text} [image types]] } delete - height - |
︙ | ︙ |