nyousefi / Fountain

An open source implementation of the Fountain screenplay formatting language.
http://fountain.io
MIT License
540 stars 55 forks source link

vim textwidth=72 adds newlines that should not show up in rendered output (not just a vim issue) #54

Open mw44118 opened 3 months ago

mw44118 commented 3 months ago

I have a scene description in my .fountain file that looks like this:

Joe watches Maggie get up, leave the room, then come back carrying a
chair from his dining table in the other room.

In my case, my text editor (vim, but who cares, this is a bigger issue than just vim) is configured to add a newline after 72 characters.

I get output that looks like this (I'm using screenplain):

Joe watches Maggie get up, leave the room, then come back
carrying a
chair from his dining table in the other room.

But I want output that looks like this instead:

Joe watches Maggie get up, leave the room, then come back carrying a chair from his dining table in the other room.

What I want is that the wrapping should happen at the very end. Sorta like in HTML, line breaks get ignored usually. The line breaks are just because I don't like really long lines.

This might be a fanciful wish, but I wonder if it is even possible to have the parsing apps understand that some newlines should be discarded, but others should be respected.

Is there already a way to achieve what I want? In other words, can I split my lines at 72 characters, but have those newlines be ignored.

This might be a "eat my cake and have it too" thing, but I'm hoping that other folks at least understand what I'm hoping for.

mw44118 commented 3 months ago

I have a rough idea of how to do this. Maybe treat newlines in some blocks different than others.

This is a dialog block, and the newlines here should persist / appear in the rendered output:

    DEALER
    Ten.
    Four.
    Dealer gets a seven. Hit or stand sir?

Meanwhile, in an action / scene description block, these newlines oughtta be ignored:

Joe watches Maggie get up, leave the room, then come back carrying a
chair from his dining table in the other room.

So, maybe the solution is to have the parsing code discard newlines in ACTION blocks only. Or, maybe, only preserve newlines when in dialog blocks.

yorkshiremanII commented 3 months ago

Interesting issue,

So if I recast your question, I set my editor to a line length of 72, and it uses a hard return (CR/LF) to implement what you told it to do.

Subsequently, I want to ignore the line length and allow a soft line wrap determined by a different editor/format.

The rough guideline for WP systems is to treat a paragraph as a unit, and align it according to the presentation surface, as modified by margins, indents, and tabs.

By that token, if you are using an editor which is not WP - such as a coding oriented app, then the solution would be to remove the 72 character limit (shades of 80 column punch cards?) and allow the final presentation to do its thing.

In other words - if you insert a newline, it stays. If you didn’t, your initial input may have a very long line if it is not rendering to page width, but will wrap correctly when you move on to printing or viewing the finished work.

Maybe I’m overthinking this.

On 26 May 2024, at 16:54, W. Matthew Wilson @.***> wrote:

I have a rough idea of how to do this. Maybe treat newlines in some blocks different than others.

This is a dialog block, and the newlines here should persist / appear in the rendered output:

DEALER
Ten.
Four.
Dealer gets a seven. Hit or stand sir?

Meanwhile, in an action / scene description block, these newlines oughtta be ignored:

Joe watches Maggie get up, leave the room, then come back carrying a chair from his dining table in the other room. So, maybe the solution is to have the parsing code discard newlines in ACTION blocks only. Or, maybe, only preserve newlines when in dialog blocks.

— Reply to this email directly, view it on GitHub https://github.com/nyousefi/Fountain/issues/54#issuecomment-2132268859, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKLGJ6G6NDHRFG5AR2LTEDZEIATPAVCNFSM6AAAAABIJ4QVXSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZSGI3DQOBVHE. You are receiving this because you are subscribed to this thread.

mw44118 commented 3 months ago

I think you get the issue! In short, I'm asking for something like... I wanna see text wrapped at 72 characters in vim, but when I render my fountain files, I want those wraps at 72 characters to be ignored.

I started reading the code in the screenplain project last night. Maybe I can add an option that does this, but not by default.

yorkshiremanII commented 3 months ago

You might want to make it more general purpose by allowing the character width to be ’n’ wide.

Or a wide font, and only 63 characters fit?

Tricky one.

Try a different editor?

How to make it work responsively?

Good luck with that..

On 27 May 2024, at 15:15, W. Matthew Wilson @.***> wrote:

I think you get the issue! In short, I'm asking for something like... I wanna see text wrapped at 72 characters in vim, but when I render my fountain files, I want those wraps at 72 characters to be ignored.

I started reading the code in the screenplain project last night. Maybe I can add an option that does this, but not by default.

— Reply to this email directly, view it on GitHub https://github.com/nyousefi/Fountain/issues/54#issuecomment-2133574232, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKLGJ2B3LQE6PZLRDM4ZE3ZEM5W3AVCNFSM6AAAAABIJ4QVXSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZTGU3TIMRTGI. You are receiving this because you commented.

shaedrich commented 3 months ago

I'm not sure if that is a problem for the syntax itself and not more of a (v)implementation detail of the respective "editor" plugin