Ignore:
Timestamp:
09/15/09 02:21:00 (10 years ago)
Author:
bretzel_parpg
Message:

Patch by Bretzel

  • Update the syntax highlighting to match the yaml syntax
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/writing_editor/scripts/syntaxHighlight.py

    r233 r282  
    3030        @return: None 
    3131        """ 
     32        boldCmdFormat = QtGui.QTextCharFormat() 
     33        boldCmdFormat.setFontWeight(QtGui.QFont.Bold) 
     34        boldCmdFormat.setForeground(QtGui.QColor("blue")) 
     35 
    3236        cmdFormat = QtGui.QTextCharFormat() 
    33         cmdFormat.setFontWeight(QtGui.QFont.Bold) 
    3437        cmdFormat.setForeground(QtGui.QColor("blue")) 
    3538         
     
    3740        quoteFormat.setForeground(QtGui.QColor("green")) 
    3841 
    39         singleLineCommentFormat = QtGui.QTextCharFormat() 
    40         singleLineCommentFormat.setForeground(QtGui.QColor("red")) 
    41  
    42         multiLineCommentFormat = QtGui.QTextCharFormat() 
    43         multiLineCommentFormat.setForeground(QtGui.QColor("magenta")) 
     42        commentFormat = QtGui.QTextCharFormat() 
     43        commentFormat.setForeground(QtGui.QColor("red")) 
    4444             
    45         cmds = ["npc", "NPC", "pc", "PC", "section", "SECTION", "SCRIPTNAME", 
    46                 "scriptname", "endsection", "ENDSECTION", "callsection",  
    47                 "CALLSECTION", "option", "OPTION", "endoption", "ENDOPTION",  
    48                 "playsound", "PLAYSOUND", "say", "SAY", "attack", "ATTACK",  
    49                 "return", "RETURN","IF", "if", "ELIF", "elif", "ELSE", "else", 
    50                 "#", "/\*", "\""] 
    51  
    52         for cmd in cmds: 
    53             # if its a quote 
    54             if (cmd == "\""): 
     45        bold_cmds = ["NPC", "AVATAR", "START", "SECTIONS"] 
     46        cmds = ["say", "responses", "pc", "dialogue", "end", "back", "\"", "'"] 
     47        comments = ["#"] 
     48         
     49        all_cmds = cmds + bold_cmds + comments 
     50        for cmd in all_cmds: 
     51            # if its a comment 
     52            if (cmd == "#"): 
    5553                startExp = QtCore.QRegExp(cmd) 
    5654                startIndex = text.indexOf(startExp) 
    57                 if (self.format(startIndex) == singleLineCommentFormat or 
    58                     self.format(startIndex) == multiLineCommentFormat): 
     55                self.setFormat(startIndex, text.length(), commentFormat) 
     56 
     57            # if its a quote 
     58            elif (cmd == "\"" or cmd == "'"): 
     59                startExp = QtCore.QRegExp(cmd) 
     60                startIndex = text.indexOf(startExp) 
     61                if (self.format(startIndex) == commentFormat): 
    5962                    return 
    6063                else: 
     
    6265                    quoteLength = endIndex - startIndex + 1 
    6366                    self.setFormat(startIndex, quoteLength, quoteFormat) 
    64                  
    65             # if its a singeline comment 
    66             elif (cmd == "#"): 
    67                 startExp = QtCore.QRegExp(cmd) 
    68                 startIndex = text.indexOf(startExp) 
    69                 self.setFormat(startIndex, text.length(), singleLineCommentFormat)                 
    7067 
    71             # if its a multiline comment 
    72             elif (cmd == "/\*"): 
    73                 startExp = QtCore.QRegExp(cmd) 
    74                 endExp = QtCore.QRegExp("\*/") 
    75                 self.setCurrentBlockState(0) 
    76                  
    77                 startIndex = 0 
    78                 if (self.previousBlockState() != 1): 
    79                     startIndex = text.indexOf(startExp) 
    80  
    81                 while (startIndex >= 0): 
    82                     endIndex = text.indexOf(endExp, startIndex) 
    83                     if (endIndex == -1): 
    84                         self.setCurrentBlockState(1) 
    85                         commentLength = text.length() - startIndex 
    86                     else: 
    87                         commentLength = endIndex - startIndex + endExp.matchedLength() 
    88  
    89                     self.setFormat(startIndex, commentLength, multiLineCommentFormat) 
    90                     startIndex = text.indexOf(startExp, startIndex + commentLength) 
    91  
    92             # otherwise its just a command 
    93             else:        
     68            # if its just a regular command 
     69            elif cmd in cmds: 
    9470                expression = QtCore.QRegExp(cmd) 
    9571                index = int(text.indexOf(expression)) 
     
    9773                    length = int(expression.matchedLength()) 
    9874                    self.setFormat(index, length, cmdFormat) 
     75                    index = text.indexOf(expression, index + length)                 
     76 
     77            # if its a command that needs to be bold 
     78            elif cmd in bold_cmds:        
     79                expression = QtCore.QRegExp(cmd) 
     80                index = int(text.indexOf(expression)) 
     81                while (index >= 0): 
     82                    length = int(expression.matchedLength()) 
     83                    self.setFormat(index, length, boldCmdFormat) 
    9984                    index = text.indexOf(expression, index + length) 
     85 
     86            else: 
     87                raise Exception("SyntaxHighlighter: Cannot find command %s" % cmd) 
Note: See TracChangeset for help on using the changeset viewer.