Moving Snapshots between documents

This might sound crazy at first blush, but I’d like a way of dragging one document’s snapshot into another document’s snapshot list.

Here’s why: Say, for example, in a screenplay project, I’ve already written scenes A through D, and created a few snapshots in each document. Then, I realize that scene B should be cut, with half of its current content moved into the middle of Scene C. This happens to me pretty often.

Now I can wipe the text from the current version of Scene B - or simply mark it as “ignored” in the screenplay compile. But this gets messy (and the ignored stuff shows up in Scrivenings Mode). What I want to do is just delete Scene B. But I want to keep its snapshots. I guess I could just create a “Deleted Scenes” folder outside the draft, but that isn’t ideal, since I could forget that they’re even there. Since Scene C has a different title than Scene B did, after a while I could forget that it’s old Scene B’s snapshots that are related to Scene C - so even though they’re in there, I could have trouble finding them when I need them.

There is a workaround, of course, which I’ve been using — which is to create a snapshot of Scene C, then copy each Scene B snapshot into the Scene C window and save it as a Scene C snapshot, finally rolling back to the current Scene C when I’m done. On top of being complicated (and feeling risky, in terms of screwing up and deleting data), this process also destroys the original snapshot metadata, since each new snapshot is stamped with the current date and time.

So, (1) it would be awesome if I could simply drag Scene B’s snapshots over to Scene C, where they will be marked as Scene C snapshots with all other metadata being unchanged; or (2) if that doesn’t work for some reason, if I could at least alter the snapshot date stamp so that the workaround will work better.

Thanks for your time — sorry for the long post.

Why don’t you just use Duplicate (cmd-D) to create the new document? That way the snapshot will be in both.

All the best,

Typically, the two documents were already created before I figured out they should be merged. And I want to preserve the snapshots from both docs in the same list.

This isn’t an answer to the wish of a simple UI method, but it’s a way to do it.

Edited, because I missed the obvious the first time, which given that you’re working in a single project should be fine.

Easy method: Merge the documents, then just select the text from what was originally the first (to be deleted) document and delete it. When you merge documents, their snapshots get combined. Just be careful about other meta-data–synopses and document notes will also get combined, etc. Labels and status will switch to the settings of the first document (so you may want to drag the document to be deleted so that it comes after the other document in the binder, thus retaining the meta-data for the “keeper” document).

Complicated method that I don’t at all recommend, given that you can do the above with significantly less hassle:

This will only work if you haven’t taken simultaneous snapshots of the two documents to be merged (which results in identically named files, and will require some further hacking). I’d back up your project first, just to be safe, in case something gets miscopied. Also, this isn’t condoned by the L&L team, so use at your own risk. (I can tell you it works, but there’s obviously room for error since you’re going in and modifying the .scriv package contents, which is generally not recommended.)

  1. With the project closed, open the .scriv package in Finder. Snapshots are stored in folders titled by the ID of the document to which they belong. With Quick Look you should be able to identify the one you’re looking for without too much trouble; you can also use spotlight (once the package is open) to search for a unique phrase in the document.

  2. Once you know which folder contains the snapshots to be copied, and which you want to copy them to (folder for docs B and C, in your example), select all files except the .xml in the first and paste them into the second.

  3. Open (in TextEdit or an xml editor) the .xml file for each folder. You’ll need to copy/paste all the information between the tags from the first into the second. Depending what you need, you can do this two ways:

a) Easiest is to just move it on one chunk. In the .xml for folder B, select everything between and and paste it just before in the .xml for folder C. (Be careful not to cut off any of the existing text in the folder C .xml, and don’t break up anything between and as these tags set off all the information for each snapshot.) This will result in all the Doc B snapshots appearing together in the inspector in a group, properly arranged by date in themselves, but not chronologically arranged to intersperse the Doc C snapshots. Your list would be like this:
– 1 Jan 2011 9:15 [snapshot C]
– 1 Jan 2011 10:30 [snapshot C]
– 2 Jan 2011 15:12 [snapshot C]
– 1 Jan 2011 8:45 [snapshot B]
– 2 Jan 2011 12:12 [snapshot B]

b) Alternatively, you can cut and paste each section from B’s xml file into the proper location of C’s, manually going through and reading the tags () to organize them properly. As above, you want to keep the entire section* together, so copy everything from to for each comment, including those tags, and paste them between the sections in folder C’s .xml (so after a and before a ). Everything should stay inside the opening and closing tags. This will take more work, but will result in a completely chronological snapshot list in the inspector:
– 1 Jan 2011 8:45 [snapshot B]
– 1 Jan 2011 9:15 [snapshot C]
– 1 Jan 2011 10:30 [snapshot C]
– 2 Jan 2011 12:12 [snapshot B]
– 2 Jan 2011 15:12 [snapshot C]

Needless to say, it’s not entirely elegant, and if you’re doing this frequently it might get tiring (though I imagine you’d get pretty fast). If you don’t need all the past snapshots of document B but only the last one before it got integrated into C, this will be faster–you’ll only need to copy the one .rtf file and the final section from the .xml.

You’ll also have to watch out for any identically named snapshots–ie, snapshots you’ve taken at the same time. If you have to copy any of these, Finder will give you the warning about overwriting the file, which you’ll obviously not want to do. Instead you’ll need to alter the name of the .rtf by adjusting one of the numbers (it’s in a specific timestamp format which needs to remain so that it can be identified by the .xml); presumably adjusting the seconds from 45 to 46 or the like won’t matter to you when looking through the snapshots later, and it will be enough to give the file a unique name. You’ll then need to fix the text inside the tag for that comment inside the .xml file.

So if your file originally was 2011-01-03-10-46-27-0800.rtf and the .xml read 2011-01-03 10:46:27 -0800 then you could switch it to 2011-01-03-10-46-28-0800.rtf and 2011-01-03 10:46:28 -0800 and you’re good. (Provided of course that you don’t have a 2011-01-03-10-46-28-0800.rtf file already in the other folder–obviously check this before you do all the renaming to find something that will be unique.) Don’t change anything else–don’t switch the 800 on the end, don’t delete hyphens, etc. This part is the most messy of the business, so really if you can do without that screenshot you’re better off leaving it out.

  • The syntax of a snapshot section looks something like this:

<Snapshot> <Title>Untitled Snapshot</Title> <Date>2011-01-03 10:45:43 -0800</Date> <Links Version="1.0"> <ScrivenerLinks> <TextLinks> <LinkID Range="411,12">376</LinkID> </TextLinks> </ScrivenerLinks> </Links> </Snapshot>

By god you’re right! I feel like an idiot. Merge works perfectly for my needs.