SciTE - Variablen- und Funktions- Tipp (CallTipp oder Konsolenausgabe) per HotKey od. Kontextmenü, Suche nach Variable [v0.11]

    • Offizieller Beitrag

    Edit 18.12.2016
    Geänderte Version hier: TipTool v0.1

    aktuelle Version: v0.11

    Edit: 12.02.2013
    Alle Edits zusammengefaßt, in aktueller Version Pfad zu eigenen Lua-Skripten über property definiert.

    Es tauchte die Frage nach einer Möglichkeit auf, zu Variablen Kommentare zu vermerken, die jederzeit im Skript abrufbar sind ohne auf diesen Kommentar zu scrollen.
    Ich habe das mal mit einem LUA-Skript gelöst, zusätzlich können auch Tipps zu Funktionen hinterlegt werden.

    - Im AutoIt-Skript wird eine Region erstellt, in der die Variablen-Tipps angelegt werden (Schreibweise exakt so, wie hier ersichtlich)

    [autoit]

    #region - Variablen-Tipp; $Variable1 Das ist der Tipp für diese Variable (1); $Variable2 Das ist der Tipp für diese Variable (2); $Variable3 Das ist der Tipp für diese Variable (3)#endregion

    [/autoit]


    oder
    - Es wird eine Kommentarzeile mit Tag (einfach ein @ direkt nach dem Semikolon) erstellt, irgendwo im Skript:

    [autoit]

    ;@ $Variable1 Das ist der Tipp für diese Variable

    [/autoit]


    oder
    - Direkt nach dem Erstellen der Variable wird in der Folgezeile mit "-1" auf diese Variable verwiesen:

    [autoit]

    $GuiMain = GuiCreate(...);-1 Das ist der Kommentar zur Variable in der Zeile zuvor

    [/autoit]


    oder

    [autoit]

    Func _Irgendeine_Funktion($_arg1, $_arg2) ;-f Das ist der Tipp zur Funktion\nDas ist die zweite Zeile zu diesem Tipp

    [/autoit]

    • Es können alle Tipp-Deklarationen parallel genutzt werden
    • Mehrfachverwendung von Variablen in unterschiedlichen Funktionen und/oder Global möglich.
    • Tipps werden im Zusammenhang mit dem Gültigkeitsbereich behandelt
    • Tipp muß immer im Gültigkeitsbereich erstellt werden, also Global oder in der jeweiligen Funktion.
    • Multiline-Tipps mit \n als Markierung für den Zeilenumbruch
    • Aufruf per Hotkey oder Kontextmenü

    Anwendung:
    • Den Cursor in die Variable stellen, Hotkey/Kontextmenü aufrufen und der Tipp wird als CallTip angezeigt/ in die Konsole ausgegeben.

    Ausgabe:
    !> $iSelf [ Local: Func _TimeOver() ]
    >> Tipp zu iSelf

    Das Skript enthält weiterhin die Möglichkeit, anhand eines Teil-/Begriffs aus den Variablentipps nach einer Variablen zu suchen.
    • Begriff aus der Beschreibung (oder Wortteil) dort eingeben, wo die Variable hin soll.
    • Cursor in den Begriff setzen (nicht daneben)
    • Funktion aufrufen (Hotkey oder Kontextmenü)
    • je nach Voreinstellung werden alle Variablen, in deren Beschreibung das Suchwort enthalten ist, zusammen mit Beschreibung in die Konsole ausgegeben oder in einer Userliste zur Auswahl angezeigt
    • bei Konsolenausgabe wird der Suchbegriff im Editor gelöscht
    • bei Userlistauswahl wird an Stelle des Suchworts die gewählte Variable in den Editor eingefügt
    Um die Auswahl in der Userlist zu überwachen, ist eine weitere Datei "VarGetTip_ListEvent.lua" erforderlich. Diese muß in der "SciTEStartup.lua" am Ende geladen werden.

    In den User properties habe ich jetzt eine Variable für den Speicherort eigener Lua-Skripte erstellt.
    Es ist nicht unbedingt sinnvoll eigene Skripte mit den vorinstallierten Skripten zu vermischen.
    Wenn ihr jedoch im Standard-Lua-Ordner die Skripte speichert, verwendet für diese property:
    Lua.User.Scripts.Path=$(SciteDefaultHome)\LUA, ansonsten den Pfad zu eurem Ordner aber ohne abschließenden Backslash. Der Backslash fungiert in propertie-Dateien als Fortschreibungszeichen zur nächsten Zeile.

    Manuelle Installation

    SciTEUser.properties
    SciTEStartup.lua
    Code
    -- .......
    -- .......
    -- Start up the events (Calls OnStartup()).
    EventClass:BeginEvents()                                                      ---- erst nach dieser Zeile eigene Skripte aufrufen!
    
    
    LoadLuaFile("EdgingSelection.lua", props["Lua.User.Scripts.Path"].."\\")      ---- paariges Einfassen
    LoadLuaFile("AutoStampSaveVersion.lua", props["Lua.User.Scripts.Path"].."\\") ---- Zeitstempel, Versionsbackup
    LoadLuaFile("EditOperations.lua", props["Lua.User.Scripts.Path"].."\\")       ---- Repeat, Go, Delete, SwapLines
    LoadLuaFile("VarGetTip_ListEvent.lua", props["Lua.User.Scripts.Path"].."\\")  ---- Listenzugriff VarGetTip


    Hinweis zum Kontextmenü:
    Die property "user.context.menu" ist für das Userkontextmenü zuständig.
    Die Einträge erfolgen immer in der Art:
    user.context.menu=||NAME_MENÜPUNKT_1|11 & COMMAND-NR|
    Um einen Leereintrag zu erstellen einfach statt einfacher Pipe "|" eine 3-fach Pipe "|||" verwenden zwischen zwei Einträgen.

    Installation per Skript
    Ist geplant, da die aktuelle SciTE-Version aber deutliche Änderungen in den SciTEUser.properties enthält kann ich das alte Installationsskript nicht weiterverwenden. Da muß ich jetzt ein Skript erstellen, das auch abwärtskompatibel ist (mehr Aufwand als das Lua-Skript selbst :D).

    VarGetTipp.lua (v0.11)

    Hier mal im Bild beide Varianten der Variablesuche über einen Teil-/Begriff des Variablentipps:
    autoit.de/wcf/attachment/19152/


    DL bisher: 33

    • Offizieller Beitrag

    Funktionieren auch mehrer Bereiche?
    Habe das Script noch nicht getestet, bin auch zu müde dazu.

    [autoit]

    #region - Variablen-Tipp

    [/autoit][autoit][/autoit][autoit]

    #endregion

    [/autoit]


    Finde es ein wenig nervig, wenn man alles in 1 Block machen müßte.

    • Offizieller Beitrag

    Momentan wird nach dieser einen Region gesucht.
    Ich finde das eigentlich recht übersichtlich, am Skriptanfang werden alle Variablen generiert (zumindest ist es sinnvoll dieses zu tun) und dann kann man anschließend die Tipps dazu erstellen. Schön übersichtlich. ;)
    Es läßt sich natürlich auch ein anderer Weg wählen, bin für alles offen.
    z.B. den Tipp in eine Kommentarzeile schreiben, die mit einem definierten Tag beginnt, dann kann man überall und jederzeit solch einen Kommentar ablegen, etwa so:

    [autoit]

    ;@ $Variable Und hier der Tipp zur Variable

    [/autoit]


    Kann ich auch gerne in diese Form bringen.

    • Offizieller Beitrag
    Zitat

    z.B. den Tipp in eine Kommentarzeile schreiben, die mit einem definierten Tag beginnt, dann kann man überall und jederzeit solch einen Kommentar zur Variable


    Finde ich viel komfortabler als alles in 1 Block zu quetschen.

    • Offizieller Beitrag

    Unmögliches wird sofort erledigt, nur Wunder dauern etwas länger. :D
    Jetzt sind beide Varianten möglich. Jeder nach seinem Geschmack. Per properties-Eintrag legt man fest, ob der Tipp in einer Region steht oder in einer Tag-markierten Kommentarzeile.
    s. Post #1

  • Hallo BugFix,

    Was ist mit verschiedenen Gültigkeitsbereichen? Die werden wahrscheinlich nicht beachtet, oder? Wäre doch eventuell praktisch: Man könnte Variablen mit gleichem Namen in unterschiedlichen Funktionen unterschiedliche "Tipps" zuweisen.

    Auch würde es Schreibarbeit ersparen, wenn man zum Beispiel mit einem einfachen ;@ [TIPP] die zuletzt als L-Wert verwendete Variable mit einem Tipp versehen könnte.

    [autoit]

    $Variable1 = 245
    ;@ Das ist der Tip für $Variable 1
    ConsoleWrite($Variable & @CRLF)
    $Variable2 = StringLeft($Variable1,2)
    ConsoleWrite($Variable & @CRLF)
    ;@ Hier kommt noch der Tipp für $Variable2

    [/autoit]

    Gruß

    • Offizieller Beitrag

    Man könnte Variablen mit gleichem Namen in unterschiedlichen Funktionen unterschiedliche "Tipps" zuweisen.

    Theoretisch ist es schon machbar den Scope, in dem die Variable sich befindet mit zu Rate zu ziehen. Aber ist das sinnvoll? Außer bei Zählervariablen sollte man es als Dogma betrachten: Niemals einen Variablennamen zweimal verwenden. Das erspart viel Fehlersuche. Einzige Doppel, die Sinn machen sind z.B. $sRead, $sTmp etc. - also Variablen die nur kurzzeitig belegt werden und da ist eine Beschreibung überflüssig.

    die zuletzt als L-Wert verwendete Variable

    Sorry, aber da stehe ich auf dem Schlauch. Was um Himmels Willen ist ein "L-Wert"? :wacko:

  • Niemals einen Variablennamen zweimal verwenden. Das erspart viel Fehlersuche. Einzige Doppel, die Sinn machen sind z.B. $sRead, $sTmp etc. - also Variablen die nur kurzzeitig belegt werden und da ist eine Beschreibung überflüssig.


    Also ich verwende oft gleiche Variablennamen - eben bei den von dir angesprochenen Fällen. Da gibt's aber nicht nur $sRead und sTmp, sondern auch $sString, $aArray, $aReturn, $sReturn, $hDC, $hBitmap, $hHBitmap, $aSplit, $iCount, $hWnd, $sTitle, usw usw.. Ich persönlich, fänd's sinnvoll - ob du das einbaust oder nicht, bleibt dir überlassen. Es war nur eine Idee.

    Sorry, aber da stehe ich auf dem Schlauch. Was um Himmels Willen ist ein "L-Wert"?


    Der L-Wert ist der Wert auf der linken Seite einer Zuweisung. $L_Wert = $R_Wert
    http://de.wikipedia.org/wiki/Variable_…t_von_Variablen

    • Offizieller Beitrag

    Der L-Wert ist der Wert auf der linken Seite einer Zuweisung. $L_Wert = $R_Wert


    OMFG :rofl:
    Wer erfindet bloß dauernd diese Abkürzungen?
    Aber das ist sicher ein brauchbarer Aspekt, wobei ich da die Notation mit dem AutoIt-üblichen "-1" sinnvoll finde. Also:

    [autoit]


    $Variable = .....
    ;-1 Kommentar dazu

    [/autoit]


    Nehme ich mal in meine Liste auf.

  • Hallo BugFix,
    ich habe dein LUA-Script einmal ausprobiert.
    Leider ohne Erfolg.
    Das Script habe ich ins ins LUA-Verzeichnis kopiert ("C:\Programme\AutoIt3\SciTE\LUA\VarGetTipp.lua")
    In der Datei "ScoiTEUser.properties" habe ich folgendes eingetragen:

    Spoiler anzeigen


    command.37.*.au3=dofile $(SciteDefaultHome)/Lua/VarGetTipp.lua
    command.mode.37.*.au3=subsystem:lua,savebefore:no
    command.shortcut.37.*.au3=Ctrl+Alt+V
    Variable.Tipp.Region.*.au3=1 (1=in Region, 0=mit Tag)
    Variable.Tipp.CallTip.*.au3=1 (1=als CallTip, 0=Ausgabe in Konsole)

    Zum Testen verwende ich dieses (zugegeben sehr einfache) Script:

    [autoit]


    ; -----------------------------------------------------------------------------------------------------------------------------
    ; Script Funktion: Testdatei für AutoIt-Scripte Version: 3.3.8.1, Script Autor: BigRox
    ; -----------------------------------------------------------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    #region - Variablen-Tipp
    ; $Variable1 Das ist der Tipp für diese Variable (1)
    ; $Variable2 Das ist der Tipp für diese Variable (2)
    ; $Variable3 Das ist der Tipp für diese Variable (3)
    #endregion

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $Variable1

    [/autoit]


    Aber wenn ich den Cursor auf die Variable setze und den Hotkey betätige, geschieht nichts.

    Ich habe auch einmal das LUA-Script von "InsertFunctionHeader.lua" von Raupi ausprobiert und das funktioniert einwandfrei bei mir.
    Also funktioniert das mit den LUA-Scripten anscheinend.
    Aber irgendetwas habe ich dann doch wohl bei deinem Script falsch gemacht.

    MfG:
    BigRox

    • Offizieller Beitrag
    Code
    Variable.Tipp.Region.*.au3=1 (1=in Region, 0=mit Tag)
    Variable.Tipp.CallTip.*.au3=1 (1=als CallTip, 0=Ausgabe in Konsole)


    Das in den Klammern darf NICHT mit in den properties stehen, das war nur eine Erläuterung der Parameter. Also nur 0 oder 1 hinter dem = ;)

  • Hallo BugFix,
    das:

    Das in den Klammern darf NICHT mit in den properties stehen, das war nur eine Erläuterung der Parameter. Also nur 0 oder 1 hinter dem =


    habe ich eben gemacht.
    Ergebnis:
    Es geht immer noch nichts.
    Da ist also noch irgend etwas anderes falsch.

    MfG:
    BigRox

    • Offizieller Beitrag

    Neue kpl. überarbeitete Version:
    - Mehrfachverwendung von Variablen in unterschiedlichen Gültigkeitsbereichen wird berücksichtigt ( [ Local Funktionsname() ] oder [ Global ] )
    - Tipp-Deklaration kann parallel in Region oder Tag/Folgezeile erfolgen (properties-Eintrag für Region entfällt)
    v0.7 in Post #1

  • Hallo BugFix,
    ich habe es jetzt mit der neuen Version deines Scriptes (v0.7) getestet.
    Den properties-Eintrag für Region habe ich auch entfernt.
    Ich habe auch einmal den Hotkey zum aufrufen geändert, um eine eventuelle Doppelbelegung auszuschließen).

    Ergebnis:
    Es geht immer noch nicht.
    (auch das mit -1 geht nicht)

    MfG:
    BigRox