Neu: Code mit Zeilennummern

OP Admin Persönliche Seite #6552860
Lesenswert?

Hallo,

ab sofort wird Code mit Zeilennummern angezeigt (danke Mark für den 
Vorschlag in 
Beitrag "Re: Wunschliste & Verbesserungsvorschläge"). Kleines 
Beispiel:
1
#include<stdio.h>
2

3
int main() {
4
  printf("Hello World\n");
5
  return 0;
6
}

Die Änderung wird bei alten Beiträgen nach spätestens ein paar Tagen 
sichtbar sein.

Um das zu ermöglichen habe ich den Code-Highlighter ausgetauscht, es 
sieht also alles etwas anders aus. Falls euch Darstellungsprobleme 
auffallen sollten, sagt bitte Bescheid. Ein kleines Problem ist mir 
aufgefallen: in Safari werden bei mehrzeiliger Auswahl von Code die 
Zeilennummern mit in die Zwischenablage kopiert. Leider habe ich da noch 
keine Lösung gefunden.

Vielen Dank,
Andreas
#6553067
Lesenswert?

Ja, das hat echt was, man sieht im Listing die Zeilennummern, kann aber 
den Code kopieren, ohne das die Nummern mit kopiert werden.

Und Mark müsste vor Freude im Bett stehen, da sein Argument, das von den 
Vorschlägen nie was umgesetzt wird, in der Form entkräftet wurde, das 
sogar sein Vorschlag umgesetzt wurde ;-)
#6553132
Lesenswert?

1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4

5

6
entity counter is Port(
7
  Clock: in std_logic;
8
  Load: in std_logic;
9
  Data_in: in std_logic_vector(31 downto 0);
10
  Data_out: out std_logic);
11
end counter;
12

13
architecture Behavioral of counter is
14

15
signal Data: unsigned(32 downto 0):=(others => '0');
16

17
begin
18

19
process begin
20
  wait until rising_edge(Clock);
21
  Data <= Data -1;
22
  Data_out <= '0';
23
  
24
  if Data(32) = '1' then
25
    Data <= Data;
26
    Data_out <= '1';
27
  end if;
28
  
29
  if Load = '1' then
30
    Data <= unsigned('0' & Data_in) -1;
31
  end if;
32
end process;
33

34
end Behavioral;

Edit:
Sehr schön, vielen Dank!
#6553141
Lesenswert?

Sehr schön Andreas, vielen Dank.

Allerdings wird bei mir bei langen Scripts ab der 100. Zeile die 
Zeilennummer nach der zweiten Stelle umgebrochen und dadurch eine 
zusätzliche Leerzeile im Script erzeugt.

Aktuell im Beitrag "Morse Decoder" zu 
sehen.

Ok, solche langen Scripts sollten als Anhang drangesetzt werden, aber 
hält sich leider nicht jeder dran 😕

Schönen Abend, '73 de Steffen, DL7ATE
#6553668
Lesenswert?

Hallo,
Andreas S. schrieb:
> ab sofort wird Code mit Zeilennummern angezeigt...

Vielen Dank für die Anzeige der Zeilennummern, leider wird beim Einfügen 
des Quelltextes in einen Editor nach jeder Quelltextzeile eine Leerzeile 
eingefügt, Im angehängtes Bild sieht man je Beispiel für Notepad und 
Geany. Der Effekt ist unabhängig davon welches Zeilenendezeichen in 
Geany eingestellt ist (hier CRLF).

"Normaler" Text ist davon nicht betroffen.

rhf
Angehängte Dateien:
Gast #6553677
Lesenswert?

hübsch anzusehen aber
ein einfaches copy&paste produziert dann so etwas im Editor;

1
3
2
  int main() {
3

4
  4
5
    printf("Hello World\n");
6

7
  5
8
    return 0;



 RSS mit vollständigen Beiträgen wäre ein coole Sache,
just saying ;)
Gast #6553682
Lesenswert?

c.f. schrieb:
> hübsch anzusehen aber
> ein einfaches copy&paste produziert dann so etwas im Editor;
>
>
>
1
> 
2
> 3
3
>   int main() {
4
> 
5
>   4
6
>     printf("Hello World\n");
7
> 
8
>   5
9
>     return 0;
10
> 
11
> 
12
>
>
>
>
>  RSS mit vollständigen Beiträgen wäre ein coole Sache,
> just saying ;)


Das numeriert anscheinend derzeit auch unter verwendung der "pre" Tags 
:(
Sollte sich wenigsten auf
1
C-Code
 beschränken.
Moderator Persönliche Seite #6553709
Lesenswert?

c.f. schrieb:
> Sollte sich wenigsten auf C-Code
>  beschränken.

Naja, es gibt genügend anderen Code, für den es auch sinnvoll ist, ohne 
dass es sinnvoll wäre, ihn mit C-Syntax-Highlighting zu versehen (bspw. 
Shellscripts).

Man könnte ja vielleicht an dieser Stelle mal einen Unterschied zwischen 
[pre] und [code] einführen: [code] nummeriert, [pre] nicht.
Beitrag #6553917 wurde von einem Moderator gelöscht.
OP Admin Persönliche Seite #6554607
Lesenswert?

100Ω W. schrieb:
> @admin Welchen Codehighlighter verwendest du?

https://github.com/rouge-ruby/rouge

Leider fehlt da ein Lexer für AVR Assembler. Falls jemand Lust hat einen 
beizutragen würde ich mich freuen. Was auch noch nicht funktioniert ist 
die automatische Erkennung der Sprache (sollte eigentlich bei allen 
code- und pre-Tags aktiv sein, tut aber nicht viel).

Roland F. schrieb:
> leider wird beim Einfügen des Quelltextes in einen Editor nach jeder
> Quelltextzeile eine Leerzeile eingefügt

Welcher Browser? In Chrome und Firefox konnte ich das nicht beobachten. 
Nur in Safari werden leider die Zeilennummern mitkopiert.

mh schrieb:
> Gibt es zufällig Pläne die Code-Tags ordentlich zitierbar zu machen?

Ja, ist aber nicht ganz so einfach, deshalb möchte ich da jetzt nichts 
konkret versprechen.
Gast #6554642
Lesenswert?

Andreas S. schrieb:
> Nur in Safari werden leider die Zeilennummern mitkopiert.

Bezieht sich nur auf macOS.

Das funktioniert im Safari garnicht. Markierter code wird nicht zitiert.
Wenn ich die Markierung in den Zwischenpuffer übernehme und dann in 
einen Editor einfüge sind die Zeilennummern mit dabei. Aber das ist auch 
eher belanglos.
Bei Firefox aber ist das c&p ohne Zeilennummern.
Beitrag #6554704 wurde von einem Moderator gelöscht.
Gast #6554855
Lesenswert?

Jörg W. schrieb:
> c.f. schrieb:
>> Gerade verhielt sich das noch wie im ang. Bild.
>
> Derzeit sind beide Tags identisch in ihrem Verhalten.

Bug, kein feature.


ascii Zeichnungen
gewöhnlicher aber speziell fromatierter Text
kurze aber mehr als einzeilige snippets

das braucht keine Zeilennummern.

u. bislang funktionierte das in beliebigen Browsern.
Moderator Persönliche Seite #6554955
Lesenswert?

HHH schrieb:
> das braucht keine Zeilennummern.

Klar. Aber diese Tags werden eben auch für andere Dinge benutzt: 
Pseudo-Programmcode, Shellscripte, Python-Scripte etc. Die können 
wiederum von Zeilennummern profitieren.

Da allerdings viele Nutzer derzeit schon überfordert sind, überhaupt mal 
[pre] oder [code] einzufügen, bin ich ein wenig skeptisch, wieviel 
Prozent es dann begreifen, wenn sich das eine anderes verhält als das 
andere. ;-)
Gast #6554961
Lesenswert?

Jörg W. schrieb:
> Da allerdings viele Nutzer derzeit schon überfordert sind,

Hier, hier! :-)
Liegt aber auch ein wenig an der unvollständigen Beschreibung über dem 
Text-Eingabefeld. Ich hab bis jetzt noch nicht kapiert wie das mit dem 
Unterstreichen und den Schrägstrichen ordentlich funktioniert.
Das "pre" steht da auch nicht.
#6555898
Lesenswert?

Hallo,
Andreas S. schrieb:
> Roland F. schrieb:
>> leider wird beim Einfügen des Quelltextes in einen Editor nach jeder
>> Quelltextzeile eine Leerzeile eingefügt
>
> Welcher Browser? In Chrome und Firefox konnte ich das nicht beobachten.

Win10 20H2, Firefox 84.0.2 (64Bit), eingefügt in Geany 1.37.1

> Nur in Safari werden leider die Zeilennummern mitkopiert.

Nur zur Klarstellung: die Zeilennummern werden nicht mit kopiert, es 
wird nur nach jeder Zeile, die keine Leerzeile ist, eine Leerzeile 
zusätzlich eingefügt.
Beim Microsoft Edge(87.0.664.75) wiederum werden nachfolgende Leerzeilen 
nur eingefügt, wenn die vorherige Quelltextzeile eingerückt ist (siehe 
Bild).

rhf
Angehängte Dateien:
Gast #6555915
Lesenswert?

> bei mehrzeiliger Auswahl von Code die Zeilennummern mit in die
> Zwischenablage kopiert. Leider habe ich da noch keine Lösung
> gefunden.

Statt für jede Codezeile eine tr alles in eine tr packen - mit passenden 
Zeilenumbrüchen.
OP Admin Persönliche Seite #6556017
Lesenswert?

foobar schrieb:
> alles in eine tr packen

Das habe ich probiert und verworfen, weil es bei langen, umgebrochenen 
Zeilen nicht mehr funktioniert.
1
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
2
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
Gast #6556029
Lesenswert?

Roland F. schrieb:
>> Nur in Safari werden leider die Zeilennummern mitkopiert.
>
> Nur zur Klarstellung: die Zeilennummern werden nicht mit kopiert, es
> wird nur nach jeder Zeile, die keine Leerzeile ist, eine Leerzeile
> zusätzlich eingefügt.

Und ich sags auch nochmal:
Mit Safari lässt sich keine einzige Zeile Code zitieren. Weder mit noch 
ohne Zeilennummer. Niente, Nada, Nix.

Safari 13.1.2 macOS 10.13.6 (jaja, nicht mehr das Frischeste)
Gast #6556442
Lesenswert?

> Das habe ich probiert und verworfen, weil es bei langen, umgebrochenen
> Zeilen nicht mehr funktioniert.

Darf man halt nichts automatisch umbrechen.  Die Zwei Beispielzeilen 
(haben bei mir jeweils einen h-scrollbar) z.B. würden funktionieren, 
wenn sie in einer tr wären - die tr hätte dann einen h-scrollbar für den 
gesamten code und die Zeilennummern stimmen.  Wenn man den scrollbar 
nicht haben will, könnte man immer noch ein overflow:hidden einsetzen.
Moderator Persönliche Seite #6556581
Lesenswert?

foobar schrieb:
>> (haben bei mir jeweils einen h-scrollbar)
>
> Siehe screenshot ...

Früher hatten lange Codezeilen in der Ansicht hier im Forum auch einen 
Scrollbar. Irgendwann vor ein paar Jahren wurde das geändert, und C-Code 
wurde dann plötzlich umbrochen.

Ich fand das mit den Scrollbars besser. Da sieht man den Original-Source 
und nicht etwa einen umbrochenen Quelltext, wo man vermeintlich Fehler 
wie Kommentarfragmente (eingeleitet durch Doppel-Slash in der 
darüberliegenden Zeile) auf einer extra Zeile sieht.

Von daher bin ich auch gegen künstliche Umbrüche - was das Problem dann 
wohl auch lösen würde.
Gast #6556696
Lesenswert?

Ich hab mal etwas rumprobiert: es war doch nicht ganz so trivial, wie 
ich mir das vorgestellt hab - ohne absolute Breite wird es schwierig. 
Hinbekommen habe ich es mittels "table-layout:fixed;width:100%" und dann 
der ersten Spalte mit den Zeilennummern eine feste Breite geben.  Die 
rechte mit dem Code bekommt dann den Rest der 100%.  Damit bekomm ich 
genau das Scrollverhalten wie ich es mir wünschen würde und c&p klappt 
problemlos.

Beispiel:
1
<html>
2
    <style>
3
        pre { overflow:auto; }
4
        tr { vertical-align:top; }
5
        td.line { width:2em; text-align:right; }
6
        table.code {
7
            table-layout: fixed;
8
            width:100%;
9
        }
10
    </style>
11
    <body>
12
        Example text:
13
        <div style="margin:0 3em">
14
            Indented example table:
15
            <br>
16
            <table class="code" bgcolor="#ccf"><tr>
17
                <td class="line"><pre>1
18
2
19
3
20
4</pre></td>
21
                <td><pre>aaaaaaaaaaaaaaaaaaaaaaaaaaaa
22
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
23
asdddfs
24
sdfjskdfjsldf</pre></td>
25
            </tr></table>
26
        </div>
27
    </body>
28
</html>

Im Screenshot mit markiertem Text.
Angehängte Dateien:
#6556823
Lesenswert?

Die Zeilennummernanzeige finde ich prima,

allerdings stören bei Copy/Paste die hinzugefügten extra-Leerzeilen...
Nach einmal Copy/Paste aus dem Sourcecode ins "Antwort 
schreiben"-Fenster bekomme ich Folgendes (vhdl-tags ergänzt):
1
library IEEE;
2

3
use IEEE.STD_LOGIC_1164.ALL;
4

5
use IEEE.NUMERIC_STD.ALL;
6

7
entity counter is Port(
8

9
  Clock: in std_logic;
10

11
  Load: in std_logic;
12

13
  Data_in: in std_logic_vector(31 downto 0);
14

15
  Data_out: out std_logic);
16

17
end counter;

Umgebung: Win 7, Firefox 84.0.2 (64-Bit)

Es ist dabei völlig irrelevant, wohin die Zwischenablage nach Copy 
wieder eingefügt wird, also ob in Browserfenster, Notepad++ oder 
Eclipse-IDE, der mit Strg-C kopierte Text aus dem Sourcecode-Bereich 
enthält bereits in der Zwischenablage die überflüssigen extra-Leerzeilen 
(CR+LF).
Beitrag #6566447 wurde von einem Moderator gelöscht.
#6568874
Lesenswert?

Falk B. schrieb:
> Die mehrfachen Scrollbalken sind Murks!

Was erwartest Du? Soll die Forensoftware auch noch erkennen, dass es 
sich um einen einzigen durchlaufenden Kommentar handelt?
Und selbst wenn sie das könnte, wäre immer noch nicht sicher, dass 
der,Leser jeweks den ganzen Block am Stück scrollen will.
Sinn voll wäre das ohnehin nicht: wenn Du ddn Comment lesen willst, 
musst Du im Zweifel jede Zeile von vorne bis hinten lesen. Einen Block 
müsstest Du also nach der Lektüre einer jeden Zeile wurder an den Anfang 
scrollen, um ihn beim Lesen dann wieder nach links zu schieben
Bei mehreren Balken brauchst Du jede Zeile nur ein einziges Mal zu 
verschieben.

Falls Du den Kommentar aber nicht lesen möchtest, können Dir die Balken 
herzlich egal sein.
Gast #6569798
Lesenswert?

Percy N. schrieb:
> Falk B. schrieb:
>> Die mehrfachen Scrollbalken sind Murks!
Da hat er völlig recht!

> Was erwartest Du? Soll die Forensoftware auch noch erkennen, dass es
> sich um einen einzigen durchlaufenden Kommentar handelt?
In der Vergangenheit war es besser! Ein Scrollbalken unten für den 
gesamten Codeblock, falls Zeilen zu lang sind. Besser war auch, dass es 
ein Syntax-Highlighting gab.

Früher war alles besser® ...😀
#6570053
Lesenswert?

Percy N. schrieb:
> Was erwartest Du? Soll die Forensoftware auch noch erkennen, dass es
> sich um einen einzigen durchlaufenden Kommentar handelt?

Daß man ein funktionierendes System nicht verschlimmbessert! Die 
Zeilennummern sind nett aber entbehrlich, ein einziger Scrollbalken ganz 
unten für überbreite Texte ist das Mittel der Wahl! Soviel Verständnis 
für Grundlangen von GUIs sollte im Jahre 2021 Allgemeinwissen sein.

> Falls Du den Kommentar aber nicht lesen möchtest, können Dir die Balken
> herzlich egal sein.

Es sieht arg schräg aus, vermurkst den Lesefluß und überhaupt. Was soll 
der Käse? Technische Spielei von Tec-Autisten?
Beitrag #6570077 wurde von einem Moderator gelöscht.
Beitrag #6570128 wurde von einem Moderator gelöscht.
Beitrag #6570157 wurde von einem Moderator gelöscht.
Beitrag #6570175 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren