IDEs/ Entwicklungsumgebungen | | | | - Seite 1 - |
| Sven Bader | Auf Basis von Rolands Open Source XProfEd [...] habe ich eine an meine Bedürfnisse angepasste Version erstellt, welche ich im Sinne des Open-Source-Gedankens auch wieder zur Verfügung stellen möchte.
Herunterladen
Neue Funktionen in der SE-Version
- Parallelbetrieb von bis zu 10 Profan/XProfan Versionen, 1-Klick Wechsel der Version
- Profan2Cpp Integration
- Darkmode und erweitertes Syntaxhighlighting
- Integration von WinMerge, um Quelltexte zu vergleichen (Auswahl oder Dateien)
- Umfangreiche Versionierung/Sicherung von Quelltexten
- Verbesserte Tabs mit Icons und Schließen-Button
- Codeformatierung
- Ein-/Ausrücken, Ein-Auskommentieren und Codeformatierung mit einem Undo-Schritt
- Suchen und Ersetzen auch von Zeilenumbrüchen und Tabs
- Suchfeld in der Toolbar
- Suche automatisch in beide Richtungen
- Per Strg+Klick auf eine Funktion springt man direkt zum entsprechenden Proc oder Def
- Übersetzung von OpenGL Befehlen aus C++
- Farbkonvertierungen per Rechtsklickmenü
- Datei-Öffnen Menü zeigt direkt alle kompatiblen Dateien
- Live-Syntaxhilfe in der Statusleiste
- Farbvorschau in der Statusleiste
- Sprung zur letzten Position mit Strg+B
- F5 als Hotkey zur Aktualisierung der Navigation
- Navigationsspalte per Drag&Drop vergrößerbar
- Header-Dateien in Navigationsspalte öffnen auf Klick
- Kommentare für mehrere Zeilen setzen und entfernen
Bugfixes am Originalcode
- "Ausrücken" hat irgendwann den Code vorne gelöscht
- GetLine$-Funktion lieferte teilweise das letzte Zeichen nicht
- Performance Verbesserungen
|
| | | | |
| | | | | - Seite 1 - |
| Georg Teles | Sehr sehr gut endlich kann ich alle Compiler in ein ProfED Verzeichnis zusammenlegen
Sven Bader (28.09.2021)
Ja, mein X4 Installationspfad ist merkwürdig
zumindest hast du keine 5 Editoren
Zeile 2767 ( ShowToolbar(0) ) sollte vllt zur Zeile 2910 verschoben werden Das Hauptfenster ist da noch nicht sichtbar, sodass der Suchbutton der Toolbar ganz link erscheint, oder ist es nur bei mir so ?
Grüße |
| | | | |
| | Georg Teles | Kleiner Nachtrag: Ab der Zeile 2316 müsste 6 Mal ein + "\\" + zwischen AppData und ProgSprache abgeändert werden
(Zeile 2316 bis einschließlich Zeile 2335 angepasst folgen
'$IFDEF VER14.0
RegKlasse$ = $AppDataDir + "\\" + ProgSprache$ + "\\" + pp$ + "\\" + ProgName$ + ".cfg"
' Falls neue Konfigurationsdatei noch nicht existiert, alte Datei an neue Stelle kopieren
IfNot FileExists(RegKlasse$)' Cfg-Datei ist noch nicht im AppData-Verzeichnis
IfNot DirExists($AppDataDir + "\\" + ProgSprache$ + "\\" + pp$ )' ggf. Verzeichnis anlegen
MkDir $AppDataDir + "\\" + ProgSprache$ + "\\" + pp$
EndIf
EndIf
'$ELSE
Def AppData(0) ReadIni$("HKEY_1", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData")
RegKlasse$ = AppData() + "\\" + ProgSprache$ + "\\" + pp$ + "\\" + ProgName$ + ".cfg"
' Falls neue Konfigurationsdatei noch nicht existiert, alte Datei an neue Stelle kopieren
IfNot FileExists(RegKlasse$)' Cfg-Datei ist noch nicht im AppData-Verzeichnis
IfNot DirExists( AppData() + "\\" + ProgSprache$ + "\\" + pp$ )' ggf. Verzeichnis anlegen
MkDir AppData() + "\\" + ProgSprache$ + "\\" + pp$
EndIf
EndIf
'$ENDIF
Sonst wird ein Verzeichnis ...\Users\ <User> \ AppData\RoamingXProfan neu angelegt statt im Verzeichnis \AppData\Roaming\XProfan\... gespeichert
Grüße |
| | | | |
| | Sven Bader | Danke für den Feedback, Georg!
Mit den Pfaden hast du recht, in der $AppDataDir schient schon ein Backslash drinnen zu sein aber bei AppData() fehlte er. Das hatte sicher für das ein oder andere Durcheinander gesorgt.
Mit dem Suchbutton hatte ich kein Problem aber es mag an der Stelle zeitkritisch zu sein, deine Lösung sollte also helfen Ich hatte eine Weile gebraucht, die Suche dort unterzubringen, ohne das sie wieder verschwindet, die Lösung hier war SetParent()
Bei mit stürzt der Editor alle 1-2 Stunden ab, das Fenster wird nicht neu gezeichnet und das Syntax-Highlighting reagiert nicht mehr. Leider kam ich noch nicht dahinter, ob es nur an der Zeit liegt oder an bestimmten Nutzungsverhalten. Die Fehlersuche gestaltet sich hier schwierig, evtl hast du eine Idee, wie man das Debuggen kann. Sei auf jeden Fall gewarnt, und mache ein Backup deiner Quelltexte, an denen du arbeitest. |
| | | | |
| | Georg Teles | Ahja genau
ich schaue es mir genau an, ob bei mir das gleiche Phänomen nach 1-2 h auftritt Die Suchfunktion ist auf jeden Fall sehr hilfreich muss ich sagen
Config habe ich hier mal hochgeladen mit deinen Farbeinstellungen, die Pfade (Include, X4 und Alternative) müssten nur angepasst werden
Herunterladen
(kopieren nach: ...\Users\<USER>\AppData\Roaming\XProfan\Verzeichnis_trägt_PFAD_zum_XProfEDSE)
Grüße |
| | | | |
| | Sven Bader | Super, danke!
Meinst du mit der Suchfunktion die Schnellsuche in der Toolbar oder die Möglichkeit, Zeilenumbrüche zu ersetzen?
Was ich auch noch nicht ganz durchschaue, ist das Verbiegen der Pfade in Interpreter und fertigem Programm bzw warum im Interpreter das Syntax-Hightlighting gar nicht geht. |
| | | | |
| | Sven Bader | Eine neue Version ist online, hauptsächlich sind es Bugfixes: -Pfad zum Speichern der Einstellungen war teilweise nicht korrekt -Codeformatierung für ASM / ENDASM -Prüfung auch auf ausgewogene eckige Klammern -Klammernausgewogenheit ignorieren, wenn Zeile auf \ endet -Upper/Lower und Hex-Umwandlung per Kontextmenü -"Andere Tabs schließen" -Funktionen und Codesnippets per Kontextmenü, vorerst Stringfunktionen und Profan2CPP-Direktiven -Include-Dateien aus dem Treeview auch klickbar, wenn zuletzt eine Datei in einem anderen Pfad geöffnet wurde -Markiertes Wort in der Suche -Mehrfaches Öffnen einer Datei nicht mehr möglich, stattdessen wird der Tab gewechselt |
| | | | |
| | Sven Bader | So, nun macht die Arbeit mit XProfed SE richtig Spaß:
Neu in Version 2.0
-Icons auf Tabs -Schließen-Button für Tabs -Parallele Konfiguration für bis zu 10 Profanversionen inkl. Profan2Cpp via aP2CCOMP -1-Klick Wechsel des Compilers über die Toolbar -Hilfe zu eigenen Procs: Anzeige der Parameter in der Statusbar -Menüpunkte: Hilfe von für XProfan11, X2, X3, Profan2CPP falls vorhanden -Visuelle Verbesserungen (Cursor im Darkmode, Farbe der Auswahl) -Schnellere Codeformatierung -Verbesserter und deutlich schnellerer Aufbau der Navigation (Treeview und Liste) -Integration von WinMerge um Quelltexte zu vergleichen, Auswahl oder ganze Dateien -Umfangreiche Versionierung/Sicherung von Quelltexten -Verbessertes Undo-Verhalten für Codeformatierung, Ein/Ausrücken etc nur noch ein Undo-Schritt -Bugfixes -Weitere kleine Verbesserungen |
| | | | |
| | Georg Teles | Sehr sehr nice
habe Vorschläge zur Fenstergröße / -positionierung bei nicht gewünschten Werten oder Bildschirmen, die es z.B. nicht mehr gibt (z.B. auf einem externen Monitor gearbeitet dann abgeklemmt und Programm gestartet).
Defs nach Headereinbindung:
Bildschirmdaten lesen, auf dem das hWnd gestartet wurde und KorrekturProc:
'{ Monitor Zusatz:
' -------------------
Declare rcMonitor#,rcWork#,mon#
Struct MONITORINFO = cbSize&,rcMonitor#(16),rcWork#(16),dwFlags&
Struct RECT = left&,top&,right&,bottom&
Dim rcMonitor#,RECT
Dim rcWork#,RECT
Dim mon#,MONITORINFO
mon#.cbSize& = SizeOf(mon#)
'}
Proc mbm
Declare mpos#,x1&,y1&,wix&,wiy&
Dim mpos#,8
GetCursorPos(mpos#)
wix& = %winLeft - long(mpos#,0)
wiy& = %winTop - long(mpos#,4)
GetMonitorInfoA(MonitorFromWindow(%HWnd,2),mon#)
GetCursorPos(mpos#)
x1&=(long(mpos#,0)+wix&)
case x1&<Long(mon#,20):x1&=Long(mon#,20)
case x1&>Long(mon#,28)-(%winRight - %winLeft):x1&=Long(mon#,28)-(%winRight - %winLeft)
y1&=(long(mpos#,4)+wiy&)
case y1&<Long(mon#,24):y1&=Long(mon#,24)
case y1&>Long(mon#,32)-(%winBottom - %winTop):y1&=Long(mon#,32)-(%winBottom - %winTop)
setWindowPos %hWnd=x1&,y1& - (%winRight - %winLeft),(%winBottom - %winTop);0
SetFocus(%HWnd)
Dispose mpos#
EndProc
Ab Zeile 572 im Original Programmende, ungewollte Fensterzustände auskommentieren, da die Proc mbm dies übernimmt und DisPose mon#:
Proc ProgrammEnde
'----------------
Declare Dateien$, PE_X&, PE_Y&, PE_DX&, PE_DY&
Geändert(1, 0)
ShowWindow(%hWnd,0)
Set("Decimals",0)
If ~IsZoomed(%hWnd)
WriteIni RegKlasse$,RegPfad$,"MAX" = 1
Else
WriteIni RegKlasse$,RegPfad$,"MAX" = 0
EndIf
' Auslesen der Normalen Fenstergröße
PE_X& = gWindowData(0)
PE_Y& = gWindowData(1)
PE_DX& = gWindowData(2)
PE_DY& = gWindowData(3)
' Ungewollte Fensterzustände ausfiltern
'Case ((PE_X& < 0) Or (PE_X& > %MaxX)):PE_X& = %MaxX / 20
'Case ((PE_Y& < 0) Or (PE_Y& > %MaxY)):PE_Y& = %MaxY / 20
'Case ((PE_DX& < 540) Or ((PE_DX& + PE_X&) > %MaxX)) : PE_DX& = %MaxX - %MaxX / 10
'Case ((PE_DY& < 380) Or ((PE_DY& + PE_Y&) > %MaxY)) : PE_DY& = %MaxY - %MaxY / 10
' FensterStatus sichern
WriteIni RegKlasse$,RegPfad$,"X" = PE_X&
WriteIni RegKlasse$,RegPfad$,"Y" = PE_Y&
WriteIni RegKlasse$,RegPfad$,"DX" = PE_DX&
WriteIni RegKlasse$,RegPfad$,"DY" = PE_DY&
Dateien$ = ""
WhileLoop 0,MaxTab%
Case Datei$[&loop] > "" : Dateien$ = Dateien$ + Datei$[&loop] + ";"
EndWhile
WriteIni RegKlasse$,RegPfad$,"Dateien" = Dateien$
LDat#.SaveList()
' Aufräumen
Edit#[0].Destroy()
Dispose Edit#[]
Dispose LDat#
Dispose mon#
DeleteObject DFont&
FreeDLL seDll&
EndProc
Ab Zeile 3147 im Original, DX & DY eventuell fixe Mindestgröße geben (hier x=500 y=400), habe z.B. 32:9 Bildschirm, da geht das Fenster bis 3.456 px in der horizontale ... X% und Y% ignorieren, da mit der Proc mbm die Position automatisch korrigiert wird.
' Fenster erstellen
' -----------------
Set("ErrorLevel",0)' Warnungen beim ersten Programmstart ausblenden
X$ = ReadIni$(RegKlasse$,RegPfad$,"X")
X% = Val(X$)
'Case (%Error > 0) or (X$ = "") or (X% < 0) or (X% > 32767) : X% = %MaxX / 20
Y$ = ReadIni$(RegKlasse$,RegPfad$,"Y")
Y% = Val(Y$)
'Case (%Error > 0) or (Y$ = "") or (Y% < 0) or (Y% > 32767) : Y% = %MaxY / 20
DX% = Val(ReadIni$(RegKlasse$,RegPfad$,"DX"))
Case (%Error > 0) or (DX% < 500) or (DX% > 32767) : DX% = 500'%MaxX - %MaxX / 10
DY% = Val(ReadIni$(RegKlasse$,RegPfad$,"DY"))
Case (%Error > 0) or (DY% < 400) or (DY% > 32767) : DY% = 400'%MaxY - %MaxY / 10
Max% = Val(ReadIni$(RegKlasse$,RegPfad$,"MAX"))
Case (%Error > 0) : Max% = 0
Dateien$ = ReadIni$(RegKlasse$,RegPfad$,"Dateien")
Case (%Error > 0) : Dateien$ = ""
Ab Zeile 3773 im Original: bei maximalen Fenster ist X & Y egal, da dieses auf dem aktuellen Bildschirm maximiert wird und zwangsläufig = 0 beträgt (theoretisch) ... bei nicht maximierten Fenster kommt die automatische Korrektur Proc mbm zum Einsatz
Ab Zeile 2909 im Original: Was noch aufgefallen ist, das SuchEdit und SuchButton beim erststart auf der selben Stelle starten, da die Fenstergröße nun immer korrigiert wird, kann man die Position von Anfang an fixieren:
TBSuch& = CREATE("EDIT", %hwnd, "", width(%hWnd)-203,1, 175, 22)
TBOk& = CREATE("ICONBUTTON",%hwnd,icon(20), width(%hWnd)-27, 0, 24, 24)
A Propos die Suche, genial mit der "\n" Suche, funktioniert sehr gut der Schalter, ob er vorwärts oder rückwärts sucht muss leider im Fenster Suchen 1x betätigt werden, damit die "Schnellsuche" also im Edit vorwärts oder rückwärts sucht.
Genial, dass du den Schalter für Versionen bis Profan 6 hinzugefügt hast das wird den einen oder andreren dazu zwingen, neue Verzeichnisstruktur bei XProfan vorzunehmen hehe ... habe auch extra dafür profX2, profX3 und profX4 Verzeichnisse seit deinem ersten SE Edtor angelegt, wo der Interpreter, Kompiler, Linker und Runtime drin liegen ... XProfed dann extra im Verzeichnis darüber
Grüße Georg |
| | | | |
| | Sven Bader | Danke für dein ausführliches Feedback. Die Fenstergrößen muss ich mir nochmal anschauen, habe leider selbst nur 16:10 Monitor aber dafür zwei, weshalb ich das mit dem Ausschalten zumindest testen kann. Der "Poweruser" bekommt das Fenster ja auch ganz leicht wieder mit Windows + Pfeiltaste dorthin, wo er es möchte.
Suchfeld und Suchbutton an gleicher Position dachte ich ist egal, da bei jedem Start mindestens einmal die Subclass zur Änderung der Fenstergröße aufgerufen wird aber eine korrekte Position von Anfang an kann nicht schaden.
Mit der Vor- und Rückwärtssuche bin ich auch noch nicht zufrieden.Ich habe schon einige Verbesserungen daran vorgenommen aber ich denke ich werde wieder ohne Meldung "im Kreis" suchen lassen und ja, die Schnellsuche sollte am besten unbeeindurckt von den Einstellungen des Suchfensters sein.
In der aktuellen "Beta" habe ich folgendes Verhalten eingefügt: -Im Explorer angeklickte Dateien öffnen im schon offenen XProfan SE-Fenster -XProfan SE lässt zwar noch beliebig oft öffnen, läd aber nur in der ersten Instanz die zuletzt geöffneten Dateien -Es lassen sich mehrere Dateien gleichzeitig über den Explorer öffnen -Drag&Drop unterstützter Dateityp ist möglich (als Ziel leider aktuell nur die linke Spalte oder Kopfbereich, der Editor hat das Drop-Target nicht angenommen) |
| | | | |
| | | | - Seite 2 - |
| | Sven Bader | Die Version 2.0.3 steht jetzt bereit. Georg, deine Anregungen habe ich übernommen, schaue gerne mal ob es so für dich passt.
Neue Funktionen darüber hinaus sind: -Angeklickte, mit XProfed SE verknüpfte Dateien öffnen im aktuellen Fenster -Die zuletzt geöffneten Dateien werden nur in der ersten Instanz geöffnet -Es lassen sich mehrere Dateien gleichzeitig über den Explorer öffnen -Drag&Drop unterstützter Dateityp ist möglich (als Ziel leider aktuell nur die linke Spalte oder Kopfbereich) -Drag&Drop der Editor-Tabs, um deren Reihenfolge zu ändern:
Den Code dazu gibt es hier auch separiert: [...] |
| | | | |
| | Georg Teles | Hi Sven, sehr nice !
DragDrop funktioniert wunderbar, auch bei mehreren Dateien ! Dateien in offener Instanz öffnen klappt ganz gut !
Habe eher eine unwichtige kosmetische Nachbesserung vorzuschlagen:
Der Tab scheint durch die Toolbar 2 Pixel überlagert zu sein, also das TabControl mal von 26 auf 28 Pixel runtergesetzt.
Bei den Edits im TabControl habe ich um 1 Pixel höher gesetzt, dann sieht das Ganze perfekt aus (der Weiße Abstand in der TabControl zu dem dunkelgauen Edit, wo der Quelltext angezeigt wird) - zudem auch die Edit tiefer gesetzt, dass diese auf einer Linie mit der Baumansicht links ist
Zeile -> Koordinaten ändern 828 -> von 2,26 ... -30 zu 2,25 ... -28 1037 -> von 2,26 ... -30 zu 2,25 ... -28 1039 -> von 2,26 ... -30 zu 2,25 ... -28 1169 -> von 2,26 ... -30 zu 2,25 ... -28 1171 -> von 2,26 ... -30 zu 2,25 ... -28 2825 -> von ,26 ... -50 zu ,28 ... -51 2826 -> von 0,51 ... -75 zu 0,52 ... -76
2829 -> von ,26 ... -50 zu ,28 ... -51 2831 -> von 0,51 ... -75 zu 0,52 ... -76
2833 -> von ,26 ... -50 zu ,28 ... -51 2839 -> von 2,26 ... -30 zu 2,25 ... -28
3786 -> von 150,26 ... -50 zu ,28 ... -51 3810 -> von 2,26 ... -30 zu 2,25 ... -28 3823 -> von 2,26 ... -30 zu 2,25 ... -28 3838 -> von 2,26 ... -30 zu 2,25 ... -28 3856 -> von 2,26 ... -30 zu 2,25 ... -28 3867 -> von 2,26 ... -30 zu 2,25 ... -28 3886 -> von 2,26 ... -30 zu 2,25 ... -28 4030 -> von 2,26 ... -30 zu 2,25 ... -28 4432 -> von 2,26 ... -30 zu 2,25 ... -28 4471 -> von 2,26 ... -30 zu 2,25 ... -28 4473 -> von 2,26 ... -30 zu 2,25 ... -28 5146 -> von 2,26 ... -30 zu 2,25 ... -28 5155 -> von 2,26 ... -30 zu 2,25 ... -28 5164 -> von 2,26 ... -30 zu 2,25 ... -28 5173 -> von 2,26 ... -30 zu 2,25 ... -28
Nach Zeile 3996 habe noch UpdateTitleAndPath() hinzugefügt, damit der Titeltext auch bei gedroppten Dateien im HWnd aktualisiert wird, sonst wird er es erst bei TabWechsel
Habe die .PRF im Original korrigiert angehängt, damit Du nicht durch alle Zeilen gehen musst
Herunterladen
Grüße Georg |
| | | | |
| | Sven Bader | Danke, für das Update! Das mit dem Fenster-Titel ist mir durchgegangen, die Überschneidung war mir bekannt, ich kam nur einfach noch nicht dazu.
Ich habe deine Änderungen übrigens alle mit WinMerge prüfen können, das kann ich nur empfehlen. -WinMerge downloaden und installieren -In XProfed SE Quelltext in die Zwischenablage kopieren -Zu vergleichenden Quelltext markieren -Im Kontextmenü "mit Zwischenablage vergleichen" wählen -In Winmerge werden jetzt alle Änderungen markiert -optional können Änderungen gemacht werden, diese werden dann beim Schließen nach XProfed SE übernommen
Das geht mit gazen Dateien aber auch nur mit ein paar Zeilen.
Ich werde hierfür vorerst keine neue Version erstellen, es kommen erst noch ein paar Bugfixes von mir dazu. |
| | | | |
|
AntwortenThemenoptionen | 5.950 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |
StatistikAPP | x | XProfEd | 99 | XProfan X2 | 41 | LemonEd | 35 | XProfan X4 | 35 | XProfan 11 | 26 | XProfan X3 | 24 | XProfed32a | 13 | Alle Sprachen | 13 | XProfan 9 | 9 | FreeProfan | 7 | PRFellow | 6 | XProfan 10 | 5 | keine Bestimmte | 4 | TextPad | 3 | Infinity-Profan | 2 | Infinity-Profan Online-IDE | 1 | GDLIDE | 1 | XProfan 8 | 1 | PSPad-Editor | 1 | Angaben anhand den Einstellungen bei der Programmierumgebung. |