Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comm.software.gnus > #4216
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar
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