Learning links

Quick request:

I wonder how hard it’d be to make the quick-link functionality in Scrivener a bit more intelligent. For example, let’s say I’m trying to link to a Character entry from a scene. The Character’s name (and the name for the entry) is “Joel Fender.” In the scene, I might refer to him as Joel, or Fender, or by his nickname “Mad Dog.” The first time I quicklink Joel, I’d expect the standard “New Link/Existing Link” dialog to pop up. But then would be awesome that when I direct the link to “Joel Fender”, if Scrivener would learn that association, and the next time I quicklink Joel would just auto-link to that entry. Same for Fender, etc. If I ever redirected the link to a different entry (say “Joel Smith”), then future quicklinks against Joel would go there. And so on. Make sense?

Basically keep a global, growing list of manual associations, and direct the quicklinks functionality through that. Update as manual quicklink entries are created/updated.

Side question: ever thought of open-sourcing Scrivener? I could probably code this up myself and submit a pull request for it.

I am intrigued by the idea, but I’m not following what you mean by a “quick link”, which feature is that, as it is referred to in the interface?

Something along these lines (in a parallel fashion) already exists; you might just need to use a slightly different approach than you are. If you right-click on text, or use the Edit menu, to create a “Scrivener Link”, you’ll note at the top of the binder item selection menu there should be a “Suggestions” area with a list of any documents throughout the draft that match the selected text. I think it has a <5 char limiter on the match routine to filter out short words and keep performance up, so “Joel” wouldn’t suggest a document named “Joel Fender”, but “Joel Fender” and “Fender” would.

There are other strategies for linking up things quickly as well, for cases where that doesn’t work (or cases where the text you’re linking from doesn’t in any way resemble the target title—often for me). My favourite is to hijack a different sort of tool for the purposes of finding and linking to things quickly:

  1. Select the text I wish to link.
  2. Hit Ctrl-Cmd-G to bring up the Edit/Find/Find Synopsis… utility.
  3. Type or paste in what I’m looking for.
  4. Drag and drop the correct match onto the selected text in the editor.

Thanks Amber! What I’m talking about is the [[ ]] shortcut in Scrivener to generate a link.

For example, let’s say I have an entry for “Joel Fender” in my Characters folder. If I’m writing a dialog entry, as in:

“This sucks,” [[Fender]] said.

What I would love to have happen is for that to link to “Joel Fender.” But because the name doesn’t match exactly, it won’t do so without me manually pointing to the entry. What I’d like to have happen instead is the following:

The first time I do the above, the “Link to…” dialog should come up just as it does now. I point to “Joel Fender.” The next time I type [[Fender]], I expect it to link without the dialog. I.e. I’ve “taught” the system that “Fender” actually refers to “Joel Fender.” Makes sense?