This Week's Sponsor:

Incogni

Put an End to Spam, Scams, and Robocalls on Your iPhone


Simulating Multiple Cursors in Editorial

Editorial

Editorial

When I’m writing with Editorial or Byword, I miss the multiple cursors feature of Sublime Text. Seemingly an extra geeky addition with no practical utility, multiple cursors had become part of my editing workflow as they allowed me to select multiple positions in a document and act on them at once. For example, I could select multiple lines and prefix them with an asterisk to turn them into a Markdown list, or select multiple instances of a word and modify them with a single keystroke without using Find/Replace or other hacks. The feature was built into Sublime and it was great. So of course I made a workflow for Editorial.

Because it’s the end of the year and I’m feeling festive and thankful, I’m posting two workflows to simulate multiple cursors in Editorial. The first one allows you to save selections for multiple bits of non-contiguous text at once and, when you’re done, wrap them inside any character(s); it’s useful if you want to make multiple words bold/italic, or if you want to enclose them inside parentheses. The second workflow lets you add inline Markdown links for each selection, fetching a webpage URL from the Editorial browser.

Rather than provide you with static screenshots and a boring written explanation, here’s a video of the workflows in action.

Here’s a few notes on the first workflow:

  • The raw input in the console that repeats itself until you enter “n” (for “No”) is based on the “Set count” action by Ed Gauthier from this workflow. By default, it’ll run for 100 consecutive times until dismissed; you can tweak the number as a “Count” parameter in the custom action. It’s, essentially, a hack to simulate a while loop.
  • The raw input is also a hack in that it’s the only way I’ve found in Editorial to enter user input without bringing up a modal view that would prevent text selection. An alert dialog wouldn’t let me select text in the editor. Alas, raw input can’t be automatically hidden with Python, and Editorial doesn’t come with any other non-modal action for user interaction.
  • Selections are saved as a list of ranges to a variable in a (x, y) format. The workflow removes the parentheses and sorts lines alphabetically, re-saving the “cleaned” ranges to the same variable.
  • The workflow requests text to insert on the left and right, and saves your input to two separate variables.
  • In the last Repeat block, for every selection range text is selected and replaced with the wrapping characters around the original text.
  • The trick to get everything to work is to run the Repeat block with the “Reverse” flag on: this will run multiple text replacements in a row starting from the bottom, which won’t cause issues with re-calculating ranges at the top.

As for the second workflow with inline links:

  • In the last Repeat block, Python selects text, then shows a HUD that asks you to choose a URL for the first selection in the block.
  • A browser variable is paused, allowing you to open the browser and find a URL for each selection. When you’re done, tap the blue button in the pause slider and the variable will be saved, replacing selected text to generate a Markdown link.

As you can see, these workflows are pushing the limits of what’s currently possible in Editorial for text selections, repeat blocks, and non-modal user interaction. Though you can use the first workflow to add whitespace before text (just place the cursor without selecting anything and enter “y”) and you could probably tweak the workflows to be a little more flexible (text replacements instead of wrapping, etc), my solution isn’t obviously a full-fledged alternative to Sublime’s real multiple cursors.

For the future, it’d be great to have true “while” or “until” conditions for repeat blocks in Editorial, as well as more actions for non-modal interaction with custom controls. Or maybe multiple cursors straight on the iPad. Until then, you can download my workflows here and here. Enjoy, and Happy New Year.

Access Extra Content and Perks

Founded in 2015, Club MacStories has delivered exclusive content every week for nearly a decade.

What started with weekly and monthly email newsletters has blossomed into a family of memberships designed every MacStories fan.

Learn more here and from our Club FAQs.

Club MacStories: Weekly and monthly newsletters via email and the web that are brimming with apps, tips, automation workflows, longform writing, early access to the MacStories Unwind podcast, periodic giveaways, and more;

Club MacStories+: Everything that Club MacStories offers, plus an active Discord community, advanced search and custom RSS features for exploring the Club’s entire back catalog, bonus columns, and dozens of app discounts;

Club Premier: All of the above and AppStories+, an extended version of our flagship podcast that’s delivered early, ad-free, and in high-bitrate audio.