ifdef deaktiviert - alles deaktiviert?

Für Fragen rund um die Ide und zum Debugger
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

ifdef deaktiviert - alles deaktiviert?

Beitrag von br_klaus »

Hallo,
ich hätte einen Vorschlag an die Lazarus-Entwickler. Habe lazarus 1.5
Wenn ich in den Bereich von ifdef deaktiviert komme, dann gibt es da leider keine Möglichkeit, Codetools u.ä. anzuwenden (zB Sprung zwischen Deklaration in interface-Teil und implementation), noch gelingt es mir, einen kopierten Bereich farblich hervorzuheben. man muß da auf gut Glück arbeiten. Der Block wird zwar intern markiert (man kann ihn kopieren, löschen, etc.), aber die Markierung bleibt unsichtbar. (Ich brauchte es, um den aktivierten und den deaktivierten Teil zu vergleichen und Teile des deaktivierten Bereichs in die Zwischenablage zu kopieren).

Könnte man diese Funktionen nicht auch im deaktivierten ifdef-Bereich aktivieren?

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von Scotty »

Wie etwas in Lazarus dargestellt wird, hängt doch von deiner Konfiguration ab. Ich kann jedenfalls immer sehen, was in ifdef-Blöcken steht. Ebenso geht copy/paste etc., und auch Codetools funktionieren (Lazarus 1.5 r47911M FPC 2.6.4 x86_64-linux-qt).
Prinzipiell sind solche Wünsche aber besser im Bugtracker als feature request aufgehoben.

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von martin_frb »

Was Codetools anbelangt, das ist bekannt, aber nicht einfach zu loesen. (Und unklar ob es jemals geloest werden wird.)

aber die Markierung bleibt unsichtbar.

Das sollte nicht der Fall sein, Alle Highlights, Markierungen und Ähnliches sollten auch im inaktiven ifdef sichtbar sein.

Welches color-schema?

In den Einstellungen (Editor/Color) lässt sich das ggf korrigieren.
1) Man kann den Transparenz level (alpha) anpassen
2) wenn Hervorhebungen die Text Farbe (anstatt der Hintergrund Farbe) angezeigt werden, dann ggf unter Prioritaet, die Einstellung fuer Markierung erhoehen, so das diese ueber dem ifdef lowlight liegen.

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von br_klaus »

martin_frb hat geschrieben:
aber die Markierung bleibt unsichtbar.

Das sollte nicht der Fall sein, Alle Highlights, Markierungen und Ähnliches sollten auch im inaktiven ifdef sichtbar sein.

Welches color-schema?

In den Einstellungen (Editor/Color) lässt sich das ggf korrigieren.
1) Man kann den Transparenz level (alpha) anpassen
2) wenn Hervorhebungen die Text Farbe (anstatt der Hintergrund Farbe) angezeigt werden, dann ggf unter Prioritaet, die Einstellung fuer Markierung erhoehen, so das diese ueber dem ifdef lowlight liegen.


Das mit den Einstellungen der Priorität hat geklappt. Herzlichen Dank für diesen Hinweis.
Obwohl da ein Hinweis fehlt, was höhere Priorität bewirkt: Pfeil nach oben, oder nach unten? Bei nach unten wurde sie anscheinend erhöht).

Aber die Codetools bleiben weiterhin stumm. Da tut sich nichts. Kann das mit dem neuen FPC zusammenhängen (Lazarus 1.5 - FPC 3.1.1)?

martin_frb hat geschrieben:Was Codetools anbelangt, das ist bekannt, aber nicht einfach zu loesen. (Und unklar ob es jemals geloest werden wird.)

Vielleicht läßt sich das lösen, indem der Compiler intern (sozusagen in einer Kopie des Quelltextes) die ifdef-Anweisungen entsprechend ändert, sodaß das, was vorher deaktiviert war, nun aktiviert ist, und er dann zB vom interface-Teil zum implementation-Teil springen kann und dann auch wieder zurück (und sofort die Original-ifdefs wiederherstellt).
Aber wie weit sich das programmtechnisch auch realiseren läßt, da bin ich natürlich überfragt.

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von marcov »

br_klaus hat geschrieben:Vielleicht läßt sich das lösen, indem der Compiler intern (sozusagen in einer Kopie des Quelltextes) die ifdef-Anweisungen entsprechend ändert, sodaß das, was vorher deaktiviert war, nun aktiviert ist, und er dann zB vom interface-Teil zum implementation-Teil springen kann und dann auch wieder zurück (und sofort die Original-ifdefs wiederherstellt).
Aber wie weit sich das programmtechnisch auch realiseren läßt, da bin ich natürlich überfragt.


Der Compiler macht das nicht, das sind die Codetools. Und ja die konnte spekulativ versuchen alle ifdef Branchen zu interpretieren. Mit mehrere ifdefs geht das aber Exponentiell.

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von martin_frb »

Es ist nicht immer moeglich.

A B C sind alle NICHT defined

Code: Alles auswählen

 
interface
{$IFDEF A} procedure Foo;  {$ENDIF}
{$IFDEF B} procedure Foo; inline{$ENDIF}
{$IFDEF C} procedure Foo; cdecl;  {$ENDIF}
 
implementation
{$IF defined(A) or defined(B) or defined(C) }
  Foo; // and to which declaration should it jump?
{$ENDIF}
 

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: ifdef deaktiviert - alles deaktiviert?

Beitrag von Komoluna »

martin_frb hat geschrieben:and to which declaration should it jump?

ich würde sagen entweder zur letzen oder zur ersten...

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten