Wie kann man den Füllabsatz des Markdown-Modus korrigieren?

8

markdown-modeist insgesamt ziemlich gut darin, Absätze zu füllen, aber es gibt einen Fehler, der mich wirklich stört. Wenn ein Absatz eine Zeile enthält, die in zwei Leerzeichen endet, wird diese Zeile erst ausgefüllt und nie ausgefüllt.

Nehmen Sie zum Beispiel das folgende Beispiel, in dem die zweite Zeile in zwei Leerzeichen endet.

If I hit M-q right here at the start, this line will get broken into two, but the others won't.
If I hit M-q right here only the NEXT line will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the others won't.

Das Beispiel erklärt sich von selbst. Selbst wenn ich M-qam Anfang jeder Zeile drücke, bleibt mir Folgendes übrig:

If I hit M-q right here at the start this line will get broken into
two, but the others won't.
If I hit M-q right here only the NEXT line will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the
others won't.

Was ich gerne hätte, ist Folgendes:

If I hit M-q right here at the start this line will get broken into
two, but the others won't. If I hit M-q right here only the NEXT line
will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the
others won't.

F: Wie kann ich mich fill-paragraphso verhalten?

Es markdown-modeist klar, dass die gesamte mittlere Zeile als Absatztrennzeichen betrachtet wird, wenn es sich nur um die Leerzeichen am Ende handeln soll.

Malabarba
quelle

Antworten:

1

Ein uneleganter Hammer einer Lösung hierfür ist es, paragraph-separateals dateilokale Variable festzulegen. Der Modus setzt es "\\(?:[ \t\f]\\|.* \\)*$"als mode-local-variable; Wenn ich es auf den Standardwert zurücksetze (aus der Hilfezeichenfolge für paragraph-separate), wie folgt:

-*- mode: markdown; paragraph-separate: "[  ^L]*$" -*-

dann bekomme ich das Verhalten, nach dem Sie suchen:

If I hit M-q right here at the start, this line will get broken into
two, but the others won't.  If I hit M-q right here only the NEXT line
will get split. All because this line here ends in two spaces.__If I
hit M-q right here, this line will get broken into two, but the others
won't.

Der Kommentar im Git-Repo , der dies einführt, lautet:

Beachten Sie beim Ausfüllen von Absätzen harte Zeilenumbrüche

Ein Nachteil dieses Patches ist, dass Befehle zum Verschieben von Absätzen auch bei harten Zeilenumbrüchen anhalten und somit die Definition von "Absatz" in diesem Modus geringfügig ändern.

Nach langem Nachverfolgen denke ich , dass ich die Funktion tatsächlich von M-qbis auf aufgerufen habe fill-individual-paragraphs; Aber es ist kompliziert, und selbst nachdem ich mir diesen Kommentar angesehen habe, habe ich immer noch nicht genau herausgefunden, was los ist ... also stumpfer Hammer, und ich weiß nicht, welche anderen Konsequenzen dies haben wird. Aber es scheint zu funktionieren. :-)

Heiliger Erdferkel der Teppich
quelle
Vielen Dank. Leider bekommt dies nicht das Verhalten, das ich suche. Ich fülle die ersten 2 Zeilen korrekt aus, aber die 3 Zeilen sind falsch ausgefüllt. Beachten Sie den geringfügigen Unterschied zwischen dem Absatz, den Sie hier haben, und dem "gewünschten Ergebnis" in der Frage. Die dritte Zeile wird in das Durcheinander gezogen, wodurch sich die tatsächliche Art und Weise ändert, wie der Absatz durch Abschriften gerendert wird. Das ist unerwünscht. Die dritte Zeile sollte eine eigene Zeile bleiben. Ich vermute, dass dies eine Einschränkung der Füllabsatzlogik von Emacs ist und nur mit einer speziellen Funktion behoben werden kann.
Malabarba
Arghh, das habe ich verpasst! :-(
Saint Aardvark der Teppich