Smoother text-only sync

Scrivener’s markdown support is fantastic, but it still feels quite clunky and unreliable. Here are some thoughts about what feels off, and how they might be addressed.

First, what makes markdown handling in Scrivener isn’t the capabilities of the software itself, it’s the impossibility of perfect author restraint. I use Scrivener’s sync feature to edit in external, text-only editors. Ostensibly, this gives me complete control of formatting via markdown, and flexibility in applying different tools for different jobs. The trouble is that I sometimes find myself in too much of a hurry when I’ve had an idea to go through the multi-step sync process. I end up typing directly in Scrivener, and, thanks to deeply-seated keyboard habits, I end up applying styles (usually italics) directly in a document that’s supposed to be markdown.

Markdown is rarely, if ever, used as only a partial choice within a single document, so at the very least it would be handy if I could tell Scrivener not to allow me to shoot myself in the foot: if an entry is text-only, styles don’t work, period.

The trouble with this solution is that it doesn’t address the underlying usage pattern. I want Scrivener to be the hub for my writing, not a ball and chain. In an ideal world, syncing would happen automatically so that I don’t even need to worry where the latest changes exist. Pending utopia, here is one way that the whole workflow could be vastly improved.

I’ve encountered the following pattern in FTP clients as well as IDEs and their plugins.
• Bring a specific document into focus in the hub application
• Trigger an Open in External Editor… action

  • The hub app saves a copy in a tmp location
  • The hub app tells the other editor to open it
    • Make a change and ⌘S
  • The hub app listens for changes and “sucks them in” to the canonical source
  • Note: things could get complicated if trying to do this in conjunction with the existing ScrivenerSync folder, so perhaps this feature only works when Sync is disabled.
    • Make some more changes, but close without saving
  • These changes are lost, as you would expect

Combined with the ability to indicate text-only documents, this feature would make Scrivener into a more efficient hub, and, therefore, even more of an unstoppable powerhouse! :wink:


Fellow Scrivener user here, just passing through…

I think a natural suggestion here would be that the Transformations section of the Compile settings have a few additional options when Markdown is the chosen output stream. For example, Convert Italics to Markdown. (Though in reality this might have to mean convert not-already-marked italics to markdown.) And maybe a basic few others of this ilk. Scrivener is primarily a passive platform for markdowners and think there is a natural limit to how much the developer would want to code /for/ markdown. But some basic styling transformation options might not be altogether too much.

Having such transformation options would compensate for your bad habits.


P.S. As for your syncing wants all I can do is kibbitz: it does seem to me that your particular use of Scrivener is an unusual one – circumventing Scrivener as text editor entirely and using it more or less as a mere container for projects. This usage no doubt puts some unique pressures on how sync operates – which was certainly not designed with this sort of use in mind. I can only imagine, though, that programming special functionality to serve this kind of usage – a kind of end-run around a central function of the program – might not be a first priority!

While there’s no feature to convert all rich text styling to MMD syntax (tables, for example, cannot be converted with a menu command), and no compile settings either, there is the menu “Documents->Convert->Bold and Italics to MultiMarkdown Syntax”. I’ve found that one invaluable when experimenting with MMD, and is a great help in making all of a project’s documents consistent; you just have to remember to periodically select all your documents in the binder and use the menu command.