Syntax highlighting

Startseite Foren Deutsches LiveCode-Forum Syntax highlighting

Schlagwörter: 

  • Dieses Thema hat 2 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren von Torsten.
Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #19848
      xamsoftware
      Teilnehmer

        Hallo zusammen,
        weiß jemand, wie man eine property für eine bestimmte Zeichenfolge innerhalb eines Textfelds setzen kann? Ich möchte eine Art “Syntax Highlighting” für einen Texteditor programmieren. Also: Mit rawKeyUp wird immer das Syntax Highlighting aktualisiert. Ich möchte, dass immer, sobald der Nutzer eine bestimmte Zeichenfolge (z.B. “html”) eintippt, diese in einer bestimmten Farbe gefärbt wird (Also muss für diese Zeichenfolge die foregroundColor gesetzt werden). Mein Problem ist also, dass ich nicht weiß, wie ich diese Zeichenfolge nun im Code ansprechen soll. Für das Textfelder gäbe es ja die Möglichkeit, einfach “the selection” anzusprechen, aber das hilft mir da auch nicht weiter.
        Hat da jemand eine Idee, wie man das vielleicht lösen könnte?
        Ich bin für alle Arten von Lösungsvorschlägen dankbar.
        Gruß,
        Max

      • #19863
        Klaus Major
        Administrator

          Hallo Max,

          was hast Du denn bisher programmiert?
          Ich würde dann eventuell “last word” oder “last trueword” des Feldes prüfen und bei Bedarf einfärben. Und dann auch vielleicht nur, wenn der User ein Leerzeichen oder Punkt oder CR eingeben hat. So müsste das nicht bei jedem eingegebenem Buchstaben passieren, was sicher gut für die Performance ist.

          Gruß

          Klaus

        • #19877
          Torsten
          Teilnehmer

            Hi Max,

            also generell Einfärben würde so gehen:

            set the foregroundcolor of word 2 of field "Text" to blue

            Ich habe doch jetzt tatsächlich in einer halben Stunde die Funktionalität gebaut, dass solltest Du auch schaffen.

            Gemäß Klaus’ Motto, dass wir hier Hilfe zur Selbsthilfe bieten, will ich aber den Code (noch) nicht direkt posten, sondern Dir helfen, von selbst auf die Lösung zu kommen.

            Hier sind die Puzzle-Stücke:

            1. Erstelle im Skript deines Feldes einen Handler, der keyUp – Ereignisse abfängt.

            2. Schreibe eine Zeile, die abbricht, wenn die gedrückte Taste KEIN Leerzeichen ist (d.h. die Funktion geht nur weiter, wenn das letzte Wort beendet ist. Ist auch für das Einfärben wichtig, weil sonst alle weiteren Zeichen die zugefügte Formartierung übernehmen)

            3. Jetzt müssen verschiedene Probleme gelöst werden:
            – in welcher Zeile ist der Cursor?
            – welchen Index hat das letzte Wort?

            4. Ist das gefundene Wort eines, welches eingefärbt (und wenn ja wie) werden muss?

            5. Einfärben (siehe Befehl oben)

            Als kleine Hilfe hier die eingesetzten Befehle/Keywords:

            * keyUp
            * space
            * selectedLine
            * value
            * number

            Viele Spass!
            Torsten

        Ansicht von 2 Antwort-Themen
        • Du musst angemeldet sein, um auf dieses Thema antworten zu können.