GithubHelp home page GithubHelp logo

piersdeseilligny / betterfountain Goto Github PK

View Code? Open in Web Editor NEW
349.0 9.0 53.0 54.03 MB

A screenwriting app integrated into visual studio code

Home Page: https://marketplace.visualstudio.com/items?itemName=piersdeseilligny.betterfountain

License: MIT License

TypeScript 16.87% HTML 5.85% JavaScript 72.03% CSS 5.25%
fountain vscode vscode-extension screenwriting screenplay fountain-editor

betterfountain's Issues

Scenes outline

It would be great to show (and PDF printable) the outline sorted by scenes.
That would make it easier to shot all the scenes in the same setting at the same time.

Thank You!

Hi There!
I don't have an issue at the moment! I just wanted to say thanks for building this! It is really awesome!

PDF Export Bookmarks

It would be nice, when the Pdf-Export would have the Option to set a Bookmark at every new Scene.

BetterFountain stops the Vim extension working

I'm not sure about the reason, but when I am using Better Fountain, the Vim extension stops working.

Specifically, it stops the Vim hotkeys working if I load a .fountain file when BetterFountain is installed. If I disable and then reenable BetterFountain, then the Vim keys will continue to work.

Love the extension, but this is making it a little difficult for my vim addicted fingers to work. My suspicion is that it may be related to the autocorrect - but that's the vaguest hunch. I'll do some more investigation myself.

Incorrect indentation of characters and dialogue when exporting PDFs where dialogue pieces are indented

Given I open the Brick & Steel screenplay (in src\test\scripts\brick_and_steel_crlf.fountain)
When I export the screenplay to PDF using the command "Export screenplay PDF"
Then the indentation in the below scene is incorrect

INT. TRAILER HOME - DAY

This is the home of THE BOY BAND, AKA DAN and JACK.  They too are drinking beer, and counting the take from their last smash-and-grab.  Money, drugs, and ridiculous props are strewn about the table.

			JACK
		(in Vietnamese, subtitled)
	*Did you know Brick and Steel are retired?*

			DAN
	Then let's retire them.
	_Permanently_.

Jack begins to argue vociferously in Vietnamese (?), But mercifully we...

This is most likely happening due to the indentation of the dialogue and character markers. I assume that it should be indented correctly though since "Brick & Steel" is one of the fountain example scripts and because other PDF converters handle it. Below is a screenshot comparing afterwriting.com (left) vs. betterfountain (right):

image

Forced scene headers are scoped and highlighted as numbers

Forcing a scene header by starting the line with a period (.) causes the whole line to be scoped as constant.numeric.scene.fountain instead of keyword.other.class. I propose replacing the scene heading regular expression (on line 265 of fountain.tmlanguage) with this instead:

<string>(?i)^([.](?=[0-9a-z])|(?:[*]{0,3}_?)(?:int|ext|est|int[.]?\/ext|i[.]?\/e)[. ])(.+?)(#[-.0-9a-z]+#)?$</string>

That scopes the scene header the same whether it starts with a period or with "INT", "EXT", etc. As a bonus, it also scopes a trailing scene number (alphanumeric characters surrounded by hash signs) as constant.numeric.scene.fountain, which I assume was the intent at some point.

Broken Russian alphabet in exported PDF file

In preview window Russian alphabet is shown correctly, but in exported PDF file it's looks like this:

BtBCâÔBCâ =CR BC : D 4C„0C ́>C40CÄ8... Aä=C‚ :
D >Cd0C ́5CÔ8Dâ @C ACô>Ct=C ND$ADò BCä;DÄ:Câ =C
C =C4;C„9D :Cä< Dô7D ́:CRâ D 0C$4C O CÔ0Cô8D 0C°
D 0Ct@C 1CäBDt8C¤C Câ 4C =CÔ>C’ ?D >C ;CT<CRà
B$0C¢ÔGD$> C CCD5CÂ 6CD0D$L.

Draft date not in PDF export

Steps to Reproduce

Create a fountain screenplay that includes in the title page section:

Draft date: 04/20/2019

Export the screenplay to a PDF. (there's nothing special about this particular date, it's just an example).

Issue

The draft date is not included on the title page.

The draft date does appear in the live preview in VS Code, just not in the exported PDF.

Auto-add "(CONT'D)"

This is a nice feature - and also a divisive one, for very good reasons.

Auto-add "(CONT'D)" is an option found in Final Draft and other screenwriting processors, which automatically adds (CONT'D) to the character's name when he reprises a speech interrupted by a fast and significant action.

Such an option spares a lazy writer a couple of strokes, but it wouldn't work in an action-packed scene - where the lines of a character might indeed belong to very distant moments in the scene.

So the utility of this feature varies from person to person, and possibly from project to project. That's why I believe that it would be very useful to have.

Dark Mode for Preview

Hi,

Thanks for this work, I love it.

I just discovered this extension today. I think it will be important. Why?

Because Markdown is on the rise with the static/wiki generators we use (I use 7 platforms) and for those of us who do screenwriting, .fountain (different to MD) is the obvious choice. The best txt editor for coding used to be Sublime Text, then came Atom and now MS VS Code has pushed it's way to the top. So this extension will be important in future for Screenwriters, though many of them do not know of it yet!

Almost all my apps on Windows and Android (including dark Substrautm dark themes for sys) are black/dark. For a couple of decades millions of us hacked MS Windows with dark themes (thousands of themes in theming forums) by changing sys files etc. These caused problems with some apps. Finally after 20+ years MS finally extended the dark theme for apps it had released a few years ago to explorer (folder files) a few months ago. Also apps can now detect dark setting and auto switch to dark, as in a few apps already doing this.

Most coders, graphic workers, photographers, CGI Workstation staff, animators etc only use dark apps for many reasons. Pro CGI rooms even have lighting engineers who install special equipment to control the darkness levels and controls.

There are many reasons many genres of Computer workers use dark themes for apps and systems:

  • Eye sensitivity
  • Can Work Longer
  • With less stress on the eye and brain
  • No Flicker (Was worse on CRT days but still subtly there with white)
  • Better precision
  • Longer battery life on laptops and portable devices
    etc.

So please give us the option for dark mode for preview:

Black Background + White/Light Grey Font

Did I say I love this extension? Thanks again.

https://www.instagram.com/worldcode/

https://www.instagram.com/programmerrepublic/

Outline section not displaying any scenes

I am not too sure whether this is a bug or whether this feature never existed. But judging from the readme it seems like this feature should work. If the feature never existed, please feel free to close this ticket.

Expected behaviour
When opening a fountain document
Then I should see in the "Outline" section a list of scenes

Actual behaviour
When opening a fountain document
Then I see in the "Outline" section the message "The active editor cannot provide outline information"

Below example screenshot is showing the Big Fish script.

image

Syntax Highlighting fails on Linux

I have Visual Studio Code installed on Ubuntu 18.04. Syntax highlighting was not working and using "Inspect TM Scopes" produced an error that "no grammar provided for <text.source.fountain". But, it worked fine on my Windows 10 install.

The fix is simple. Linux filenames are case-sensitive. The syntax file is named "fountain.tmlanguage" but needs to be renamed to "fountain.tmLanguage" instead (capital "L" in "tmLanguage") to match the filename in "packages.json". Once I renamed that file manually, syntax highlighting started working.

export pdf creates filename.pdf..pdf output

Running on mac High Seirra, latest VSC. when I go to export a pdf I get an file output box and it has prefilled the filename with filename.pdf..pdf (which I think is a bit daft). If I edit the filename to end with .pdf I get an error message

You cannot save this document with extension “.pdf” at the end of the name. The required extension is “..pdf”.

Is this the correct behaviour? If so, what is the reasoning. Normally I just want to export a file with a .pdf extension.

No scene numbers in exported pdf

I can't get page numbers to show in exported pdf.

According to fountain syntax it should be something like:
INT. KITCHEN SINK #1#
and
EXT. FIELD #2.1#

Are these unsupported or am I doing something wrong? I looked and there seems to be some flags in afterwriting package related to scene numbering.

Can't export to PDF

Getting the following error when I try exporting my script to PDF. The runtime issue isn't really a big deal but this is kind of annoying. Any idea what's going on here? If you can point me to the right portion of your code that handles this, I wouldn't mind helping work through the problem.

Failed to export PDF: Error: Command failed: afterwriting --source "c:\Users\henryquinn\Desktop\screenplays\TheMarriagePact\index.fountain" --pdf "c:\Users\henryquinn\Desktop\TakeTwo..pdf" --overwrite --config "c:\Users\henryquinn\Desktop\betterfountain.pdf.json" 'afterwriting' is not recognized as an internal or external command, operable program or batch file.

Synopsis text is counted in running time estimate

I noticed that a screenplay that I'm working on that's only on page 8 shows a 32:27 minute running time -- it appears that Better Fountain is counting all the synopsis lines that begin with = as if they're action descriptions and thus affect the running time. I don't know whether it's also counting the Markdown-esque section lines. (Yes, I have about a 4000-word outline here...)

Option "Double the space between scenes" breaks live preview

Repro:

  1. Confirm screenplay live preview is working for a fountain file.
  2. Change setting "double the space between scenes" to ON.
  3. Regenerate live preview. Preview now broken.
  4. Reset the option to OFF.
  5. Regenerate live preview. Preview now working again.

Sample log error output when broken:

[2019-04-30 17:08:40.167] [exthost] [info] extension host started [2019-04-30 17:08:40.190] [exthost] [info] ExtensionService#_doActivateExtension piersdeseilligny.betterfountain {"startup":false,"activationEvent":"onLanguage:fountain"} [2019-04-30 17:08:40.190] [exthost] [info] ExtensionService#loadCommonJSModule C:\Users\migsdaf\.vscode\extensions\piersdeseilligny.betterfountain-1.3.0\out\extension [2019-04-30 17:08:40.827] [exthost] [info] ExtensionService#_doActivateExtension vscode.debug-auto-launch {"startup":true,"activationEvent":"*"} [2019-04-30 17:08:40.827] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\debug-auto-launch\dist\extension [2019-04-30 17:08:40.831] [exthost] [info] ExtensionService#_doActivateExtension vscode.emmet {"startup":true,"activationEvent":"*"} [2019-04-30 17:08:40.831] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\emmet\dist\extension [2019-04-30 17:08:40.837] [exthost] [info] ExtensionService#_doActivateExtension vscode.git {"startup":true,"activationEvent":"*"} [2019-04-30 17:08:40.837] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\git\dist\main [2019-04-30 17:08:40.862] [exthost] [info] ExtensionService#_doActivateExtension vscode.merge-conflict {"startup":true,"activationEvent":"*"} [2019-04-30 17:08:40.862] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\merge-conflict\dist\extension [2019-04-30 17:08:40.868] [exthost] [info] eager extensions activated [2019-04-30 17:08:41.108] [exthost] [error] [piersdeseilligny.betterfountain] provider FAILED [2019-04-30 17:08:41.111] [exthost] [error] TypeError: Cannot read property 'length' of undefined at GetFullRanges (C:\Users\migsdaf\.vscode\extensions\piersdeseilligny.betterfountain-1.3.0\out\extension.js:526:48) at MyFoldingRangeProvider.provideFoldingRanges (C:\Users\migsdaf\.vscode\extensions\piersdeseilligny.betterfountain-1.3.0\out\extension.js:558:18) at define.provideFoldingRanges.a.asPromise (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:596:505) at t.asPromise.Promise (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:49:430) at new Promise () at Object.t.asPromise (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:49:402) at H.provideFoldingRanges (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:596:476) at define.$provideFoldingRanges._withAdapter.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:608:467) at B._withAdapter (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:599:159) at B.$provideFoldingRanges (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:608:445) at d._doInvokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:622:11) at d._invokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:621:716) at d._receiveRequest (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:620:341) at d._receiveOneMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:619:141) at define.constructor._protocol.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:617:400) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:40:460) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at a (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:467) at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:513) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at y._receiveMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:181:276) at define.constructor.socketDisposables.push.socketReader.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:178:415) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at f.acceptChunk (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:175:35) at define.constructor.register.socket.onData.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:174:410) at Socket.t (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:182:689) at Socket.emit (events.js:182:13) at addChunk (streamreadable.js:279:12) at readableAddChunk (streamreadable.js:264:11) at Socket.Readable.push (streamreadable.js:219:10) at Pipe.onread (net.js:636:20) [2019-04-30 17:11:00.690] [exthost] [info] ExtensionService#_doActivateExtension vscode.configuration-editing {"startup":false,"activationEvent":"onLanguage:jsonc"} [2019-04-30 17:11:00.690] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\configuration-editing\dist\extension [2019-04-30 17:11:00.696] [exthost] [info] ExtensionService#_doActivateExtension vscode.json-language-features {"startup":false,"activationEvent":"onLanguage:jsonc"} [2019-04-30 17:11:00.696] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\json-language-features\client\dist\jsonMain [2019-04-30 17:11:00.712] [exthost] [info] ExtensionService#_doActivateExtension vscode.typescript-language-features {"startup":false,"activationEvent":"onLanguage:jsonc"} [2019-04-30 17:11:00.712] [exthost] [info] ExtensionService#loadCommonJSModule c:\Andrew\Utility\VisualStudioCode\resources\app\extensions\typescript-language-features\dist\extension [2019-04-30 17:11:13.298] [exthost] [error] TypeError: current_token.is is not a function at Object.exports.parse (C:\Users\migsdaf\.vscode\extensions\piersdeseilligny.betterfountain-1.3.0\out\afterwriting-parser.js:446:66) at context.subscriptions.push.vscode.commands.registerCommand (C:\Users\migsdaf\.vscode\extensions\piersdeseilligny.betterfountain-1.3.0\out\extension.js:245:34) at d._executeContributedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:477:621) at d.$executeContributedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:478:6) at d._doInvokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:622:11) at d._invokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:621:716) at d._receiveRequest (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:620:394) at d._receiveOneMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:619:141) at define.constructor._protocol.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:617:400) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:40:460) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at a (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:467) at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:513) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at y._receiveMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:181:276) at define.constructor.socketDisposables.push.socketReader.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:178:415) at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708) at f.acceptChunk (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:175:35) at define.constructor.register.socket.onData.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:174:410) at Socket.t (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:182:689) at Socket.emit (events.js:182:13) at addChunk (streamreadable.js:279:12) at readableAddChunk (streamreadable.js:264:11) at Socket.Readable.push (streamreadable.js:219:10) at Pipe.onread (net.js:636:20) fountain.livepreview

Thank you for this beautiful extension! What a delight!

I was really impressed by how the https://quoteunquoteapps.com/weekendread/ app works. It lets you read screenplays on a smartphone, without the soul-sucking pain of pinching in and out of a PDF file. For me it was a great mix of ease of use combined with the standard way of screenplays.

So I decided to throw together a PHP script to convert my .fountain files to such HTML, so that I could just share screenplay links with friends, and they could ready them with the same ease, as I had discovered on the https://quoteunquoteapps.com/weekendread/ app.

Given the kind of fanboy I am of VSCode, I was like- lets see what is out there, and that's when I found your plugin, installed it immediately, and LOVED it.

Thanks for making this man. I look forward to sending some pull requests your way soon.

===

Here is the quick and dirty PHP I was on my way with before I found your plugin.

<?php

// Define various things a line could be.
define('MIN_VALUE', '0.0'); 


define('UNKNOWN_LINE_TYPE', 0);
define('EMPTY_LINE', 1);
define('SCENE_HEADING', 2);
define('CHARACTER', 3);
define('DIALOGUE', 4);
define('ACTION_LINE', 5);
define('TRANSITION', 6);

$code = [
    'UNKNOWN_LINE_TYPE',
    'EMPTY_LINE',
    'SCENE_HEADING',
    'CHARACTER',
    'DIALOGUE',
    'ACTION_LINE',
    'TRANSITION',
];

$filepath = "/Users/sumeetpareek/github/[masked this part of the path]/main-draft.fountain";
$lines = file($filepath, FILE_IGNORE_NEW_LINES);
$line_type = [];

// Do not proceed if the first line is not empty.
if (!empty($lines[0])) {
    die("First line of the input file must be an empty line.\n\n");
}
$line_type[0] = EMPTY_LINE;

// Iterate on every line to set their line_type.
for ($curr_line_num = 1; $curr_line_num < count($lines); $curr_line_num++) {
    $curr_line = $lines[$curr_line_num];

    if (empty($curr_line)) {
        $line_type[$curr_line_num] = EMPTY_LINE;
        continue;
    }

    if (substr($curr_line, 0, 1) === "." || substr($curr_line, 0, 3) === "EXT" || substr($curr_line, 0, 3) === "INT") {
        $line_type[$curr_line_num] = SCENE_HEADING;
        continue;
    }

    if (substr($curr_line, 0, 2) === "> " || (strtoupper($curr_line) == $curr_line && substr($curr_line, -1) == ":")) {
        $line_type[$curr_line_num] = TRANSITION;
        continue;
    }

    if (strtoupper($curr_line) == $curr_line) {
        $line_type[$curr_line_num] = CHARACTER;
        continue;
    }

    if ($line_type[$curr_line_num - 1] == CHARACTER) {
        $line_type[$curr_line_num] = DIALOGUE;
        continue;
    }

    // Or if none of those then it is an action line.
    $line_type[$curr_line_num] = ACTION_LINE;
}

// Print every line_type and line.
for ($curr_line_num = 0; $curr_line_num < count($lines); $curr_line_num++) {
    $key = $line_type[$curr_line_num];
    print "\n(( $code[$key] )) ". $lines[$curr_line_num]; 
}


sourceline_(num) on preview

Why is this happening?

Why is the source line appearing in the preview instead of the scene number? How can I fix it?
image

image

Show the current information in the status bar

For informing writers about current information add to the status bar following data: a number of current scene and a type of current element. For example:
Scene 120 | Action | 01:59:12

Perhaps in future, it makes sense to add function change type of current element through the dropdown list directly from the status bar.

[Development Feature] Add travis CI pipeline

Hi @piersdeseilligny ,

I would like to add a test pipeline. I have done this before. This pipeline would run on every pull request and run the tests. It would also run the tests on a merge to master. I think it would be a) quite useful if people add pull requests and b) give off a good impression to have some nice green ticks on every commit showing that everything is alright!

I have previously used the TravisCI plugin which is free for open-source repositories like your own and you get 100 free builds per month. I'm not sure if this will be enough though for your repo; thus we could also use GitHub actions, this might be the better choice with 2000 action minutes per month for free. I would be quite interested in adding this. Would you be okay with me doing that? If so, I might have to be a maintainer for a week. You could delete my maintainer status after I made the changes.

If you think this isn't necessary, feel free to just close this issue, no problem.

Thanks,
Rick

"Live preview" in the editor itself

A picture speaks a thousand words:
image
What if, while you were typing, it were possible to see the screenplay as such, without the need for a live preview?

Unfortunately this feature is currently impossible because the vscode extension API doesn't support extensions setting margins themselves, but if you're interested, I would highly recommend upvoting this issue in the vscode repo.

PDF Export with uspaper fails silently

Steps to Reproduce

Change fountain.pdf.printProfile from a4 (the default) to uspaper. Go to a screenplay, click Export PDF, click Save on the file dialog.

Issue

Instead of creating a PDF, Better Fountain fails silently. There is no error message and no new screenplay PDF.

If I use the default a4 setting, the PDF is created as expected.

Thanks for this extension!

Error: Illegal value for 'line'

Clicking on Outline headers causes error.

Demo:
https://i.imgur.com/xQYl6If.gif

Win10, VSC 1.33.1.

Log:

[2019-05-01 10:37:17.244] [exthost] [error] Error: Illegal value for line
at u._lineAt (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:356:54)
at Object.lineAt (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:355:13)
at context.subscriptions.push.vscode.commands.registerCommand (C:\Users\migsdaf.vscode\extensions\piersdeseilligny.betterfountain-1.3.1\out\extension.js:251:37)
at d._executeContributedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:477:621)
at d.executeCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:476:936)
at f._executeConvertedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:479:133)
at d._executeContributedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:477:621)
at d.$executeContributedCommand (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:478:6)
at d._doInvokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:622:11)
at d._invokeHandler (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:621:716)
at d._receiveRequest (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:620:394)
at d._receiveOneMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:619:141)
at define.constructor._protocol.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:617:400)
at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:40:460)
at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at a (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:467)
at e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:513)
at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at y._receiveMessage (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:181:276)
at define.constructor._socketDisposables.push._socketReader.onMessage.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:178:415)
at u.fire (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at f.acceptChunk (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:175:35)
at define.constructor._register._socket.onData.e (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:174:410)
at Socket.t (c:\Andrew\Utility\VisualStudioCode\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:182:689)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:279:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at Pipe.onread (net.js:636:20) fountain.jumpto

Customizable typeface for PDF preview or export

Personally I am fine with Courier Prime, but superlou's 'fountain' extension for Atom also allows to pick Anonymous Pro, Courier Code or GNU Typewriter... it could be a useful feature to have.

Ability to turn off noise texture in Live Preview

Hi,

Thank you for making this extension, it's the best way to edit Fountain I've found. However, I find the noise texture in the live preview very distracting - could we get an option to toggle it off?

Thanks once again.

All-caps action lines get excluded from

Noticed while looking through the Big Fish sample script that it has a lot of all-caps action lines (usually THE BEAST.) that are not rendered properly as action:
Screen Shot 2020-01-03 at 13 23 23
Screen Shot 2020-01-03 at 13 24 36
I played around a little with trying to reconfigure the regexes in multiline mode, without success. Not the biggest deal in the world, although it's noticeable since the Big Fish sample fountain script has these examples in it.

Workaround: force the line to be rendered as action by prepending a ! to it:
Screen Shot 2020-01-03 at 13 34 16

Export to PDF broken...

When I export to PDF it creates a 0kb file then is missing.

It's very weird because it was working 100% just a few days ago.

Word wrapping

Seems as though use of this extension disables word wrapping settings in the editor.

Despite changing to "bounded" and column wrap of 80, the fountain content wraps to the viewport.

Estimated Runtime

I have a title page and one scene (one page) written and my runtime says 19:01:10.

It started at 19:00:00 when I hadn't written anything.

Absolutely love this extension otherwise, but do you have any idea what's going on?

Scroll-Sync Lock

Thanks for this wonder extension.

Most modern Markdown editors have Previews as a second pane/window in dual mode, Editor + Preview.

Many of the top ones have an additional feature:

Scroll-Sync Lock
or:
Sync-Scroll Lock

This basically updates the other pane as we scroll up and down the other. So as you go down the editor window pane, the preview pane also goes up/down to sync both panes.

Can we have Scroll-Sync Lock please.

It would make this extension even more fantastic.

Some apps that have this feature for MD editing are:

MS VS Code Markdown preview
ia Writer
Atom MD Preview
Joplin (For Desktop (Windows version))
QOwnNotes
etc etc.

Please lets have Scroll-Sync Lock.

Thanks again.

Autocomplete is going haywire

I just installed the extension, and I'm having trouble with the autocomplete. No matter where I am in a document, it wants to autocomplete fields for the title page.

VS Code Info:
Version: 1.41.1 (user setup)
Commit: 26076a4de974ead31f97692a0d32f90d735645c0
Date: 2019-12-18T14:58:56.166Z
Electron: 6.1.5
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Windows_NT x64 10.0.17763

Installed Plugins:

  • Angular Snippets 8.3.0
  • Better Fountain 1.4.3
  • Code Spell Checker 1.7.20
  • ESLint 2.0.14
  • Gruvbox Themes 1.0.0
  • Material Theme Icons 1.1.3
  • Python 2020.1.58038
  • Remote - WSL 0.41.7
  • Remote VSCode 1.1.0

Examples:

image
image
image

Character Highlighting in PDF

It would be nice, if it was possible to generate PDFs for a specific Character (or maybe multiple Characters?) which is then highlighted in the PDF. This would make it even easier for the actors to find their lines. Following up this thought, in the future, this leads to a batch pdf-creation of individual PDFs for every character. In every individual pdf, the according character is highlighted.

Of course it should be possible to enable/disable this option. There would have to be some configuration popup in which you have to choose the characters for which you'd like a personalized PDF in a multiple choice list, including a "select all" button, to batch-create the individual actor-PDFs or whatever this would be called.

Just some input, if you are up to the task - I know a lot of people who'd be happy to use that :). Carry on with the great work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.