Matthias Apsel: feature-Wunsch Zeilennummern für Code-Blöcke

Hallo alle,

Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

Bis demnächst
Matthias

--
Signaturen sind bloed (Steel) und Markdown ist mächtig.
  1. Hallo,

    Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

    Vielleicht kann lining.js dabei helfen?

    Gruß
    Kalk

    1. Hallo Tabellenkalk,

      Vielleicht kann lining.js dabei helfen?

      Sagt ausgerechnet der JavaScript-Verweigerer ;-)

      Bis demnächst
      Matthias

      --
      Signaturen sind bloed (Steel) und Markdown ist mächtig.
      1. Hallo,

        Vielleicht kann lining.js dabei helfen?

        Sagt ausgerechnet der JavaScript-Verweigerer ;-)

        Man könnte natürlich auch serverseitig den Codeblock auseinandernehmen und zeilenweise in ollis verpacken. Aber will man das?

        Jedenfalls schien mir eine CSS-Lösung nicht realistisch.

        Gruß
        Kalk

  2. Aloha ;)

    Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

    Ich unterstütze den Vorschlag.

    Auf technischer Seite sehe ich aber das Problem, dass wir auch bei Listen haben. Sowie bei Listen aus

    wird,

    bekämen wir wahrscheinlich aus

    001| Beispielcode
    002|
    003| und noch mehr
    004| davon
    

    ein

    001| Beispielcode
    002|
    

    ähnlich blödes Ergebnis.

    001| und noch mehr
    002| davon
    

    Imho muss erstmal eine Lösung für dieses Problem gefunden werden. Zeilennummern sind nur dann wirklich sinnvoll, wenn sie auch über Zitate und Verstümmelungen hinweg eindeutig bleiben (denn erst dann kann man sich sinnvoll darauf beziehen).

    @CK: Wäre es denn eine Option, die automatische Nummerierung beim Klick auf den "Antworten"(mit Zitat)-Button für die Zitiererei hart zu kodieren? Also, dass beim Zitat nicht exakt der Quelltext eingefügt wird, sondern eben Quelltext mit hartkodierten Nummerierungen? Im Sinne davon, dass aus

    1. Aufzählungs-Text
    2. Aufzählungs-Text
    3. Aufzählungs-Text
    
    > 1. Aufzählungs-Text
    > 1. Aufzählungs-Text
    > 1. Aufzählungs-Text
    
    

    im Originalposting beim Zitieren

    1. Aufzählungs-Text
    2. Aufzählungs-Text
    3. Aufzählungs-Text

    
    > {::nomarkdown}1.{:/} Aufzählungs-Text
    > {::nomarkdown}2.{:/} Aufzählungs-Text
    > {::nomarkdown}3.{:/} Aufzählungs-Text
    
    

    wird? Das würde dann nämlich funktionieren:

    1. Aufzählungs-Text

    bla

    2. Aufzählungs-Text

    bla

    3. Aufzählungs-Text

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
    1. Hallo,

      Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

      Ich unterstütze den Vorschlag.

      mi tu

      Auf technischer Seite sehe ich aber das Problem, dass wir auch bei Listen haben. Sowie bei Listen aus

      ich finde die Markdown-Lösung für Listen sowieso überflüssig. Abgesehen von dem Problem beim Zitieren: Ob ich nun selber die Listenpunkte schreibe und durchnummeriere (1. 2. 3.) oder das von Markdown machen lassen (1. 1. 1.), wo ich dann noch auf eine Leerzeile am Anfang und Ende achten muss. Ich schreib dann immer irgendwas (7. 412. 34.) und freu mich darüber, dass Mark das wieder runterrechnen muss. Bei Mediawiki ist es wenigstens nur ein Zeichen (# # #).

      Gruß
      Kalk

      1. Aloha ;)

        ich finde die Markdown-Lösung für Listen sowieso überflüssig. Abgesehen von dem Problem beim Zitieren: Ob ich nun selber die Listenpunkte schreibe und durchnummeriere (1. 2. 3.) oder das von Markdown machen lassen (1. 1. 1.), wo ich dann noch auf eine Leerzeile am Anfang und Ende achten muss. Ich schreib dann immer irgendwas (7. 412. 34.) und freu mich darüber, dass Mark das wieder runterrechnen muss. Bei Mediawiki ist es wenigstens nur ein Zeichen (# # #).

        Damit sprichst du mir aus der Seele. Es ist aber eben nun einmal so, dass die Entscheidung für Markdown gefallen ist (mit allen Features - selbstverständlich), und somit müssen wir eben einen Workaround finden...

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
    2. Hallo Camping_RIDER,

      @CK: Wäre es denn eine Option, die automatische Nummerierung beim Klick auf den "Antworten"(mit Zitat)-Button für die Zitiererei hart zu kodieren? Also, dass beim Zitat nicht exakt der Quelltext eingefügt wird, sondern eben Quelltext mit hartkodierten Nummerierungen? Im Sinne davon, dass aus

      1. Aufzählungs-Text
      1. Aufzählungs-Text
      1. Aufzählungs-Text
      

      im Originalposting beim Zitieren

      {::nomarkdown}1.{:/} Aufzählungs-Text
      {::nomarkdown}2.{:/} Aufzählungs-Text
      {::nomarkdown}3.{:/} Aufzählungs-Text
      

      wird? Das würde dann nämlich funktionieren:

      1\. Aufzählungs-Text
      2\. Aufzählungs-Text
      3\. Aufzählungs-Text
      

      ergibt auch

      1. Aufzählungs-Text
      2. Aufzählungs-Text
      3. Aufzählungs-Text

      Bis demnächst
      Matthias

      --
      Signaturen sind bloed (Steel) und Markdown ist mächtig.
  3. Guten Abend

    Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

    Das finde ich auch, allerdings würde ich dies eher in den Bereich Komfort-Feature einordnen, während mir eine andere Konfiguration im Zusammenhang mit den Code-Blöcken wesentlich diskussionswürdiger erscheint:

    Nämlich die Frage, warum innerhalb von Code-Blöcken horizontales Scrollen offenbar nur ab einer gewissen Minimumbreite des Viewports erlaubt ist.

    Mir ist nun schon beim Lesen vieler Beiträge aufgefallen, dass an und für sich ordentlich formatierter Code durch den automatischen Umbruch deutlich an Leserlichkeit eingebüßt hat, was eigentlich nicht sein müsste, wie ich finde.

    Gerade HTML ist aufgrund der vertretbaren Praxis, Attribute nebeneinander zu notieren, sowie der weniger vertretbaren Praxis, zusätzlich noch Inline-Styles oder Event-Handler innerhalb der Tags unterzubringen, ja geradezu prädestiniert, breite Zeilen zu erzeugen. Etwaige Einrückungen noch nicht berücksichtigt.

    Auch wenn der automatische Zeilenumbruch im normalen Textfluss durchaus gewünscht ist, sollte der Code meiner Meinung nach so dargestellt werden, wie er nun mal formatiert ist, auch wenn er dadurch die gesetzte Maximalbreite des Fensters überschreitet.

    Viele Grüße,

    HAL

    1. @@( HAL )

      Auch wenn der automatische Zeilenumbruch im normalen Textfluss durchaus gewünscht ist, sollte der Code meiner Meinung nach so dargestellt werden, wie er nun mal formatiert ist, auch wenn er dadurch die gesetzte Maximalbreite des Fensters überschreitet.

      Nö. Denk mal an Smartphones. Da hätte man den Anfang der Zeile schon wieder vergessen, wenn man mit Scrollen am Ende angekommen ist.

      Und das ständige horizontale Hin-und-Herscrollen wäre ein PITA.

      LLAP 🖖

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Guten Abend Gunnar

        [...] Denk mal an Smartphones. Da hätte man den Anfang der Zeile schon wieder vergessen, wenn man mit Scrollen am Ende angekommen ist.

        Und das ständige horizontale Hin-und-Herscrollen wäre ein PITA.

        Das ist sicherlich richtig, aber dieser Problematik könnte man doch leicht Rechnung tragen, indem man über Media Queries die white-space Eigenschaft bei Viewports ab einer gewissen Größe von pre-wrap auf pre setzt.

        So würden zumindest die Benutzer größerer Bildschirme den Code richtig formatiert dargestellt bekommen und für diejenigen, welche die Seite auf dem Smartphone betrachten, würde sich die Situation zumindest nicht verschlechtern.

        Oder übersehe ich dabei etwas?

        Gruß,

        HAL

      2. Aloha ;)

        Auch wenn der automatische Zeilenumbruch im normalen Textfluss durchaus gewünscht ist, sollte der Code meiner Meinung nach so dargestellt werden, wie er nun mal formatiert ist, auch wenn er dadurch die gesetzte Maximalbreite des Fensters überschreitet.

        Nö. Denk mal an Smartphones. Da hätte man den Anfang der Zeile schon wieder vergessen, wenn man mit Scrollen am Ende angekommen ist.

        Hm, das sehe ich anders als du. Ich finde, dass Codeblöcke nicht in Zeilenumbrüche gequetscht werden sollten, auch nicht auf dem Smartphone. Die Lesbarkeit des Codes ist trotz der Einschränkung des Scrollens größer als mit Zeilenumbruch. Bei Fließtext würde ich dir jederzeit zustimmen, aber Quellcode gehört so formatiert wie er getippt wurde - auch auf dem Smartphone.

        Ich würde mich der Meinung deines Vorredners anschließen.

        Und das ständige horizontale Hin-und-Herscrollen wäre ein PITA.

        Was wäre das? Pita?

        Pita

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
        1. Guten Abend Camping_RIDER

          Und das ständige horizontale Hin-und-Herscrollen wäre ein PITA.

          Was wäre das? Pita?

          Pita

          No. More like Pain In The Ass.

          Viele Grüße,

          HAL

          1. Aloha ;)

            Und das ständige horizontale Hin-und-Herscrollen wäre ein PITA.

            Was wäre das? Pita?

            Pita

            No. More like Pain In The Ass.

            Ah, danke für die Erklärung :D Ich kenn mich zwar mit Abkürzungen soweit aus, die war mir aber noch nicht geläufig ;)

            Grüße,

            RIDER

            --
            Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar manchmal im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de) oder unter: # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
    2. Hallo

      Zeilennummern für Code-Blöcke wären eigentlich eine coole Idee.

      Das finde ich auch, allerdings würde ich dies eher in den Bereich Komfort-Feature einordnen, während mir eine andere Konfiguration im Zusammenhang mit den Code-Blöcken wesentlich diskussionswürdiger erscheint:

      Nämlich die Frage, warum innerhalb von Code-Blöcken horizontales Scrollen offenbar nur ab einer gewissen Minimumbreite des Viewports erlaubt ist.

      Mir ist nun schon beim Lesen vieler Beiträge aufgefallen, dass an und für sich ordentlich formatierter Code durch den automatischen Umbruch deutlich an Leserlichkeit eingebüßt hat, was eigentlich nicht sein müsste, wie ich finde.

      Und das ist noch nicht alles. Nicht nur, dass Code – mindestens am Desktop – nicht umgebrochen, sondern so, wie eingegeben, dargestellt werden sollte, ein sich dadurch ergebendes Problem ist das notwendige Querscrollen. Bei längeren Codeblöcken ist der Scrollbalken anfangs nicht erreichbar, weil er sich noch unterhalb des im Viewport dargestellten Ausschnitts der Seite befindet. Ich kann so nicht querscrollen. Um das Ende überlanger Zeilen zu lesen, ohne zuerst nach unten an das Ende des Codeblocks zu scrollen, dann nach rechts zu scrollen und dann wieder nach oben zu scrollen. Alternativ dazu kann ich den Cursor in eine lange Zeile setzen und dann nach rechts verschieben.

      Bequem ist anders.

      Kann man ohne JavaScript die Höhe des im Viewport angezeigten Postings ermitteln, um die Höhe eines Codeblocks derart zu beschränken, dass der untere Scrollbalken angezeigt wird, wenn der Codeblock einen nicht unerheblichen Teil der Höhe des Viewports einnimmt?

      Tschö, Auge

      --
      Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
      Terry Pratchett, „Gevatter Tod“
      1. @@Auge

        Kann man ohne JavaScript die Höhe des im Viewport angezeigten Postings ermitteln, um die Höhe eines Codeblocks derart zu beschränken, dass der untere Scrollbalken angezeigt wird, wenn der Codeblock einen nicht unerheblichen Teil der Höhe des Viewports einnimmt?

        max-height: 100vh (oder etwas weniger)

        LLAP 🖖

        --
        Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
        1. Hallo

          Kann man ohne JavaScript die Höhe des im Viewport angezeigten Postings ermitteln, um die Höhe eines Codeblocks derart zu beschränken, dass der untere Scrollbalken angezeigt wird, wenn der Codeblock einen nicht unerheblichen Teil der Höhe des Viewports einnimmt?

          max-height: 100vh (oder etwas weniger)

          Danke, probier ich im User-CSS aus.

          Tschö, Auge

          --
          Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
          Terry Pratchett, „Gevatter Tod“
      2. Guten Tag Auge

        [...] ein sich dadurch ergebendes Problem ist das notwendige Querscrollen. Bei längeren Codeblöcken ist der Scrollbalken anfangs nicht erreichbar, weil er sich noch unterhalb des im Viewport dargestellten Ausschnitts der Seite befindet. Ich kann so nicht querscrollen. Um das Ende überlanger Zeilen zu lesen, ohne zuerst nach unten an das Ende des Codeblocks zu scrollen, dann nach rechts zu scrollen und dann wieder nach oben zu scrollen. Alternativ dazu kann ich den Cursor in eine lange Zeile setzen und dann nach rechts verschieben.

        Bequem ist anders.

        In der Tat. Diese Problematik ist mir auch auf stackoverflow aufgefallen, wo die Zeilen der Code-Blöcke nicht umgebrochen werden.

        Ich habe übrigens festgestellt, dass das Scrollen von überfließenden Code-Blöcken auf dem Smartphone (zumindest auf meinem) sogar komfortabler ist, als mit der Maus, da man hier einfach über dem Block hin- und herwischen kann, ohne eine Scrollbar selektieren zu müssen.

        Vielleicht könnte man einen ähnlichen Effekt erzielen, indem man die Maus-Events dahingehend erweitert, dass die Verwendung des Mausrades in Verbindung mit der rechten Maustaste den Code-Block horizontal scrollt; Mausrad ohne rechte Maustaste scrollt wie Default vertikal.

        So könnte man sich auch auf dem Desktop die Bedienung der Scrollbars sparen.

        Darüber hinaus wäre eine reine Layoutlösung natürlich fein, aber ich sehe leider nicht, wie sich das verwirklichen ließe.

        Viele Grüße,

        HAL

        1. Hallo

          [...] ein sich dadurch ergebendes Problem ist das notwendige Querscrollen. …

          Bequem ist anders.

          In der Tat. Diese Problematik ist mir auch auf stackoverflow aufgefallen, wo die Zeilen der Code-Blöcke nicht umgebrochen werden.

          Gerne auch bei github.com. Mal schnell im Code einer Datei nach einem bestimmten Abschnitt schauen, kann kompliziert werden. :-)

          Vielleicht könnte man einen ähnlichen Effekt erzielen, indem man die Maus-Events dahingehend erweitert, dass die Verwendung des Mausrades in Verbindung mit der rechten Maustaste den Code-Block horizontal scrollt; Mausrad ohne rechte Maustaste scrollt wie Default vertikal.

          So könnte man sich auch auf dem Desktop die Bedienung der Scrollbars sparen.

          Darüber hinaus wäre eine reine Layoutlösung natürlich fein, aber ich sehe leider nicht, wie sich das verwirklichen ließe.

          Ich probiere gerade Gunnars Vorschlag mit folgenden Werten aus.

          .posting-content code.block {
          max-height: calc(100vh - 4rem);
          }
          

          Nun muss mir nur noch ein überhoher Codeblock begegnen. Ich könnte zwar auch eine Postingvorschau erzeugen, aber gelegentlich mag ich es, Geduld zu beweisen. :-)

          Tschö, Auge

          --
          Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
          Terry Pratchett, „Gevatter Tod“
          1. Hallo Auge,

            Nun muss mir nur noch ein überhoher Codeblock begegnen. Ich könnte zwar auch eine Postingvorschau erzeugen, aber gelegentlich mag ich es, Geduld zu beweisen. :-)

            Nimm dies, du Schurke ;-)

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.
            1. Hallo

              Nun muss mir nur noch ein überhoher Codeblock begegnen. Ich könnte zwar auch eine Postingvorschau erzeugen, aber gelegentlich mag ich es, Geduld zu beweisen. :-)

              Nimm dies, du Schurke ;-)

              Nicht mal das („gelegentlich mag ich es, Geduld zu beweisen“) lässt du mir. :-)

              Das verlinkte Posting bietet zwar auf Anhieb keinen Querscrollbalken – ja, das Fenster schmaler und breiter zu machen, ist mir möglich –, aber es eignet sich gut zur Feinjustage. Der konkrete Wert 100vh - 4rem passt bei einer Höhe von 2.25em von #top nur sehr knappich und unschön in's Bild. Also etwas großzügiger mit 100vh - 6.5rem ran und schon sieht es genehmer aus. Nun noch den Umbruch als solchen mit white-space: pre; unterbinden. Jetzt verhält sich der Codeblock wie gewünscht.

              Zusammenfassung:

              .posting-content code.block {
              white-space: pre;
              max-height: calc(100vh - 6.5rem);
              }
              

              Tschö, Auge

              --
              Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
              Terry Pratchett, „Gevatter Tod“
      3. Hallo Auge,

        Und das ist noch nicht alles. Nicht nur, dass Code – mindestens am Desktop – nicht umgebrochen, sondern so, wie eingegeben, dargestellt werden sollte, ein sich dadurch ergebendes Problem ist das notwendige Querscrollen. Bei längeren Codeblöcken ist der Scrollbalken anfangs nicht erreichbar, weil er sich noch unterhalb des im Viewport dargestellten Ausschnitts der Seite befindet.

        Kann man ohne JavaScript die Höhe des im Viewport angezeigten Postings ermitteln, um die Höhe eines Codeblocks derart zu beschränken, dass der untere Scrollbalken angezeigt wird, wenn der Codeblock einen nicht unerheblichen Teil der Höhe des Viewports einnimmt?

        Die Codeblöcke haben bereits eine maximale Höhe von 50em. Auch mit den vorgeschlagenen 100vh - 4rem kannst du nicht garantieren, dass der untere Scrollbalken immer sichtbar wäre, aber du kannst auf diese Weise garantieren, dass ein Codeblock immer ganz in den Viewport passt. 80vh ist vielleicht auch keine schlechte Idee.

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Hallo

          Und das ist noch nicht alles. Nicht nur, dass Code – mindestens am Desktop – nicht umgebrochen, sondern so, wie eingegeben, dargestellt werden sollte, ein sich dadurch ergebendes Problem ist das notwendige Querscrollen. Bei längeren Codeblöcken ist der Scrollbalken anfangs nicht erreichbar, weil er sich noch unterhalb des im Viewport dargestellten Ausschnitts der Seite befindet.

          Kann man ohne JavaScript die Höhe des im Viewport angezeigten Postings ermitteln, um die Höhe eines Codeblocks derart zu beschränken, dass der untere Scrollbalken angezeigt wird, wenn der Codeblock einen nicht unerheblichen Teil der Höhe des Viewports einnimmt?

          Die Codeblöcke haben bereits eine maximale Höhe von 50em.

          Ja, ich sah es. Das passt definitiv nicht in jeden Viewport.

          Auch mit den vorgeschlagenen 100vh - 4rem kannst du nicht garantieren, dass der untere Scrollbalken immer sichtbar wäre, …

          Das war nicht mein Ansinnen. Bei einem Codeblock, der gerade so von unten in den Viewport ragt, muss natürlich gescrollt werden, um an den Querscrollbalken zu gelangen.

          … aber du kannst auf diese Weise garantieren, dass ein Codeblock immer ganz in den Viewport passt.

          Eben.

          80vh ist vielleicht auch keine schlechte Idee.

          Ich habe die 100vh - 4rem gewählt, weil ich in meinem User-CSS #top festgenagelt habe. Das ist erstmal nur ein Lösungsansatz für mich.

          Tschö, Auge

          --
          Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
          Terry Pratchett, „Gevatter Tod“
          1. Hallo Auge,

            Ich habe die 100vh - 4rem gewählt, weil ich in meinem User-CSS #top festgenagelt habe. Das ist erstmal nur ein Lösungsansatz für mich.

            Ich auch. Und außerdem noch .personallinks.

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.