• Sorry, dass ich nach meinen letzten Änderungswünschen nichts mehr dazu geschrieben habe. Hatte leider erst heute Zeit mir die aktuelle Version anzusehen. Erstmal vielen Dank für die Änderungen. Einige Dinge wurden allerdings noch nicht geändert/gefixt, daher möchte ich diese nochmal kurz auflisten:

    1. Skriptbaum
    - Variablen ohne Deklaration werden nicht gefunden, z.B. eine globale Variable am anfang ohne dim/global davor (ok das ist so auch unschön)
    - Speichern des Scripts klappt alle Punkte des Scriptbaums wieder auf, anstatt die alte Klappeinstellung nach dem Update des Baums wiederherzustellen

    Zitat

    Bugfix: Nachträglich aufgeklappte Elemente im Skriptbaum bleiben nun wieder geöffnet wenn zb. gespeichert wird


    Bei mir nicht, bzw zugeklappte Elemente bleiben nicht zugeklappt, es werden nach dem Speichern per "Disketten-Button" nachwievor alle Elemente aufgeklappt und zum Ende des Baumes gescrollt.

    2. Projektbaum

    Zitat

    Bugfix: Im Projektbaum werden Dateien nun richtig sortiert


    Sie werden jetzt alphabetisch sortiert, primär nach typ und sekundär alphabetisch wäre mir aber lieber.

    3. "Alle Tabs schliessen" fehlt (alle speichern gibt es...)
    Danke fürs einbauen, aber leider gibt es damit massive Performance Probleme (siehe unten)

    4. Verhalten bei vielen offenen Tabs
    + Fix für 20 tabs Array Fehler ist ok
    - Leider gibt es nachwievor massive Performance Probleme beim Öffnen vieler tabs in kurzer Zeit
    - Das wechseln zwischen den Tabs ist teilweise extrem langsam und blockiert nach wenigen Tabwechseln für mehrere Minuten (scheinbar kein Caching der Scriptbäume?)
    - "Alle tabs schliessen" blockiert ebenfalls / ist langsam, weil die Tabs der Reihe nach angezeigt werden bevor sie letztlich geschlossen werden
    - Mögliche Lösung: Caches für die Scriptbäume aller offenen Dateien und eine Auslagerung der Scriptbaum Erstellung in separaten "Rechenprozess" damit die GUI weiterhin nutzbar bleibt, auch wenn Teile wie der Scriptbaum noch am laden / aktualiseren sind

    Mein Test 20 Tabs per "Alle Tabs schliessen" zu schliessen dauerte 8min:


    5. Projekteigenschaften ändern

    Zitat

    Ändern der Hauptdatei ist nur in der Projektverwaltung möglich. Daran wird sich nichts ändern.

    Nochmal kurze Erläuterung, warum mich das stört:

    Wenn ich in meinem projekt regelmässig eine neue MyTool_v1.x.au3 (aktuelle Version) anlege möchte ich diese natürlich mit F5 starten können und nicht weiterhin die Vorgängerversion ausführen. Dazu muss aber zunächst in der Projektverwaltung die Hauptdatei geändert werden. Prinzipiell wäre es mir ohnehin lieber wenn F5 grundsätzlich den Quellcode des aktuell geöffneten / angezeigten Tabs ausführt anstatt der Hauptdatei. Oder eben wenn es einen bequemeren und direkteren Weg gäbe die Hauptdatei zu ändern (z.B. Makro-Button "aktuelle Datei als Hauptdatei" festlegen)

  • misterspeed:

    1. Skriptbaum:
    Das mit den Variablen ist klar. Es werden bewusst nur die mit "local" oder "global" gesucht. Und wie du ja selber sagst gobale variablen ohne "global" ist nicht sauber.
    Und wegen dem Aufklappen...das funktioniert schon ABER:
    Bitte beachte welche Einstellungen du in den Programmeinstellungen für den Skriptbaum gesetzt hast! Denn die Einstellungen die dort gesetzt werden, werden IMMER bevorzugt!
    Das heißt wenn du zb. in den Programmeinstellungen die Funktionen automatisch aufklappen lässt...diese aber zwischendurch zuklappst und speicherst werden diese wieder aufgekalppt.
    Wenn du alles selbst "organisieren" willst ist es am bessten du nimmst diese Einstellung für das automatische aufkalppen in den Programmeinstellungen heraus. Dann bleibt der "klappzustand" so wie vor dem Speichern o.Ä.

    2. Projektbaum
    Bitte ein Beispiel

    3./4. Tabs schließen
    Zumindest das schließen der Tabs wird in der Version 0.93 einiges schneller gehen (wenn auch noch lange nicht so wie es sein soll)
    Ich arbeite daran...

    5. Projekteigenschaften
    Du kannst in den Programmeinstellungen alle Hotkeys von ISN bearbeiten. So kannst du zb. den Hotkey F5 (projektstarten) mit F9 (Skript starten) tauschen.
    Zusätzlich kannst du einem Makroslot einen Hotkey zuweisen der dir zb. das kopieren der Hauptdatei abnehmen kann.

    Hoffe es hilft dir etwas!

  • misterspeed:
    2. Projektbaum
    Bitte ein Beispiel

    Im Moment schaut das so bei mir aus:
    [Blockierte Grafik: http://i.imgur.com/ncStIHD.png]

    Schöner wäre es wie gesagt, wenn das primär nach Dateityp sortiert wäre, wobei au3 Dateien grundsätzlich als erstes aufgelistet werden sollten und als weiteres Kriterium alphabetisch innerhalb der Dateityp "Gruppen" sortiert wird. Als Beispiel mal der Projektbaum von Eclipse, hier stehen java Dateien am Anfang, sind alphabetisch sortiert und werden von weiteren Dateitypen gefolgt:
    [Blockierte Grafik: http://i.imgur.com/8NPI3lm.png]


    Zu 1.) und 5.)
    Danke werd ich mal testen, wusste nicht, dass man das global einstellen kann.

    Und zu guter letzt natürlich nochmals Danke und Respekt für das was du hier leistest. ;)

    2 Mal editiert, zuletzt von misterspeed (6. Mai 2013 um 17:21)

  • ISN AutoIt Studio Version 0.93 ist nun online! ;)

    Änderungen Version 0.93 BETA:

    --> ISN AutoIt Studio: <--
    -----------------------------------
    - Bugfix: Bugfix bei der automatischen Konfiguration der Programmpfade im Portable Modus
    - Bugfix: Diverse Bugfixes im "DBUG"-Tool (thx an pandel!)
    - Bugfix: Bugfix im Makro "Programm starten": Lange Parameter (zb. Pfade) können nun mit Anführungszeichen angegeben werden
    - Bugfix: Fehler mit "Datei wurde auserhalb von ISN verändert" wurde endlich behoben!
    - Bugfix: Fehler behoben wo der Projektbaum beim wechseln eines Tabs verschwindet
    - Bugfix: Diverse Bugfixes
    - NEU: Niederländische Sprache hinzugefügt (thx to junkew)
    - NEU: Im Skripteditor werden in der Autocomplete-Box nun Icons angezeigt (Icons orientieren sich nach dem Code-Farbschema (alt/neu))
    - NEU: Neuer Hotkey: Markierte Datei öffnen (zb. Include) (STRG+I)
    - NEU: Wird im Code ein Dateipfad angegeben (zb. "C:\test.jpg") kann diese Datei nun via "Rechtsklick -> Datei öffnen" oder STRG+I geöffnet werden!
    - NEU: Codeausschnitt anzeigen: Rechtsklick auf eine Funktion im Skriptbaum -> "Codeausschnitt anzeigen" wählen. Der angezeigte Ausschnitt kann sogar beliebig bearbeitet werden! :)
    - NEU: Chinesisches Sprachupdate
    - NEU: Laufzeit im Debugfenster wird nun in Format "00:00:00" (hh:mm:ss) angegeben
    - NEU: Das Makro "Programm starten" unterstützt nun auch Pfadvariablen (zb. %projectdir%)
    - NEU: TidySource.au3 wurde entfernt. Der Menüpunkt Tools -> Tidy Source verwendet nun auch das "echte" Tidy! (Data\Tidy\Tidy.exe)
    - NEU: Beim Öffnen eines Projektes können nun die zuvor geöffnete Tabs wiederherstellt werden (muss jedoch in den Programmeinstellungen aktiviert werden!)
    - NEU: Im Menü "Tools" findet ihr nun einen Bit-Operations Tester! (Bitwise operations visualiser by Siao)
    - NEU: Das ISN AutoIt Studio verwendet nun eine neuere Version der SciLexer.dll
    - NEU: Wird im Skript Editor Text markiert wird automatisch nach dem Markieren Wort gesucht und in Echtzeit farblich gekennzeichnet! (Kann in den Programmeinstellungen auch wieder deaktiviert werden)
    - NEU: Neues Makro mit dem du Infomeldungen in das Logfenster des ISN einfügen kannst (Fenster links unten)
    - NEU: Elemente im Projektbaum werden nun nach Dateityp "zusammengefasst" und darin alphabetisch sortiert
    - NEU: In der Projektverwaltung und in den Projekteigenschaften kannst du nun mit dem Button "Hauptdatei ändern" eine andere Hauptdatei für dein Projekt auswählen!

  • Danke sind ja ein paar nette Dinge dabei, gerade die automatische Suche/Markierung finde ich praktisch. Ich vermute du hast das aus performance Gründen auf mind. 4 Zeichen festgelegt?
    Auch vielen Dank für die Dateisortierung des Projektbaumes und die Möglichkeit zur leichteren Änderung der Hauptdatei.


    Zitat

    - NEU: Im Skripteditor werden in der Autocomplete-Box nun Icons angezeigt (Icons orientieren sich nach dem Code-Farbschema (alt/neu))


    Allerdings gibt es hier einen mächtigen Bug, der vermutlich mit deinen Änderungen zusammenhängt. Gebe ich das Zeichen "$" ein läuft deine IDE in meinem 6k Zeilen Script Amok (volle CPU Last, 1GB Ram Verbrauch, langer Hänger). Die Autovervollständigung schlägt btw auch keine selbst programmierten Funktionen mehr vor.


    EDIT:

    Die neue Funktion "Code Ausschnitt anzeigen" ist ebenfalls genial. Schöner wäre es aber, wenn man dies nutzen könnte um mehrere Funktionen in separaten Fenstern darzustellen, z.B. um 2 Funktionen nebeneinander anzuzeigen. Derzeit ist man leider im Fenster gefangen und kann die Hauptgui erst nach dem schliessen des Ausschnitts wieder bedienen. Das Fenster ist außerdem nicht resizeable.

    3 Mal editiert, zuletzt von misterspeed (10. Mai 2013 um 16:00)

  • Allerdings gibt es hier einen mächtigen Bug, der vermutlich mit deinen Änderungen zusammenhängt. Gebe ich das Zeichen "$" ein läuft deine IDE in meinem 6k Zeilen Script Amok (volle CPU Last, 1GB Ram Verbrauch, langer Hänger). Die Autovervollständigung schlägt btw auch keine selbst programmierten Funktionen mehr vor.

    Hmm wenn ich es bei der Studio_Addons.au3 (auch 6k+ lines) teste funktioniert alles normal. Du müsstest ja links unten in der Statusbar einen Fortschritt sehen wenn du $ drückst oder?
    Kannst du mir evtl dein skript zum testen zukommen lassen?
    Und wegen den Funktionen: Die waren da eh nie dabei ^^ (oder etwa doch? :P)

  • Ok ob die Funktionen seither dabei waren kann ich nicht beurteilen, ich programmiere nachwievor mit Scite, da deine IDE aber immer besser wird juckts mich durchaus in den Fingern umzusteigen. Die Funktionen in die Autovervollständigung einzuschließen ist somit dann ein Request. :P

    Nun zum Bug:

    Es scheint weniger mit dem Script selbst zutun zu haben, sondern mit den verwendeten includes, da diese anscheinend ebenfalls geparsed werden. Hier ein Testscript bei dem das Problem auch auftritt.

    [autoit]


    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GUIComboBox.au3>
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiListBox.au3>
    #Include <GuiListView.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <String.au3>

    [/autoit]

    Ich sehe zwar unten die Anzeige "Variablen werden eingelesen...", aber diese bleibt aufgrund der massiven Systemauslastung bei 0% stehen und irgendwann nach sehr langer Zeit erscheint dann auch die Autovervollständigungsliste. Das Programm reagiert auch erst dann wieder auf Eingaben, wenn die Liste erstellt wurde. Man kann den Hänger also nicht durch schnelles tippen minimieren oder vermeiden. Vielleicht solltest du die Includes ausnehmen oder hardcodet hinterlegen, so dass diese nicht jedesmal neu eingelesen werden müssen wenn man in einem Script ein umfangreiches include verwendet. Scite listet diese include Variablen/Konstanten denke ich nur dann auf wenn man sie bereits einmal im eigentlichen Script verwendet hat, kann mich da aber auch täuschen.

  • Ja dieser request wegen den funktionen...das schrieb auch schon einer aus dem englischen Forum :P

    Also Includes werden eigentlich nur die eingelesen die sich im Projekt befinden also nicht die AutoIt includes.
    Ich werde es nachher nochmal testen...
    Eine frage noch: du arbeitest nicht im Editormodus oder?

  • Sorry für die doof Frage... welcher Editormodus? :D
    Ich kenne nur den ganz normalen Modus, also links projektbaum, mittig meine Tabs mit den Scripten und rechts der Skriptbaum. Wenn mit Editormodus der neue Fenstermodus "Scriptausschnitt anzeigen" gemeint war, dann nein, dort hab ich nicht getestet, sondern im "normalen" Modus.

    EDIT: Da passierts btw aber auch. ;)

  • Nein der Editormodus ist der Modus im ISN wo du ohne Projekt arbeitest. (Du kommst in den Editormodus über den Startscreen).
    Da du das aber nicht kennst gehe ich jetzt mal davon aus das du nicht im Editormodus bist xD :P
    Eins könntest du nocht testen: Aktiviere in den Programmeinstellungen -> Skript editor mal die Option das er nur im aktuellen Skript nach variablen suchen soll. Wäre interessant ob er sich dann immer noch aufhängt.

  • Hab nochmal mit einem frischen Projekt getestet und dabei festgestellt, dass es nicht an den Includes liegen kann. Es liegt am Umfang aller im Projektbaum vorhandenen Scripte, da diese anscheinen ebenfalls durchsucht werden und nicht nur das gerade geöffnete Script des Projekts. In meinem Fall befinden sich insgesamt mehr als 30 alte Versionen des 6k Zeilen Scripts im Projekt. Sobald ich diese alten Versionen in das frische leere Projekt importiere tritt der Performance Engpass auf, egal ob ich nur ein Minimal Script bearbeite oder eines der großen Scripte.

    EDIT: Ja mit der Einschränkung auf das aktuelle Script in den Programmeinstellungen kommt es nur noch zu einem Mikrohänger, was akzeptabel erscheint.

  • Ok dan wäre das des Rätzels lösung. 30x6k Skripte...das ist ne ganz schöne belastungsprobe :P :P

    Du hast nun 2 Möglichkeiten:
    1. Wie du schon probiert hast deine "alten" Skripte nicht im Projektordner ablegen

    ODER

    2. Wie oben erwähnt die Option in den Programmeinstellungen zu aktivieren das nur im aktuellen Skript gesucht wird (und nicht im ganzen Projektordner)

  • Ich wähle Variante 2. Allerdings schlage ich vor, dass du das Verhalten der Autovervollständigung trotzdem änderst, denn prinzipiell macht es keinen Sinn die Variablen anderer au3 Dateien vorzuschlagen, wenn diese nicht im Script includet wurden. Sprich du solltest nur dann andere au3 Dateien des Projektes durchsuchen wenn es inkludiert wurde. (und natürlich die Standardinkludes ignorieren, was du ja scheinbar schon machst)

  • Hi ISI360,

    erstmal danke für die vielen Überarbeitungen und Neuerungen. Ich hab das Gefühl, alles in allem läuft es geschmeidiger ;-)! Sehr angenehm...

    Könntest du allerdings bitte mal prüfen, ob bei dir der Debugger läuft, wie erwartet? Ich bekomme zwar das Fenster und er macht und tut, zeigt aber im Editor nicht mehr an, wo er ist, keine Breakpoints usw.. Ich hab schon mit dem Fenster Infotool versucht, was herauszufinden, aber neuerdings bekomme ich das Handle für die Scintilla Komponente nicht mehr angezeigt. Hast du da was an der Integration in das Editor Tab geändert? Ich denke, da liegt irgendwo der Hund begraben, daß das Handle nicht mehr so einfach zu kriegen ist.

    Außerdem ist "[CLASS:Scintilla;INSTANCE:2]" mittlerweile das untere Konsolenfenster und leider nicht der Editor. Der meldet sich im Infotool nur noch mit SysTabControl32...

    Wenn ich genau weiß, was sich da getan haben könnte, pass ich das in der dbug.au3 an und poste ein Update...

    EDIT: aus "[CLASS:Scintilla;INSTANCE:2]" mach "[CLASS:Scintilla;INSTANCE:1]" und es geht wieder ;-))

    Lieber Gruß
    Holger

    Einmal editiert, zuletzt von pandel (14. Mai 2013 um 13:32)

  • ;)

    Ja das mit dem Debuger ist mir auch schon aufgefallen (natürlich erst kurz nachdem ich die neue Version online gestellt hab -.-)
    Und ja anscheinend hat es mit der neuen scilexer.dll zu tun das sich die instance von 2 auf 1 geändert hat.
    Kann zwar nicht wirklich erklären warum aber ja..ist halt so..
    Ich werds im nächsten Update wieder richtigstellen! :)

  • Alles klar, danke für die Info ;)

    Übrigens... ich hab noch eine neue Version der dbug.au3, in der die drei Bereiche Variablen/Befehl/Ergebnis etwas anders gedockt sind. Ich wollte, daß die unteren beiden fix bleiben und sich das Variablenfeld beliebig nach unten und in der Breite aufziehen läßt. Die Variablenliste ist neuerdings per Klick auf die jeweilige Spaltenüberschrift sortierbar (auf und ab) und es gibt einen zusätzlichen Button, mit dem auf Wunsch die Variablenliste autom. immer nach dem folgenden Lauf nach Alphabet sortiert werden kann. Dauert zwar bei vielen Variablen etwas, ist aber zum Suchen wirklich ganz schön!

    Da in deinem Languagefile jetzt alles so schön hineinander ohne Lücken ist, konnte ich dem Button keinen deutschen Text verpassen (hatte gehofft, str820 ist noch frei ;) ). Macht aber nix, geht ja auch so.

    Hier die beiden Files (der zweite Anhang wird hier blöderweise direkt als Bildchen angezeigt... einfach in den IMAGES Ordner kopieren):
    EDIT: passende Anhänge jetzt zwei Postings weiter ;)

    Lieber Gruß
    Holger

    Einmal editiert, zuletzt von pandel (14. Mai 2013 um 23:13)

  • Und wie immer, nix zu danken, die Anpassungen waren ja auch für mich ;-))

    Also, wegen der Langstrings, biddeschön:

    Englisch:
    str875=Sort
    str876=Toggle sorting of variables in alphabetical order
    str877=Sorting changed
    str878=Automatic sorting is disabled beginning with the next step.

    Deutsch:
    str875=Sort
    str876=Variablen aufsteigend sortieren an/aus
    str877=Änderung der Sortierung
    str878=Zum nächsten Schritt wird die autom. Sortierung abgeschaltet.

    Hab dir in dem Posting hier nochmal alles zusammengefasst.

    EDIT: nochmal geändert. Der Knopf verhält sich nicht nur wie ein Schalter, jetzt sieht er auch so aus ;-)!
    -----------------------------------------------------------------------------------------------------------------
    So, und damit dir nicht langweilig wird :D hab ich direkt noch ne Idee...

    Es gibt einen recht gut funktionierenden Profiler für AutoIt: AU3Profiler

    Zum Hintergrund:
    Ich habe gerade einen Editor programmiert, der Scintilla nutzt, aber Styling und Folding wird komplett in AutoIt geregelt, sprich ich nutze keinen der eingebauten Lexer, sondern mache alles selber. Um das aber performancetechnisch zu optimieren, musste ich wissen, welche Routine sich womöglich einen abrackert, aber nicht zu Potte kommt ;) und dafür ist das Teil wirklich Klasse! Wenn du dir die Doku dazu anschaust, dann siehst du, daß man auch zusätzliche Programmzeilen einfügen kann, die sogar innerhalb einer Funktion gezielt einzelne Codezeilen profilen können. Bei mir hat's zumindest gut funktioniert.
    Nachtrag: falls du zufällig mal eine Zeile à la "Exit $rc" verwenden solltest, dann darf, insofern du den Profiler verwenden willst, im Variablennamen kein "return" vorkommen - also sowas wie $returncode - da kackt der Profiler ab; alles andere ist erlaubt ;)

    Und welche AutoIt Programmierumgebung hat schon nen Debugger und nen eingebauten Profiler, hä :P:D:rock: ???

    Viel Spasssss damit ;)

  • Da muss ich dir allerdings recht geben...wäre wirklich besser nur die Skripte zu durchsuchen die auch in der Hauptdatei included sind...ist nicht sonderlich schwer zu realisieren.
    Danke für die Idee ;)

    Ahja ich habe da nochmal darüber nachgedacht, bin mir aber jetzt nicht sicher ob das nicht eh schon so ist. Wenn du "externe" Scripte in die Variablen Suche einbeziehst würde es genügen nur die globalen Variablen/Konstanten zu berücksichtigen, denn lokale Variablen von Includes dürften völlig uninteressant sein. Prinzipiell sind lokale Variablen ohnehin nur innerhalb der aktuellen Funktion relevant, daher würde ich grundsätzlich nur "funktions-lokale" lokale Variablen und globale vorschlagen.

    Beispiel:

    1. Ich befinde mich im Editor gerade außerhalb einer Funktion, was grundsätzlich leicht zu erkennen sein sollte. Dann benötige ich auch nur globale Vorschläge an Variablen.
    2. Ich befinde mich im Editor gerade in Function1(). Jetzt interessieren mich lediglich lokale Variablen die ich in dieser Funkton1() bereits verwende und natürlich auch die globalen Variablen. Lokale Variablen von Funktion2() jucken mich hingegen nicht wirklich.

    Durch diese Einschränkungen kann die Suche möglicherweise beschleunigt werden und die Suchergebnisse fallen deutlich übersichtlicher aus.


    Mir ist dann noch etwas anderes störend aufgefallen:

    Problem: Wenn ich nun eine neue Variable deklariere, so wird diese nicht bei erneuter Nutzung vorgeschlagen.
    Grund: Der Scriptbaum wird erst aktualisiert wenn die Datei gespeichert wird. Solange der Scriptbaum die Variable nicht kennt wird diese auch nicht vorgeschlagen.
    Lösung: Scriptbaum aktualisieren sobald Signalwörter wie "Global" / "Local" oder sofern der Request erfüllt wird auch "Func" in einer Zeile vorkommen die mit "Enter" abgeschlossen wird. Wird eine Zeile gelöscht (oder geändert!) die eines der Signalwörter enthält sollte der Scriptbaum ebenfalls aktualisiert werden.


    Noch ein Request wenn ich schon dabei bin:

    Wenn ich eine Variable deklarieren möchte gebe ich normalerweise "glo" gefolgt von "Enter" ein. Bin ja schreibfaul....
    Nun wenn man schon die Autovervollständigung nutzt könnte die Kurzform "glo" doch auch gleich durch "global $" ersetzt werden, denn nach global/local folgt immer ein Variablenname. Das selbe gilt auch für andere Signalwörter wie z.B. "ReDim".
    Beim Signalwort "EndFunc / EndIf / Next / Wend..." könnte man z.B. auch noch einen Zeilenumbruch, oder wie man es aus manchen Scripten kennt ein Kommentar "EndFunc ; ende functionsname & @CRLF" einfügen. Grundsätzlich werden ja auch Standardfunktionen vorgeschlagen, also z.B. Filecopy. Hier könnte man noch die Klammern einfügen, bei UDF Funktionen oder selbst geschriebenen Funktionen könnte evtl auch noch der Funktionskopf ergänzt werden, so dass man nur noch die Eingabeparameter ändern/ergänzen muss.

    3 Mal editiert, zuletzt von misterspeed (18. Mai 2013 um 15:26)