package syntaxhighlighter::tcl;
$VERSION = '0.01';
sub load{
use Wx qw(wxSTC_LEX_TCL wxSTC_H_TAG);
my $TclKeywords = 'after append array auto_execok auto_import auto_load \
auto_load_index auto_qualify beep binary break case catch cd clock \
close concat continue dde default echo else elseif encoding eof \
error eval exec exit expr fblocked fconfigure fcopy file \
fileevent flush for foreach format gets glob global history if \
incr info interp join lappend lindex linsert list llength load \
lrange lreplace lsearch lsort namespace open package pid \
pkg_mkIndex proc puts pwd read regexp regsub rename resource \
return scan seek set socket source split string subst switch \
tclLog tclMacPkgSearch tclPkgSetup tclPkgUnknown tell time \
trace unknown unset update uplevel upvar variable vwait while';
my $TkKeywordclass = 'bell bind bindtags button canvas checkbutton console \
destroy entry event focus font frame grab grid image label listbox menu \
menubutton message pack place radiobutton raise scale scrollbar \
text tk tkwait toplevel winfo wm';
my $ItclKeywordclass = "@scope body class code common component configbody \
constructor define destructor hull import inherit itcl itk itk_component \
itk_initialize itk_interior itk_option iwidgets keep method \
private protected public";
my $TkCommands = "tkButtonDown tkButtonEnter tkButtonInvoke \
tkButtonLeave tkButtonUp tkCancelRepeat tkCheckRadioInvoke tkDarken \
tkEntryAutoScan tkEntryBackspace tkEntryButton1 tkEntryClosestGap \
tkEntryInsert tkEntryKeySelect tkEntryMouseSelect tkEntryNextWord \
tkEntryPaste tkEntryPreviousWord tkEntrySeeInsert tkEntrySetCursor \
tkEntryTranspose tkEventMotifBindings tkFDGetFileTypes tkFirstMenu \
tkFocusGroup_Destroy tkFocusGroup_In tkFocusGroup_Out tkFocusOK \
tkListboxAutoScan tkListboxBeginExtend tkListboxBeginSelect \
tkListboxBeginToggle tkListboxCancel tkListboxDataExtend \
tkListboxExtendUpDown tkListboxMotion tkListboxSelectAll \
tkListboxUpDown tkMbButtonUp tkMbEnter tkMbLeave tkMbMotion \
tkMbPost tkMenuButtonDown tkMenuDownArrow tkMenuDup tkMenuEscape \
tkMenuFind tkMenuFindName tkMenuFirstEntry tkMenuInvoke tkMenuLeave \
tkMenuLeftArrow tkMenuMotion tkMenuNextEntry tkMenuNextMenu \
tkMenuRightArrow tkMenuUnpost tkMenuUpArrow tkMessageBox \
tkPostOverPoint tkRecolorTree tkRestoreOldGrab tkSaveGrabInfo \
tkScaleActivate tkScaleButton2Down tkScaleButtonDown \
tkScaleControlPress tkScaleDrag tkScaleEndDrag tkScaleIncrement \
tkScreenChanged tkScrollButton2Down tkScrollButtonDown \
tkScrollButtonUp tkScrollByPages tkScrollByUnits tkScrollDrag \
tkScrollEndDrag tkScrollSelect tkScrollStartDrag tkScrollToPos \
tkScrollTopBottom tkTabToWindow tkTearOffMenu tkTextAutoScan \
tkTextButton1 tkTextClosestGap tkTextInsert tkTextKeyExtend \
tkTextKeySelect tkTextNextPara tkTextNextPos tkTextNextWord \
tkTextPaste tkTextPrevPara tkTextPrevPos tkTextResetAnchor \
tkTextScrollPages tkTextSelectTo tkTextSetCursor tkTextTranspose \
tkTextUpDownLine tkTraverseToMenu tkTraverseWithinMenu tk_bisque \
tk_chooseColor tk_dialog tk_focusFollowsMouse tk_focusNext \
tk_focusPrev tk_getOpenFile tk_getSaveFile tk_messageBox \
tk_optionMenu tk_popup tk_setPalette tk_textCopy tk_textCut \
tk_textPaste";
$_[0]->SetLexer( wxSTC_LEX_TCL ); # Set Lexers to use
$_[0]->SetKeyWords(0, $TclKeywords); #.$TkKeywordclass.$ItclKeywordclass.$TkCommands
# $_[0]->StyleSetSpec( wxSTC_H_TAG, "fore:#000055" ); # Apply tag style for selected lexer (blue)
$_[0]->StyleSetSpec( 0,"fore:#000000"); # whitespace (SCE_CONF_DEFAULT)
$_[0]->StyleSetSpec( 1,"fore:#777777"); # Comment (SCE_CONF_COMMENT)
$_[0]->StyleSetSpec( 2,"fore:#3350ff"); # Number (SCE_CONF_NUMBER)
$_[0]->StyleSetSpec( 3,"fore:#888820"); # String
$_[0]->StyleSetSpec( 4,"fore:#202020"); # Single quoted string
$_[0]->StyleSetSpec( 5,"fore:#208820"); # Keyword
$_[0]->StyleSetSpec( 6,"fore:#882020"); # Triple quotes
$_[0]->StyleSetSpec( 7,"fore:#202020"); # Triple double quotes
$_[0]->StyleSetSpec( 8,"fore:#209999"); # Class name definition
$_[0]->StyleSetSpec( 9,"fore:#202020"); # Function or method name definition
$_[0]->StyleSetSpec(10,"fore:#000000"); # Operators
$_[0]->StyleSetSpec(11,"fore:#777777"); # Identifiers
$_[0]->StyleSetSpec(12,"fore:#7f7f7f"); # Comment-blocks
$_[0]->StyleSetSpec(13,"fore:#000000,back:#E0C0E0,eolfilled"); # End of line where string is not closed
$_[0]->StyleSetSpec(34,"fore:#0000ff"); # Matched Operators
$_[0]->StyleSetSpec(35,"fore:#ff0000"); # Matched Operators
}
1;