Home / comp / gb.qt.ext / highlight / add 
Highlight.Add (gb.qt.ext)
Syntax
STATIC SUB Add ( State AS Integer [ , Count AS Integer ] )
Defines the state of an UTF-8 character of the highlighted line.

The first time this method is called, the state of the first character of the line is defined. Then you should call this method for each other character until all are highlighted.

If Count is defined, then Count successive characters got the same state. By default, Count is one.

The State must be one of the following constants:

Examples

' HTML highlighting from the HighlightEditor example
' Note that the String class is used for dealing with UTF-8 characters.

PUBLIC SUB Editor1_Highlight()

  DIM iState AS Integer
  DIM iNextState AS Integer
  DIM iInd AS Integer
  DIM J AS Integer
  DIM sText AS String
  DIM sCar AS String
  DIM iPos AS Integer
  DIM bMarkup AS Boolean

  iState = Highlight.State
  sText = Highlight.Text

  FOR iInd = 1 TO String.Len(sText)

    iNextState = iState
    sCar = String.Mid$(sText, iInd, 1)

    IF bMarkup THEN

      IF sCar = ">" THEN
        bMarkup = FALSE
        iState = Highlight.Keyword
        iNextState = Highlight.Normal
      ELSE IF sCar = " " THEN
        iNextState = Highlight.Operator
      ELSE IF sCar = "=" THEN
        iNextState = Highlight.String
      ENDIF

    ELSE

      SELECT CASE iState
        CASE Highlight.Normal
          IF sCar = "\<" THEN
            IF String.Mid$(sText, iInd, 4) = "\<!--" THEN
              iState = Highlight.Comment
              iNextState = Highlight.Comment
            ELSE
              iState = Highlight.Keyword
              iNextState = Highlight.Keyword
              bMarkup = TRUE
            ENDIF
          ELSE IF sCar = "&" THEN
            iPos = String.InStr(sText, ";", iInd)
            IF iPos = 0 OR iPos = iInd + 1 THEN
              iState = Highlight.Error
            ELSE
              FOR J = iInd + 1 TO iPos - 1
                sCar = String.Mid$(sText, J, 1)
                IF IsLetter(sCar) THEN CONTINUE
                IF IsDigit(sCar) THEN CONTINUE
                IF InStr("_#", sCar) THEN CONTINUE
                BREAK
              NEXT
              IF J = iPos THEN
                Highlight.Add(Highlight.Number, iPos - iInd + 1)
                iInd = iPos
                CONTINUE
              ELSE
                iState = Highlight.Error
              ENDIF
            ENDIF
          ENDIF
        CASE Highlight.Comment
          IF sCar = ">" AND IF iInd > 2 AND IF String.Mid$(sText, iInd - 2, 2) = "--" THEN
            iNextState = Highlight.Normal
          ENDIF
      END SELECT

    ENDIF

    Highlight.Add(iState)
    iState = iNextState

  NEXT

  IF iNextState <> Highlight.Comment THEN
    iNextState = Highlight.Normal
  ENDIF

  Highlight.State = iNextState
  Highlight.ShowLimit = FALSE

END