//------------------------------------------------ //--- 010 Editor v9.0 Binary Template // // File: VB.bt // Authors: SweetScape Software // Version: 1.0 // Purpose: Syntax highlighting for Visual Basic files. // Category: Syntax // File Mask: *.vb,*.vbs // ID Bytes: // History: // 1.0 2018-11-27 SweetScape Software: Initial version. //------------------------------------------------ RequiresVersion( 9 ); // To save memory, allow a single copy of this template to provide // syntax highlighting for all open files that match the file mask. HighlightAllowInstanceSharing( true ); // Get list of coloring styles local int commentStyle = HighlightFindStyle( "code-comment" ); local int keywordStyle = HighlightFindStyle( "code-keyword" ); local int dataTypeStyle = HighlightFindStyle( "code-data-type" ); local int stringStyle = HighlightFindStyle( "code-string" ); // Build list of keywords local TKeywordList keywordList = HighlightBuildKeywordList( HIGHLIGHT_WHOLEWORD | HIGHLIGHT_IGNORECASE, "ADDHANDLER", "ADDRESSOF", "ALIAS", "AND", "ANDALSO", "AS", "BYREF", "BYVAL", "CALL", "CASE", "CATCH", "CBOOL", "CBYTE", "CCHAR", "CDATE", "CDBL", "CDEC", "CINT", "CLASS", "CLNG", "COBJ", "CONST", "CONTINUE", "CSBYTE", "CSHORT", "CSNG", "CSTR", "CTYPE", "CUINT", "CULNG", "CUSHORT", "DECLARE", "DEFAULT", "DELEGATE", "DIM", "DIRECTCAST", "DO", "EACH", "ELSE", "ELSEIF", "END", "ENDIF", "ENUM", "ERASE", "ERROR", "EVENT", "EXIT", "FALSE", "FINALLY", "FOR", "FRIEND", "FUNCTION", "GET", "GETTYPE", "GETXMLNAMESPACE", "GLOBAL", "GOSUB", "GOTO", "HANDLES", "IF", "IMPLEMENTS", "IMPORTS", "IN", "INHERITS", "INTERFACE", "IS", "ISNOT", "LET", "LIB", "LIKE", "LOOP", "ME", "MOD", "MODULE", "MUSTINHERIT", "MUSTOVERRIDE", "MYBASE", "MYCLASS", "NAMESPACE", "NARROWING", "NEW", "NEXT", "NOT", "NOTHING", "NOTINHERITABLE", "NOTOVERRIDABLE", "OF", "ON", "OPERATOR", "OPTION", "OPTIONAL", "OR", "ORELSE", "OVERLOADS", "OVERRIDABLE", "OVERRIDES", "PARAMARRAY", "PARTIAL", "PRIVATE", "PROPERTY", "PROTECTED", "PUBLIC", "RAISEEVENT", "READONLY", "REDIM", "REM", "REMOVEHANDLER", "RESUME", "RETURN", "SELECT", "SET", "SHADOWS", "SHARED", "STATIC", "STEP", "STOP", "STRUCTURE", "SUB", "SYNCLOCK", "THEN", "THROW", "TO", "TRUE", "TRY", "TRYCAST", "TYPEOF", "USING", "VARIANT", "WEND", "WHEN", "WHILE", "WIDENING", "WITH", "WITHEVENTS", "WRITEONLY", "XOR" ); // Build list of datatypes local TKeywordList dataTypeList = HighlightBuildKeywordList( HIGHLIGHT_WHOLEWORD | HIGHLIGHT_IGNORECASE, "BOOLEAN", "BYTE", "CHAR", "DATE", "DECIMAL", "DOUBLE", "INTEGER", "LONG", "OBJECT", "SBYTE", "SHORT", "SINGLE", "STRING", "UINTEGER", "ULONG", "USHORT" ); // Main function to apply syntax highlighting to a line of text. // flags is preserved between lines and allows us to do multi-line comments. void HighlightLineRealtime( int64 line, wchar_t text[], int foreColors[], int backColors[], int count, ushort &flags ) { int i, len, pos, rule = flags; while( i < count ) { // Check single-line comments if( (text[i] == '\'') && HighlightCheckCommentRule( text, count, "\'", i, foreColors, backColors, commentStyle ) ) continue; // Check single-line strings if( (text[i] == '\"') && HighlightCheckSingleLineRule( text, count, "\"", "\"", i, foreColors, backColors, stringStyle ) ) continue; // Check regular keywords if( HighlightCheckKeywordRule( text, count, keywordList, i, foreColors, backColors, keywordStyle ) ) continue; // Check data types if( HighlightCheckKeywordRule( text, count, dataTypeList, i, foreColors, backColors, dataTypeStyle ) ) continue; // Nothing found - skip over whole words i = HighlightGetNextToken( text, count, i ); } // Save rule in the flags for the next line flags = rule; }