Help for Alpine - Flowed Text
You are in Home > Miscellaneous > Flowed Text


  1. Introduction
  2. What is Flowed Text (Technical Explanation)
  3. Configuration Options Relevant to Flowed Text
  4. When Does Alpine Send Flowed Text?
  5. How Can I Make Alpine Flow Text If it is Not Flowed?


Flowed text is a form of text in which spaces play the role of continuation of paragraphs. Technically it was first defined in RFC 2646, later extended in RFC 3676. Alpine support of flowed text conforms to the latter RFC.
The main point of flowed text is to display text correctly despite of the screen width of the recipient of the message. Depending on the size of the screen of the recipient of the message, the displayed text may contain text wrapped in undesirable ways. This is a more delicate point in small screens (like a PDA, cell phone, etc). Normally when a text written in a 80 columns terminal is displayed in a 30 columns screen, lines are cut in the middle and the formatting of the message is destroyed. Vice versa, when a message was written in a 30 columns screen and it is displayed in a 80 column screen, the message feels like it was wrapped too early. The purpose of flowed text is to be able to send and receive text that will adapt to the screen width of the display device, no matter what device that is, so the same text will look well formatted in a 30 or 80 columns screen.
Alpine can send a display flowed text correctly.

What is Flowed Text (Technical Explanation)

In every message there are three types of lines, signature separator lines, flowed lines and fixed lines. There can be any number of these lines.
A signature separator line is a line whose only content in two dashes followed by a space. This is an old convention in USENET which got propagated to e-mail.
A flowed line is a line which is not a signature separator line whose last character is a space. The idea is that the next line to a flowed line is a line in the same paragraph as that line. In other words, you are signaling with this space a continuation of paragraph.
A fixed line is a line that does not end in a space. A fixed line is the last line of a paragraph.
In other words, in flowed text, a paragraph is composed of several flowed lines ended by a fixed line.
If you can resize the screen of your web browser to widen or shorten the columns, you will see the text of this page adapting to the screen width. This is exactly what is supposed to happen with flowed text in e-mail, and the interplay between fixed and flowed lines is used to accomplish this.
Of course, you could have a paragraph of only fixed lines, but it will fail the test described above, which is undesirable since we want text to adapt to any screen size.
The above plan is a good idea, but there is a problem when you try to resize quoted text, this is because a 74 characters quoted line, when resized to a screen of 30 columns in a web brower produces several lines. Only one of these lines is quoted (the first one). The other two lines are not. There is an intent in this format to warn the displaying agent that there is quoted text, so that wrapping will preserve quoting in all lines. Since it is very difficult to guess random quote strings, there is a simplification where the only quote allowed is ">". The string "> " (a bigger than sign followed by a space) is not considered a quote string. In this way, you only need to count how many consecutive ">" characters are in a line in order to know the quote string of a paragraph. Alpine deviates a little bit of this convention and it accepts "> " as a quote string too.
Accepting only one type of quote string makes this format simple. However, there is a tradition of adding a quote to any line that begins with the string "From ", which adds one level of quoting to a paragraph containing such line. Due to this problem, the format destroys this quote by "stuffing a space" to its left. When processing a message, leading spaces from lines must be removed, which means that a sending agent must add two spaces so that only one be displayed. Alpine takes care of this, which means that it adds a space to the text that you wrote automatically.
There are more technical details which have been omitted from this presentation, which you can read directly in the RFC that defines flowed text. This is just a quick summary so that you can get the basic ideas of what this format is, and how Alpine handles it.

Configuration Options Relevant to Flowed Text

  1. [  ] Do Not Send Flowed Text (pinerc name: quell-flowed-text): If this option is enabled, Alpine will not send messages that are marked as flowed text, but still display it.
  2. [ ] Strip White Space Before Sending (pinerc name: strip-white-space-before-send): If this feature is enabled, all spaces at the end of a line will de deleted and therefore the message will not be tagged format=flowed. If not, then all trailing spaces in a line will be replaced with only one space.
  3. Viewer Margin Left (pinerc name: viewer-margin-left): this feature has nothing to do with flowed text, but it is the symmetrical option to the next one, which does have to do with flowed text. In any case the number specified here is the number of spaces added at the beginning of each line when Alpine displays text, be it flowed or not.
  4. Viewer Margin Right (pinerc name: viewer-margin-right): One of the problems of the display of flowed text is that it will be displayed up to right most column of the screen. This configuration variable tells Alpine how many characters it should leave empty up to the right margin. Normally this makes reading flowed text nicer. However, if your screen is too wide this may have the undesirable effect of having too much text in each line of the screen. In Alpine4.61 you can use this feature to specify in which column you want Alpine to wrap flowed text in the screen, this is done by entering the column number followed by the lowercase letter c, so for example 72c means to wrap text at the 72 column of the screen.
    The amount of space left for displaying text in the screen between Viewer Margin Left and Viewer margin Right must be at least 8 characters. In case this limit is passed, this variable goes back to its default value of 4 characters.
  5. Quote Replace String (pinerc name: quote-replace-string) This configuration option has to do with the display of a flowed message when you read it, this does not apply to what you see when you reply or forward a message. This is a configuration option which allows you to replace the quote string when a flowed text is being displayed. For example one could replace the quote string to be | instead of >. This is useful because the default is that different levels of quoting are displayed separated by spaces, and you can use this option to override this behavior.
    If you use this option you could define this variable to be ">", which has the effect of leaving no space between quote strings, so more quoted text per line is displayed. The problem of defining this variable like that, is that your displayed text will appear merged with the quote string, which may be undesirable. One way to create such space is to add it to the quote string, as in "> ". This defeats the purpose of this variable, since it makes the quote string much longer than needed.
    The way to avoid this problem is to define the quote string replace with no space at the end, to save space and to tell Alpine to add a space at the end, between the full quote string and the displayed text. This is done by defining this field as ">" " " (a bigger than sign enclosed in double quotes, separated by a space of a space enclosed in double quotes). The last space enclosed in quotes is the text that Alpine adds between the full quote string and the text of the body and can be replaced by anything (yes, even anoter quote string with a space at the end!)
  6. [X] Quote Replace Nonflowed (pinerc name: quote-replace-nonflowed) is a feature which enables Alpine to use the Quote Replace String value for every message, not only those that are flowed text.

When Does Alpine Send Flowed Text?

There are several situations under which Alpine will send flowed text.
  1. When composing a new message, or continuing a message that is already flowed.
  2. When replying to a message, and your quote string is either ">" or "> ". Observe that if you correspond with someone who uses a different quote string than the above mentioned strings and has an e-mail program that is aware of flowed text, then when you quote quoted text in their messages using either ">" or "> ", there's a very good chance that the message will look corrupted in the screen of the recipient, in the sense than the second level of quoting will look mangled. If your recipient reads the message using Alpine, there is a patch which will fix this for you when you read that message, but if you do not, text may look garbled.
  3. When forwarding a message.
Of course, none of these applies if you have already turned off sending of flowed text.
There is also an option to not to send flowed text even if you have not enabled any of the features that would permanently disable sending of flowed text. This can be done when you are in the editor and press ^X to send a message. In the menu of the bottom of the screen there is a configuration option ^V, which is active only when the message that you are going to send will be tagged format=flowed. When you press ^V Alpine will not tag that message as format=flowed.

How Can I Make Alpine Flow Text If it is Not Flowed?

If you are sending flowed text, and you don't know if your text is already flowed, you can force it to flow by justifying it. In Pico this is done by pressing ^J. This only justifies one paragraph at the time. Observe that you can justify the full message with the command ^W^U (the reason why it was redefined was because it is possible to press ^W^J without intending to do so, but not ^W^U). Alpine (actually Pico) does a good job of reflowing text when justifying it (modulo a few disagreements I have with the way some text is flowed), especially when the only quote string is either ">" or "> ". If there are other quote strings in the message that you are trying to flow, you will need a patch to do this more reliably.
You are in Home > Miscellaneous > Flowed Text