Syntax highlighting

Startseite Foren Deutsches LiveCode-Forum Syntax highlighting

Schlagwörter: 

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
      Verwalter

      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.