Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comm.software.gnus > #4216

Re: Gnus und format=flowed

From Helmut Waitzmann <nn.throttle@xoxy.net>
Newsgroups de.comm.software.gnus
Subject Re: Gnus und format=flowed
Date 2025-06-07 22:25 +0200
Organization A noiseless patient Spider
Message-ID <83qzzv2tay.fsf@helmutwaitzmann.news.arcor.de> (permalink)
References (12 earlier) <831py7l09r.fsf@helmutwaitzmann.news.arcor.de> <87msgu8mu2.fsf@pc-731.ybtra.de> <878qsev36l.fsf@pc-731.ybtra.de> <83seqmj5hu.fsf@helmutwaitzmann.news.arcor.de> <6eseqboktk.fsf@th-dorner.de>

Show all headers | View raw


 Thomas Dorner <dcsg241225.dorner@spamgourmet.com>:
> Helmut Waitzmann <nn.throttle@xoxy.net> writes:
> [...]

 [Emacs frisst bei der Verarbeitung des Fließformats eine (bis auf 
 Zitatanzeiger) leere Festformatzeile (und alle ihr unmittelbar 
 folgenden weiteren solchen Zeilen), die auf eine Fließformatzeile 
 folgt.] 


> Der Fehler scheint entweder in der Funktion fill-flowed in 
> mail/flow-fill.el oder in deren Aufruf in mm-inline-text in 
> gnus/mm-view.el zu liegen. Der 2. Parameter "delete-space" von 
> fill-flowed ist bei mir nil und wird aus irgendeinem 'delsp 
> abgeleitet. 
>

 Das dürfte eine Vorbereitung auf den RFC 3676 (Fließformat für 
 Sprachen mit nur seltenen oder überhaupt nicht vorhandenen 
 Leerzeichen im Text) sein, und hat mit dem von dir beschriebenen 
 Problem wahrscheinlich nichts zu tun. 


> Und beim Lesen bis zum Ende des aktuellen Absatzes in 
> nicht-Quotes (also Zeilen ohne '>' am Anfang) passiert 
> folgendes: 
>
>
> #v+
>             (while (and (not (eobp))
>                         (eq (char-before (line-end-position)) ?\s))
>               (end-of-line)
>               (when delete-space     ;;; hier wird das Leerzeichen am
>                 (delete-char -1))    ;;; Ende der Zeile stehen gelassen
>               (delete-char 1))
> #v-
>
> Wird das Leerzeichen am Zeilenende nicht gelöscht, werden alle 
> folgenden Leerzeilen gefressen und auch die nächste 
> nicht-Leerzeile dem aktuellen Absatz zugeschlagen. Damit wird 
> letztlich der komplette Text bis zu einer nicht leeren Zeile 
> ohne Leerzeichen am Ende zu einem einzigen Absatz umformatiert. 
>

 Das Problem ist nicht, dass das Leerzeichen nicht gelöscht wird.  
 Es darf ja auch beim Neuumbrechen nicht gelöscht werden (es sei 
 denn, der Fließformat‐Parameter „delsp“ verlangt es). 


 Ich vermute etwas anderes:  Gnus/Emacs sammelt bei der 
 Verarbeitung eines Fließtextabsatzes solange Zeilen auf, bis es 
 als bisher aufgesammelten Text eine Zeile erhält, die nicht mit 
 einem Leerzeichen endet.  Im einzelnen: 


 Gnus schaut eine Zeile an und prüft (Pseudo-Code): 


   while
     der bisher aufgesammelte Text
     hat ein Leerzeichen unmittelbar
     vor dem Zeilenvorschub (also am Zeilenende)
   do
     Lösche den Zeilenvorschub nach dem Leerzeichen.
     (Dadurch wird die nächste Zeile aufgesammelt
     und wird Teil des bisher aufgesammelten
     Textes.)
   done


 Und dieser Algorithmus ist fehlerhaft.  Der Test, ob der 
 Fließformatabsatz zu Ende gekommen ist, darf nicht am 
 aufgesammelten Text gemacht werden, sondern muss an der zuletzt 
 aufgesammelten Zeile gemacht werden, ehe sie aufgesammelt wird: 


   Fließtextende_erreicht:=false
   while
    not Fließtextende_erreicht
   do
     Schau die folgende Zeile an.
     if
       die Zeile hat kein Leerzeichen
       am Zeilenende
     then
        Fließtextende_erreicht:=true
     endif
     Lösche den Zeilenvorschub am Zeilenende des
     bisher aufgesammelten Texts. (Dadurch wird die
     Zeile aufgesammelt und wird Teil des
     bisher aufgesammelten Textes.)
   done


 Der Unterschied zwischen beiden Algorithmen kommt zum Tragen, 
 wenn die aufzusammelnde Zeile eine (originale oder zitierte) 
 Leerzeile ist, denn dann ist der Test, ob das Absatzende erreicht 
 ist, negativ, obwohl er positiv sein müsste. 


> Ich habe bei mir probeweise mal die Funktion durch eine eigene 
> Kopie ersetzt, in der ich - sicherlich nicht optimal - genau 
> dieses Problem abfange, in dem ich "(when delete-space" durch 
>
>
> #v+
>               (when (or delete-space (looking-at "\n\n"))
> #v-
>
> ersetze und die Formatierung sieht auf den ersten Blick richtig 
> aus. 
>

 Ich vermute, das sieht nur zufällig richtig aus.  Es scheitert 
 bei zitierten Absätzen, weil dort der Lisp‐Ausdruck 


   (looking-at "\n\n")


 aufgrund der Zitatanzeiger zwischen den beiden Zeilenvorschüben 
 den Wahrheitswert „false“ statt „true“ liefert. 


 Darüber hinaus machen vermutlich auch noch 
 Space‐Stuffing‐Leerzeichen einen Strich durch die Rechnung. 


 Berichte bitte, wie die zwei folgenden Absätze bei dir aussehen: 


 Hier ist der erste Absatz. 
 
 
 Und hier folgt der zweite Absatz. 


 Werden beide Absätze mit deiner Korrektur zu einem einzigen 
 zusammengezogen? 


 Ein korrekter Algorithmus darf sie nicht zusammenziehen, denn der 
 erste Absatz wird mit einer Leerzeile, die ein 
 Space‐Stuffing‐Leerzeichen und sonst nichts enthält, somit einer
 Festformat‐Leerzeile mit Space‐Stuffing, beendet. 


 Danach folgt eine Festformat‐Leerzeile, die ebenfalls ein 
 Space‐Stuffing‐Leerzeichen und sonst nichts enthält. 


 Danach folgt dann der zweite Absatz. 

Back to de.comm.software.gnus | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2024-12-17 23:42 +0100
  Re: Gnus und format=flowed Thomas Dorner <dcsg241225.dorner@spamgourmet.com> - 2024-12-25 16:15 +0100
    Re: Gnus und format=flowed Michael Bäuerle <michael.baeuerle@gmx.net> - 2024-12-25 17:35 +0100
      Re: Gnus und format=flowed Thomas Dorner <dcsg241225.dorner@spamgourmet.com> - 2024-12-25 20:29 +0100
    Re: Gnus und format=flowed Mekeor Melire <mekeor@posteo.de> - 2025-06-06 11:19 +0200
      Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-06-07 22:44 +0200
        Re: Gnus und format=flowed Mekeor Melire <mekeor@posteo.de> - 2025-06-09 02:52 +0200
          Re: Gnus und format=flowed Mekeor Melire <mekeor@posteo.de> - 2025-06-09 02:57 +0200
            Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-06-09 18:19 +0200
          Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-06-09 14:58 +0200
    Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-06-07 22:25 +0200
      Re: Gnus und format=flowed Thomas Dorner <dcsg250608.dorner@spamgourmet.com> - 2025-06-08 14:38 +0200
        Re: Gnus und format=flowed Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-06-09 01:31 +0200

csiph-web