SciTE - kontinuierlicher Kommentarmodus für AutoIt (auch für SciTE-RU)

    • Offizieller Beitrag

    Ein Tool für eine komfortablere Kommentierung im Skript.
    - Aktivierung und Deaktivierung per Hotkey, Modus ist sichtbar durch geändertes Cursor-Symbol (Hand)
    - Fortlaufend schreiben und der Kommentar bricht automatisch um und setzt hinter dem Code in der Folgezeile spaltengleich positioniert fort.
    - Bei automatischem Umbruch können für Zeilenende und -Fortsetzung optional Zeichen/-folgen festgelegt werden um optisch sofort zusammenhängende Zeilen zu erkennen
    - Umbruch automatisch an definierter Spaltenposition oder manuell durch Pfeil-ab
    - Es muß nicht fortlaufend jede Zeile beschrieben werden, sondern es können auch Zeilen übersprungen werden
    - Um wirksam zu werden ist ein Neustart von SciTE erforderlich

    Edit 14.02.2012: kleine Ergänzung, s. blaue Markierung

    Edit 15.02.2012: Falls es nicht wie gewollt klappt, werft mal einen Blick hier hin. Dort könnten schon einige Hinweise zur Lösung sein.

    Edit 16.02.2012: Wie ihr hier im Thread seht, gab es bei Pitter Probleme. Deshalb noch Folgendes:
    - Der Eintrag in der "SciTEStartup.lua" MUSS am Ende, also hinter EventClass:BeginEvents() erfolgen.
    - Sollten trotzdem die Ereignisse Pfeiltaste-Ab und Lerzeichen nicht erkannt werden, hilft i.A. einen zusätzlichen, sinnlosen Befehl im Skript zu verbauen, der die Funktion etwas 'bremst'
    Bsp.:

    Spoiler anzeigen

    Edit 17.02.2012
    - Ich habe die Positionsabfrage jetzt verändert, mit der vorigen Methode wurden auch 'halbe Tabs', also Tabs, die z.B. nach 2 Leerzeichen gesetzt wurden, voll mit 4 Leerzeichen ersetzt, was zu Verschiebungen führt.
    Nun erhalte ich direkt die Spaltenposition aus der Zeile. Version: 0.6
    - Und für die Nutzer von SciTE-RU habe ich auch die entsprechende Version erstellt.

    Edit 18.02.2012: [NEUE FUNKTIONEN]
    - Bei Auto-Umbruch wird das letzte Wort einer Zeile, wenn es die Umbruchmarkierung überschreitet, in die Folgezeile übernommen.
    - Manuell kann auch mit ENTER umgebrochen werden. Dann wird hinter der aktuellen Zeile eine Leerzeile eingefügt und genauso positioniert der Kommentar fortgeschrieben. Die Umbruchmarkierungen werden wie beim Auto-Umbruch gesetzt. Dazu ist ein weiterer Eintrag in den properties erforderlich um diese Funktion optional zu de/aktivieren (s. Installationshinweise).

    Und hier ein kleines Bild dazu:
    autoit.de/wcf/attachment/15105/

    Beschreibung

    So sieht das Skript dazu aus:

    v 0.7

    Version für SciTE-RU

    v 0.2
    • Offizieller Beitrag

    Freut mich, wenn es gefällt. ;)

    Habe noch eine kleine Ergänzung hinzugefügt. Jetzt können, wenn gewünscht, bei automatischem Umbruch Zeichen am Ende der Zeile und am Beginn der Folgezeile gesetzt werden um zusammenhängende Kommentarzeilen optisch besser darzustellen.
    s. Post #1

  • Gefällt mir sehr gut, kommt direkt in die Einstellungen ;)

    Aber irgendwie klappt das mit dem Zeilenumbruch nicht, ist das nach 150 Zeichen oder wenn man selber Zeilenumbuch macht? Klappt beides nicht bei mir..
    Hab auch die Einstellungen in den Prop geändert sowie das LUA Script

    Gruß

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    • Offizieller Beitrag

    Aber irgendwie klappt das mit dem Zeilenumbruch nicht, ist das nach 150 Zeichen oder wenn man selber Zeilenumbuch macht? Klappt beides nicht bei mir..
    Hab auch die Einstellungen in den Prop geändert sowie das LUA Script


    In den Benutzereinstellungen wird mit: ContinuousComment.LFpos.*.au3=170 die Spalte angegeben, ab der ein automatischer Umbruch erfolgen soll.
    Da die neue Version noch nicht heruntergeladen wurde, hast du noch die alte -- da habe ich gerade einen Fehler entdeckt, den ich aber in der aktuellen Version (0.4) gefixt habe. Dort war die Positionsermittlung beim Aufruf der Funktion nicht korrekt - jetzt paßt alles.

  • Hmmm... Hatte sehr gut funktioniert, bis ich die Änderungen eingearbeitet hatte.

    Leider funktioniert jetzt Strg+Shift+K nicht mehr, in Tools ist zwar der eintrag, aber nicht die Tastenkombination.
    Ausserdem kann ich jetzt immer nur eine einige Zeile kommentieren, wenn ich in Tools auf "Kommentarmodus aktivieren" klicke.

    Hab auch die neue neue LUA(4) rüber kopiert...

    Meine .properties sieht jetzt folgendermassen aus:

    Spoiler anzeigen
    [autoit]


    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    # START: DO NOT CHANGE ANYTHING AFTER THIS LINE #-#-#-#-#
    # Created by SciTEConfig
    #------------------------------------------------------------
    font.base=font:Verdana,size:10,$(font.override)
    font.monospace=font:Courier New,size:10
    proper.case=0
    check.updates.scite4autoit3=0
    use.tabs=1
    indent.size=4
    indent.size.*.au3=4
    tabsize=4
    #Background
    style.au3.32=style.*.32=$(font.base)
    #CaretLineBackground
    caret.line.back=#FFFED8
    #Selection Foreground/background and Alpha
    selection.fore=#006000
    selection.alpha=50
    selection.back=#F0A0A8
    # Brace highlight
    style.au3.34=fore:#0000FF
    # Brace incomplete highlight
    style.au3.35=fore:#008000,italics
    #White space
    style.au3.0=fore:#000000,back:#FFFFFF
    #Comment line
    style.au3.1=fore:#008000,italics,back:#FFFFFF
    #Comment block
    style.au3.2=fore:#008000,italics,back:#FFFFFF
    #Number
    style.au3.3=fore:#0000FF,back:#FFFFFF
    #Function
    style.au3.4=fore:#000090,italics,bold,back:#FFFFFF
    #Keyword
    style.au3.5=fore:#0000FF,back:#FFFFFF
    #Macro
    style.au3.6=fore:#808000,back:#FFFFFF
    #String
    style.au3.7=fore:#FF0000,back:#FFFFFF
    #Operator
    style.au3.8=fore:#FF8000,back:#FFFFFF
    #Variable
    style.au3.9=fore:#00557D,bold,back:#FFFFFF
    #Sent keys
    style.au3.10=fore:#808080,back:#FFFFFF
    #Pre-Processor
    style.au3.11=fore:#808000,back:#FFFFFF
    #Special
    style.au3.12=fore:#DC143C,back:#FFFFFF
    #Abbrev-Expand
    style.au3.13=fore:#000000,back:#FFFFFF
    #Com Objects
    style.au3.14=fore:#993399,back:#FFFFFF
    #Standard UDF's
    style.au3.15=fore:#0080FF,back:#FFFFFF
    ContinuousComment.LFpos.*.au3=170
    ContinuousComment.Chars.*.au3=;
    ContinuousComment.BreakCharsLast.*.au3=˜ ˜ ›
    ContinuousComment.BreakCharsNext.*.au3=›
    # 36 Comment Continuous
    command.name.36.*=Kommentarmodus aktivieren
    command.36.*=CommentModeActivate
    command.mode.36.*=subsystem:lua,savebefore:no
    command.shortcut.36.*=Ctrl+Shift+K
    # END => DO NOT CHANGE ANYTHING BEFORE THIS LINE #-#-#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    [/autoit]

    Hab ich was übersehen?

    Gruß
    Pitter

    Gruß
    Pitter

  • Ja ok... mein Fehler mit dem Editieren vor der Endmarkierung...
    Hab nur Deine Comments entfernt und ansonsten Deine Vorgaben übernommen.
    Komischerweise hat das mit der Vorversion von Gestern so weit funktioniert, wobei ich den Zeilenumbruch nciht probiert hatte.

    Jedenfalls kann ich den Kommentarmodus nicht per Shortcut ein/ausstellen.
    Der Mauszeiger wird über das manuelle Aktivieren über den Reiter Tools geändert, die gerade markierte Zeile wird auch mit dem ";" als Edit gekennzeichnet, aber mit den Pfeiltasten kann ich nciht mehr die nchste Zeile als Kommentar markieren....

    Gruß
    Pitter

    • Offizieller Beitrag

    Das ist unerklärlich, aber was ähnliches habe ich im EN-Forum. Wie es scheint ist LUA zu schnell.
    Bitte füge mal diese Funktion:

    Code
    local pause = function() local s = '' for i=1,100 do s = s .. ' ' end end


    in das Skript am Anfang bei den Deklarationen ein.
    Anschließend änderst du die Funktion "CommentHitKey:OnKey(_keycode)" wie folgt.


    Ist nur eine geringe Verzögerung, aber das könnte es bringen.

  • Wie schon in der Shoutbox geschrieben...
    Vorgaben:
    SCiTE-Version:
    Version 2.28

    AutoIt-Version:
    3.3.8.1

    • Änderungen in der LUA eingepflegt
    • ContinuousComments[0.4].lua entsprechend umbenannt und in den LUA-Ordner kopiert
    • SciTEStartup.lua editiert.
    • Folgende Einträge in der SciTEUser.properties vorgenommen:

      Spoiler anzeigen
      [autoit]


      ContinuousComment.LFpos.*.au3=170
      ContinuousComment.Chars.*.au3=;
      ContinuousComment.BreakCharsLast.*.au3=˜ ˜ ›
      ContinuousComment.BreakCharsNext.*.au3=›
      # 36 Comment Continuous
      command.name.36.*=Kommentarmodus aktivieren
      command.36.*=CommentModeActivate
      command.mode.36.*=subsystem:lua,savebefore:no
      command.shortcut.36.*=Ctrl+Shift+K

      [/autoit]


    Der Mauszeiger ist aktiv (Hand), die aktive Zeile wird als Komment richtig markiert.
    Ein Wechsel der Zeile mittels Pfeil-down wird durchgeführt, aber in der Zeile wird dann kein Kommentar-Zeichen eingesetzt.
    Bei weiteren Pfeildown Events wird auch nciht ans Ende der jeweiligen Zeile gesprungen.

    Das sind meine Beobachtungen dazu.

    Wie schon geschrieben... bin gerne bereit hier noch mehr Ursachenforschung zu betreiben... ;)

    Gruß
    Pitter

    Gruß
    Pitter

  • Hallo BugFix,
    ich habe da ein Problem mit dem LUA-Script.
    Zuerst mal meine "SciteUser.properties"-Datei:

    Spoiler anzeigen


    ContinuousComment.LFpos.*.au3=170
    ContinuousComment.Chars.*.au3=;
    ContinuousComment.BreakCharsLast.*.au3=˜ ˜ ›
    ContinuousComment.BreakCharsNext.*.au3=›
    ContinuousComment.NewLine.WithEnter.Enable.*.au3'

    # 36 Comment Continuous
    command.name.36.*=Activate Comment Mode
    command.36.*=CommentModeActivate
    command.mode.36.*=subsystem:lua,savebefore:no
    command.shortcut.36.*=Ctrl+Shift+K

    Das Script habe ich auch an die Richtige Stelle kopiert und in der Datei steht:
    LoadLuaFile("ContinuousComments.lua")
    dies an letzter Stelle (also nach EventClass:BeginEvents()).

    In dem LUA-Script habe ich dies:

    Spoiler anzeigen

    function CommentHitKey:OnKey(_keycode)
    local Keycode = _keycode or nil -- Sinnfrei, nur zum Abbremsen <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv
    local fBreak = isLFpos()
    if _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel)
    fNext = true -- Marker neue Zeile
    elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel)
    fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile
    elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen
    fNext = false
    if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert):
    editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen
    end
    ContinuousComment()
    end
    end
    return nil
    end


    (die Ergänzung die in deinem ersten Post steht
    eingefügt (die alten Programmzeilen habe ich vorher gelöscht).

    Nun das Problem:
    Wenn ich in einem AutoIt-Script den Kommentarmodus mit dem Hotkey einschalte, so wird ein ; gefolgt von einem Leerzeichen eingefügt und das Cursorsymbol ändert sich richtig.
    Aber es erfolgt kein automatischer Zeilenumbruch nach den vorgegebenen 170 Zeichen.
    Auch wenn ich einen manuellen Zeilenumbruch, mit der Pfeiltaste einfüge, geschieht nichts.
    Wenn ich die Eingabetaste betätige so wird zwar eine neue Zeile angefangen, aber es erscheint kein ; mehr am Zeilenanfang.
    Und der Kommentarmodus lässt sich auch nicht mit dem Hotkey beenden.
    (da sich der Modus aber damit einschalten lässt bedeutet das der Hotkey auch erkannt wird).

    Ich habe auch einmal das Zeichen für den Zeilenanfang (die Zeile ContinuousComment.Chars.*.au3=;
    ) in der SciTEUser.properties"-Datei
    geändert um festzustellen ob die Einträge überhaupt ausgewertet werden.
    Das funktionierte aber.
    Nur die anderen Einträge scheinen keine Auswirkung zu haben.

    Kann es etwa sein dass mein Rechner (Pentium III 500) zu langsam ist ?
    Achja, ich verwende die AutoIt-Version 3.3.8.1 und die SciTE-Version 2.27 (die an AutoIt angepasste Version).

    MfG:
    BigRox