code: def match_multiline(self, text, delimiter, in_state, style):
          
          # If inside triple-single quotes, start at 0
          if self.previousBlockState() == in_state:
              start = 0
              add = 0
          # Otherwise, look for the delimiter on this line
          else:
              start = delimiter.indexIn(text)
              # Move past this match
              add = delimiter.matchedLength()
  
          # As long as there's a delimiter match on this line...
          while start >= 0:
              # Look for the ending delimiter
              end = delimiter.indexIn(text, start + add)
              # Ending delimiter on this line?
              if end >= add:
                  length = end - start + add + delimiter.matchedLength()
                  self.setCurrentBlockState(0)
              # No; multi-line string
              else:
                  self.setCurrentBlockState(in_state)
                  length = len(text) - start + add
              # Apply formatting
              self.setFormat(start, length, style)
              # Look for the next match
              start = delimiter.indexIn(text, start + length)
  
          # Return True if still inside a multi-line string, False otherwise
          if self.currentBlockState() == in_state:
              return True
          else:
              return False
docs: Do highlighting of multi-line strings. ``delimiter`` should be a
          ``QRegExp`` for triple-single-quotes or triple-double-quotes, and
          ``in_state`` should be a unique integer to represent the corresponding
          state changes when inside those strings. Returns True if we're still
          inside a multi-line string when this function is finished.