Entwickler-Ecke

Wünsche, Anregungen & Kritik - Zeilennummern im Delphi Code verschoben


Xentar - So 04.04.10 00:40
Titel: Zeilennummern im Delphi Code verschoben
Ist mir gerade in folgendem Thema aufgefallen.
http://www.delphi-forum.de/viewtopic.php?t=98748&postorder=asc&start=20
In diesem http://www.delphi-forum.de/viewtopic.php?p=601311#601311 Beitrag sind die Zeilennummern korrekt, aber in diesem hier http://www.delphi-forum.de/viewtopic.php?p=601315#601315 sind sie nach unten verschoben, je weiter man runter scrollt. Siehe dazu den angehängten Screenshot.


Martok - So 04.04.10 02:35

Ein beliebter Bug, mit dem auch GeSHi zu kämpfen hat.

Ursache ist, dass in <pre> Zeilen, die kursive Zeichen enthalten 1 px höher sind als solche ohne, wenn man Größenangaben in em oder % verwendet.

Das DF hat da einen "Hack", der Kursive genau ein Pixel kleiner macht. Der ist aber buggy 8)

Die Class .codecompilerdirective hält sich für Kursiv und gibt deswegen font-size: 12px an. Das müssten 13px werden.

TUFKAPL, übernehmen Sie! ;)


JonS - So 04.04.10 10:05

Man könnte doch einfach statt ner umrandenen div ne liste nehmen, dann müsste es doch gehen (nicht ausprobiert).

wfg Jon S.


ALF - So 04.04.10 11:58

user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
In diesem http://www.delphi-forum.de/viewtopic.php?p=601311#601311 Beitrag sind die Zeilennummern korrekt, aber in diesem hier http://www.delphi-forum.de/viewtopic.php?p=601315#601315 sind sie nach unten verschoben, je weiter man runter scrollt. .....

mh..., bei mir nicht, im IE8 !?

EDIT: lol, bezog sich ja auf Firefox!
Gruss Alf


Regan - So 04.04.10 13:10

Selbiges Verhalten im Opera Mobile 10.
Wobei bei mir beide Beiträge buggy sind ;) . Aber Christian keine Sorge: nur für mich brauchst du das Forum nicht anpassen. Ich wollte es bloß erwähnen.


Martok - So 04.04.10 14:16

user profile iconJonS hat folgendes geschrieben Zum zitierten Posting springen:
Man könnte doch einfach statt ner umrandenen div ne liste nehmen, dann müsste es doch gehen (nicht ausprobiert).

Aber man kann den Code nicht mehr rauskopieren.
Hat schon so seine Richtigkeit...


BenBE - So 04.04.10 15:06

Im GeSHi bin ichinzwischen dazu übergegangen eine Tabelle mit zwei Spalten zu nehmen. Im FF und zahlreichen anderen Browsern kann man dann den Code durch Festhalten der Strg+Shift-Taste markieren und entsprechend kopieren.


JonS - So 04.04.10 16:09

Ne alternative wäre folgendes: JavaScript-Highlighter [http://code.google.com/p/syntaxhighlighter/]

Muss der Benutzer zwar JavaScript auf ON haben, sonst wird nichts gehighlightet, aber für ein Web-Projekt von mir verwend ich den. Hat auch noch gute Anpassungsmöglichkeiten und bringt Copy und View as Plaintext von Haus aus mit :)

wfg Jon S.


BenBE - So 04.04.10 17:16

Das ändert aber nix dran, dass der auch nur das umsetzen kann, was HTML kann. Den Fehler mit den Höhenangaben gibt's dort genauso.

Außerdem: Wozu JS-Highlighter einsetzen, wenn es Serverseitig wesentlich besser geht?


JonS - So 04.04.10 17:23

Naja, dort gibt es das Problem soweit ich bisher bemerkt habe NICHT. Man kann den Code direkt in die Zwischenablage kopieren oder auch den Code in einem neuen Fenster plain (also ohne Highlighting oder Zeilennummern) ansehen.

Man könnte es ja einfach nach der Serverseitigen Bearbeitung noch einschieben -->
JavaScript = ON: JS-Highlighter
JavaScript = OFF: Normale Geshi-Highlighting

wfg Jon S.


Heiko - So 04.04.10 20:25

user profile iconJonS hat folgendes geschrieben Zum zitierten Posting springen:
Man könnte es ja einfach nach der Serverseitigen Bearbeitung noch einschieben -->
JavaScript = ON: JS-Highlighter
JavaScript = OFF: Normale Geshi-Highlighting

Man oh man, JS macht auch nix anderes als HTML/CSS-Code zu erzeugen. Von daher hat das nix mit dem Problem zu tuen.

Die simple Lösung ist einfacvh, bei pre.sourcecode line-height auf 14px zu setzen (oder 13px, je nachdem was man eher mag ;) )


Martok - So 04.04.10 20:30

user profile iconHeiko hat folgendes geschrieben Zum zitierten Posting springen:
Die simple Lösung ist einfacvh, bei pre.sourcecode line-height auf 14px zu setzen (oder 13px, je nachdem was man eher mag ;) )

Äh, Leute? Der genaue, aufs DF passende Bugfix kam heute Nacht schon von mir.

Der Rest der Diskussion hier gehört in den Mozilla Bugtracker...


Yogu - Mi 07.04.10 11:12

Moin,

ich habe gerade eine CSS3-Version des Syntax-Highlighters geschrieben. Der Vorteil dabei ist, dass die Zeilennummern nun gar nicht mehr in HTML stehen, sondern per CSS vom Browser generiert werden. Sie können auch gar nicht von den Sourcezeilen verschoben sein, da jede Zeilennummer direkt mit der Zeile verknüpft ist.

Es funktioniert im Firefox 3.6, Internet Explorer 8, Opera 9, Safari 4 und Google Chrome 3 einwandfrei. Wäre das eine Überlegung wert?

Edit: Der gesamte Quelltext steht in einem <div class="code"> ... </div>, und jede einzelne Zeile gehört in ein <div> ... </div>. An HTML ist das alles.

Grüße,
Yogu

Edit: Mir ist gerade aufgefallen, dass zweistellige Zeilennummern im gleichen Codeblock mehr Platz brauchen als einstellige. Um das zu umgehen können folgende CSS-Regeln zusätzlich verwendet werden:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
.code div {
  clear:both;
}

.code div:before {
  display: block;
  float: left;
  width: 3em;
}

So passen bis zu vierstellige Nummern rein.


Dude566 - Mi 07.04.10 13:22

Hey user profile iconYogu,

ich habe gerade mit (X)HTML & CSS angefangen und habe mich schon gefragt wie ich wohl so eine Codebox für meine eigene Homepage machen könnte.

Vielen Dank für die Anregung!


Martok - Mi 07.04.10 15:13

Die Idee ist gar nicht mal so schlecht.

Nach http://www.quirksmode.org/css/contents.html#t15 und http://www.quirksmode.org/css/beforeafter_content.html sieht das auch mit der Unterstützung ganz gut aus, nur IE<=7 und was den Counter betrifft Konqueror halt nicht.