/ 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:

- Comment
- DataType
- Error
- Function
- Keyword
- Normal
- Number
- Operator
- String
- Symbol

### 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