AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte UnitOptimizer

UnitOptimizer

Ein Thema von stahli · begonnen am 25. Mai 2018 · letzter Beitrag vom 2. Apr 2020
Antwort Antwort
Seite 11 von 11   « Erste     91011
Benutzerbild von stahli
stahli
Registriert seit: 26. Nov 2003
Ich bin dabei, ein Tool aufzubauen, das Units sortiert und Code ergänzt.

Es ist quasi eine Klassenvervollständigung, Codeformatierung und Codesortierung in einem.

Hier mal ein aktueller Zwischenstand als Video: https://youtu.be/cfKa3wuoEd0

Eine direkte Codeformatierung (Einrückung) habe ich noch nicht drin, will das aber auch noch ergänzen. Die anderen Features gehen für mich aber vor.

Die Abkürzung "prop" könnte man auch mit "property" ausschreiben lassen. Ebenso sind optional andere Voreinstellungen möglich, wenn dies gewünscht würde. Ich bin zunächst erst einmal von meinen Wünschen ausgegangen.

Ich würde das später sehr gern kommerziell anbieten, wenn es Nachfrage gibt.
Für öffentliche Tests ist es noch etwas früh. Dazu muss ich noch einiges ausbauen und ausbessern.
Sofern jemand Erfahrungen mit den OTA hat und daran mitarbeiten möchte, dann gebt Bescheid...



Ich hatte dazu schon einen Thread, der sich aber speziell auf die Interface-Unterstützung bezogen hatte. Da das Tool aber Units allgemein bearbeitet habe ich hier einen neuen Thread eröffnet.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
 
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#101
  Alt 8. Mär 2020, 21:13
Sorry, da waren doch noch ein paar Fehler drin.
Ich hatte die Ergebnisse nur optisch geprüft und nicht beachtet, dass ich zuvor mit einem falschen Stand weiter gearbeitet hatte.

Also anbei eine aktualisierte Exe.

Ich habe jetzt auch schon zumindest 2 echte Units innerhalb Delphi formatieren lassen (Ctrl-Shift-O anstatt Ctrl-D), was wunderbar funktioniert hat.
Compilieren kann ich die Units wie zuvor und das Styling ist weitestgehend wie erhofft, aber im Detail muss ich mir das nochmal ansehen (bin allerdings ziemlich platt nach Durcharbeiten am Wochenende ).

Ich stelle Euch auch gern mal ein Package zur Einbindung als Delphi-Experten zur Verfügung, bin aber nicht sicher, was man dazu (ohne Quelltext) weiter geben muss.
Anbei mal eine Zip. Ich bin aber nicht sicher, ob die reicht (kompiliert für D 10.3.2. CE).

Natürlich solltet Ihr das Tool noch vorsichtig einsetzen.
Die Änderungen lassen sich mit Ctrl-Z rückgängig machen, aber es ist natürlich auch möglich, dass das Tool mal abstürzt oder sich aufhängt. Ist halt noch eine frühe Phase!
Ich werde es jetzt jedenfalls selbst regelmäßig benutzen und ständig verbessern...

Wenn jemand Interesse oder Tipps hat, dann gebt bescheid...
Angehängte Dateien
Dateityp: zip UnitOptimizer-Testversion2b.zip (1,23 MB, 5x aufgerufen)
Dateityp: zip UnitOptimizerIDE.zip (835,4 KB, 4x aufgerufen)

Geändert von stahli ( 8. Mär 2020 um 23:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#102
  Alt 15. Mär 2020, 19:17
noch ein neuer Stand...
Es ist jetzt soweit, dass es schon ganz gut real einsetzbar ist.

Der ganze Komplex der Codevervollständigung fehlt noch.
Was jetzt enthalten ist, wird etwa die kostenfreie Codeformatierung sein (+/- einige Features).

Hat jemand das Tool mal als Experten eingebunden und getestet?

Jetzt werden Bookmarks und Breakpoints erhalten und ggf. mit dem Quelltext zusammen verschoben (auch später, wenn mal ganze Codeteile verschoben werden).

Das Zusammenklappen der erzeugten Getter&Setter-Regionen funktioniert noch unzuverlässig.
Das System habe ich noch nicht richtig verstanden. Hat da jemand Erfahrung und kann helfen?

Bin gespannt...
Miniaturansicht angehängter Grafiken
uo-collaps.jpg  
Angehängte Dateien
Dateityp: zip UnitOptimizerIDE - Testversion2c.zip (92,5 KB, 4x aufgerufen)
Dateityp: zip UnitOptimizer - Testversion2c.zip (1,26 MB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#103
  Alt 17. Mär 2020, 23:30
Hmm...

Also die Widerherstellung der Bookmarks und Breakpoints nach der Codeformatierung habe ich im Griff.
Auch das Zuklappen der "Getter+Setter"-Regionen funktioniert.

Allerdings sind die ToolsAPI aus meiner Sicht nicht sehr eingängig.

Eigentlich würde ich aber nach dem Formatieren schon gern die Regionen wieder so auf- und zugeklappt herstellen, wie sie vor der Formatierung waren.

Die besten Infos zum Thema habe ich hier gefunden:
https://parnassus.co/mysteries-ide-p...ed-elided-code
Allerdings übersteigt das meine Fähigkeiten und ist mir zu heikel, so etwas zu realisieren.

Weiß jemand evtl, wie die IDE die Informationen über auf- und zugeklappte Regionen speichert und diese wieder herstellt?

Wenn es keine machbare Lösung gibt, kann ich auch mit meiner bisherigen Lösung leben.
Eine komplette Wiederherstellung des vorherigen Standes wäre mir aber schon noch lieber.
  Mit Zitat antworten Zitat
dummzeuch
Online

 
Delphi 2007 Professional
 
#104
  Alt 18. Mär 2020, 08:15
Ich habe in GExperts (insbesondere im Code-Formatter) mit Code-Folding / Unfolding herumexperimentiert, es aber irgend wann aufgegeben. Es ist den Aufwand einfach nicht wert (zumindest für mich persönlich).

Das Verschieben der Bookmarks und Breakpoints ist auch ziemlich aufwändig. Ich habe es einigermaßen hinbekommen, aber perfekt ist es definitiv nicht. Wenn das bei Dir besser klappt: Hut ab!

Die Einstellungen zum Code Folding werden anscheinend in der .dsk-Datei des Projekts gespeichert, und zwar im Eintrag "Elisions" des jeweiligen Views:

Code:
[View0]
CustomEditViewType=TEditView
Module=D:\source\test\Unit1.pas
CursorX=1
CursorY=9
TopLine=1
LeftCol=1
Elisions={{10,23},{15,6},{''}}
Bookmarks=
EditViewName=D:\source\test\Unit1.pas
Ob Dir das allerdings hilft, ist fraglich, denn die Datei wird anscheinend erst beim Schließen des Projekts aktualisiert.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#105
  Alt 18. Mär 2020, 10:09
Danke.

Ich könnte mir vorstellen, das Speichern und Laden der Regionen-Zustände nachzubauen und um den Aufbereitungsprozess zu setzen.

Aber es gibt da offenbar so viele unterschiedliche Module und Daten, die da zusammenspielen, dass das ziemlich unsicher wäre, alles stabil zu händeln.
Wenn es eine übersichtliche Zusammenfassung gäbe oder die Quelltexte einsehbar wären, würde ich das mal versuchen. So ist das aber wohl zu unübersichtlich. Haben andere offenbar auch schon so eingeschätzt.

Worauf basiert die Delphi-IDE eigentlich? Anscheinend gibt es da eine gemeinsame Basis zu Visual Studio und anderen Editoren. Jedenfalls landet man mit Suchbegriffen aus den ToolsAPI auch öfter bei MS und in anderen Bereichen.
  Mit Zitat antworten Zitat
dummzeuch
Online

 
Delphi 2007 Professional
 
#106
  Alt 25. Mär 2020, 10:38
Zum Thema Teilformatierung:

Das kann man genauso implementieren wie die Positionen der Breakpoints:
  1. Anfangs- und Endzeile der Markierung bestimmen
  2. Marker setzen, die mit verschoben werden
  3. Gesamten Text formatieren
  4. Die beiden Marker suchen und die markierten Zeilen durch den formatierten Text dazwischen ersetzen

Das ist in GExperts so implementiert. Es funktioniert nicht perfekt, aber für mich gut genug.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#107
  Alt 25. Mär 2020, 10:53
Ja, ok, so wäre das machbar.

ABER:

1.) wäre trotzdem die gesamte Unit "bearbeitet" also wäre die gelbe Markierung links komplett über die gesamte Unit

2.) erkenne ich keinen Vorteil einer solchen teilweisen Formatierung. Schneller wäre es nicht und u.U. passt der Bereich dann nicht zum Umfeld, welches nicht "korrekt" formatiert wurde.

Wichtiger fände ich es statt dessen, genügend Optionen zur Verfügung zu stellen, so dass die Formatierung einer gesamten Unit akzeptiert und nicht als nachteilig empfunden wird.

NACHTRAG: Bezüglich fehlenden Ends usw. könnte ich mir vorstellen, an der Stelle einen Fehlerhinweis einzublenden und die Formatierung komplett zu verwerfen. Das habe ich aber noch nicht versucht umzusetzen...


Was mich aber in der aktuellen Arbeit stört, sind die Standardvorgaben von Delphi. Z.B. werden neue Zeilen und Anweisungen nach "Delphi-Regeln" erzeugt, die sich nicht zu "meinen Formatierungen" passen. Das sieht daher bei neuen Zeilen z.T. ziemlich wüst aus, bis ich dann Ctrl-Shift-O bzw. jetzt auch Ctrl-D drücke.

Cool wäre eine smarte Formatierung im Hintergrund, die den geschriebenen Text fließend optimiert, aber das wird mit Delphi nichts werden, denke ich.

Geändert von stahli (25. Mär 2020 um 11:08 Uhr)
  Mit Zitat antworten Zitat
dummzeuch
Online

 
Delphi 2007 Professional
 
#108
  Alt 25. Mär 2020, 11:06
Ja, ok, so wäre das machbar.

ABER:

1.) wäre trotzdem die gesamte Unit "bearbeitet" also wäre die gelbe Markierung links komplett über die gesamte Unit
Wieso? Wenn Du nur die markierten Zeilen ersetzt und den Rest beibehältst, passiert das doch nicht.

2.) erkenne ich keinen Vorteil einer solchen teilweisen Formatierung. Schneller wäre es nicht und u.U. passt der Bereich dann nicht zum Umfeld, welches nicht "korrekt" formatiert wurde.
Aha, ein Purist.

Vorteil ist, dass man an einer Unit nur genau den Bereich ändert, den man bearbeitet hat. Ein Vergleich mit vorherigen Versionen der Unit (im SCM) zeigt also auch nur dort Änderungen.

Wichtiger fände ich es statt dessen, genügend Optionen zur Verfügung zu stellen, so dass die Formatierung einer gesamten Unit akzeptiert und nicht als nachteilig empfunden wird.
Es geht ja nicht darum, dass einem das neue Format gefällt, man will auch echte Änderungen erkennen können bzw. die Formatierung auf neuen bzw. geänderten Code beschränken. Der Rest soll unverändert bleiben.

Cool wäre eine smarte Formatierung im Hintergrund, die den geschriebenen Text fließend optimiert, aber das wird mit Delphi nichts werden, denke ich.
Ich glaube das würde mich wahnsinnig machen.
Thomas Mueller

Geändert von dummzeuch (25. Mär 2020 um 13:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#109
  Alt 25. Mär 2020, 11:31
Ja, ok, ist auch nachvollziehbar (das mit der Teilformatierung, nicht mit der Smart-Formatierung ).

Mal sehen, ich schaue mir das später mal mit an...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#110
  Alt 2. Apr 2020, 17:27
Hier mal eine neue Testversion.

Die RichEdits mit dem alten und neuen Quelltext werden jetzt immer synchronisiert und auf Wunsch die Zeilen nummeriert: https://youtu.be/qH-kT2I5q6g

Als nächstes werde ich jetzt die Umsortierung des Implementationsteils angehen.
Angehängte Dateien
Dateityp: zip UnitOptimizer-Testversion3.zip (1,23 MB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 11 von 11   « Erste     91011

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf