Absolute Probleme mit TCL Syntax HighLight

Anonymous
2012-04-29
2012-11-13

  • Anonymous
    2012-04-29

    Ich habe Probleme mit dem Syntax Highlighting für die Sprache TCL. Ich versuche seit der letzten funktionierenden Version 5.3.1 immer mal wieder auf eine höhere Version upzudaten aber scheitere jedesmal.

    Kommentare fangen mit # an und sind grün hinterlegt.
    Benutzerdefinierte Schlüsselwörter sind Blau hinterlegt, genau so wie die Standard-Schlüsselwörter
    Zahlen habe ich mit Rot und Texte mit Magenta hinterlegt.

    Dies funktioniert alles mit 5.3.1. Alle Versionen danach wie z.B. 6.1.2 können dies nichr mehr.

    Wird der Kommentar anstatt mit einem # mit mehr wie #### so wird der Text schwarz hinterlegt

    Wird ein Benutzerdefiniertes Schlüsselwort eingegeben, so wird es anstatt in blau in schwarz formatiert.
    Strings anstatt in Magenta in Blau
    Zahlen anstatt in Rot in Grün

    Es ist wahrscheinlich besser, trotzdem mir Notepad++ gefällt, einen anderen Editor ins Auge zu fassen, da mit neueren Versionen von Windows eventuell die Version 5.3.1 nicht mehr funktioniert.

     
  • Ich habe gerade halbe Stunde lang geguckt, und jetzt will ich heulen.  Die bekloppte Sprache / Style Konfiguration Code lässt mich sprachlos.

    Also, grundsätzlich, haben die Style-IDs für TCL sich geändert.  Das heißt die muss aktualisiert in deiner styler.xml Datei werden.  Eine Problem kannst du selbst beheben, die andere nicht.

    Für das Problem mit mehere # - die neue TCL Lexer unterstütz "comment boxes" und "comments" als verschiedene Styles.
    So:

    # Comment
    

    und

    #########
    # Comment #
    ##########
    

    sind mit anderen Farben markiert.  Die Style-ID für diese COMMENTBOX Style hat sich geändert, früher war es 17, jetzt 20.
    1. Öffnen die styler.xml (normalerweis %APPDATA%\Notepad++\styler.xml). 
    2. Find <Language name="tcl"
    3. Unter dieser <Language>" Knoten, ist einen "WordStyle" Knoten, mit name="COMMENT BOX".  Ändern die styleID nach "20".
    4. Speichern als styler2.xml
    5. Notepad++ beenden.
    6. Start, Ausführen, %APPDATA%\Notepad++
    7. Löschen styler.xml, und styler2.xml umbenennen als styler.xml
    8. Notepad++ neu starten und Problem 1 gelöst :)

    Problem 2, mit den Schlüsselwörter  sollte genauso gehen, aber leider, die anzahl von Word-Lists ist, (heulen), fest-programmiert pro Sprache.

    Das Problem schnell zu lösen braucht kein großes Aufwand, aber sollte eigentlich komplett umgebaut werden. 

    Wenn du sagen könntest, welche Version du benutzt am liebsten, ich kann ein Version bauern das funktioniert.  Ich werde danach die Sprache-Schlüsselwörter-System umbauen, und zwar richtig :)

    Ich hoffe das alles verständlich ist, wenn nicht dann sag einfach, und ich versuch's noch mal.

    Viele Grüße,
    Dave.

     

  • Anonymous
    2012-04-29

    Hi Dave,

    thank you for your answer. The last version of notepad++ where the syntax highlight is working well is version 5.3.1.
    My user words for TCl are like BindCol, GetColumn and many other words:

    As attachment a tcl script as word rtf document. The syntax highlight works with version 5.3.1.

    Kind regards

    Chris

    ####################################################
    # proc GetAllChilds {sOLAP, sDim, sStartElement}
    proc GetAllChilds {sOLAP sDim sStartElement} {
     
      $sOLAP SelectDimension "$sDim" dim
      dim ReadAllElements
     

      set lResultlist ""
      set iEnde 0
     
      if {$sStartElement == 0} {
        set sTop [dim GetElement 0]
      } else {
          set sTop $sStartElement
      } 
      set sElement $sTop
     
      lappend lList $sTop 
       
      while {$iEnde != 1} {  
        set iLaenge [llength $lList]     
        for {set i 0} {$i < $iLaenge} {set i [expr $i + 1]} {     
          set sElement [lindex $lList $i]     
          if {[dim CountChilds $sElement] == 0} {       
            lappend lResultlist $sElement
          } else {
              for {set j 0} {$j < [dim CountChilds $sElement]} {set j [expr $j + 1]} {
                lappend lChildList         
              }
          }    
        }      
        if {$lChildList != ""} {
          set lList $lChildList
          set lChildList ""
        } else {     
          set iEnde 1
        }      
      }
      if {$lResultlist == ""} {
      CloseDimension dim
        return 0
      } else {   
      CloseDimension dim
        return $lResultlist
      }  
      CloseDimension dim
    }

     
  • (ich bleibe bei Deutsch, weil das der Deutsch Forum ist - es tut mir Leid wenn es nicht so verständlich ist)

    Ich meinte nur, welche Version du gerne hättest - 6.1.2 oder 5.9.8.  Ich mache der Patch, und dann kann ich schnell ein 5.9.8 oder 6.1.2 bauen, mit TCL gefixt.  Die nächste Version sollte dann sowieso gefixt sein (vermutlich wäre der Patch akzeptiert). 

    Weil ich nicht weiß, wie lange es dauern kann, der Patch in der Offizielle Version einzubauen (das hängt von der Hauptentwickler ab), kann ich einfach ein Spezielle Version für dich bauen, so dass du ein Version hast das funktioniert.

    Gruß,
    Dave.

     
  • Also, ich habe den Fix gemacht.

    Du kannst ein gefixte Version hier runterladen: http://www.brotherstone.co.uk/npp/v612tcl.7z
    Das ist nämlich Version 6.1.2, aber mit dem Fix für TCL.

    Quelle-Code http://github.com/davegb3/npp/ , falls jemand Interesse hat.

    Mit Notepad++ zu, ersetzen deine notepad++.exe, SciLexer.dll, und stylers.model.xml Dateien, und löschen (oder nennen sie um) deine %APPDATA%\Notepad++\stylers.xml Datei.    Falls du deine stylers.xml behalten willst, nur den "Langauge name="tcl"" Abschnitt von stylers.model.xml in der v612tcl.7z Datei muss du kopieren und in deiner stylers.xml Datei einfügen.

    Leider spreche ich wenige TCL als Deutsch (also gar nichts), so weiß nicht ob es jetzt richtig ist oder nicht.  Von deinem Beispiel,

      $sOLAP SelectDimension "$sDim" dim
      dim ReadAllElements
    

    die erste "dim" ist anders als die zweite (zweite sieht aus wie ein Schlüsselwort, erste wie ein Identifier).

    Ich würde gerne den Fix an der Hauptentwickler schicken, so wenn du Bescheid sagen könntest, ob es besser ist oder nicht, wäre ich sehr Dankbar.

    Vielen Dank,
    Dave.