Mac Gems: FoldingText is a unique and versatile text editor
By Jeffery Battersby
At a glance
On the surface, Hog Bay Software’s $25 FoldingText (Mac App Store link) is a basic text editor. In fact, if you don’t dig too deep, you could easily be fooled into thinking that FoldingText is too simple to merit more than a passing glance. The reality is that FoldingText is an amalgam. A polyvalent text-editing powerhouse. Part text editor, part to-do-list maker, part outliner, part Pomodoro-method task manager, FoldingText is like and unlike every text editor you’ve used.
Each new document you create using FoldingText starts out the same way, not as a blank slate for you to begin typing text, but as as Welcome document explaining the basics of how FoldingText works. That may seem odd for something as basic as a text editor, but within FoldingText, basic text can undergo some amazing transformations, and understanding how to transform that text is essential to getting the most out of the app. This initial document is designed to help you start on the right foot.
FoldingText performs its text editing magic by using an application-specific form of Markdown. Markdown is a kind of shorthand that allows you to mark plain text with special formatting characters that translate to the appropriate tags in browser-readable HTML. Unlike many Markdown-text editors, FoldingText renders your formatted text within the FoldingText environment, so text surrounded by double asterisks (the Markdown syntax for bold) is actually displayed as bolded in the document while you’re editing. (It’s important to note that, while FoldingText can create some basic HTML, it is not designed to create full-featured web pages. You can export your documents in HTML format, but only basic lists and one HTML heading type are supported.)
While there are over a dozen different bits of Markdown shorthand you can use in FoldingText, the basics are this: Type # followed by a space and the text that follows those two characters will appear as a bolded heading. Type ## and that line become a sub-heading of the previous heading. Type - followed by a space and that line of text will appear as an item in an unordered list. Surround text with * on each side and that text will be italicized (** on each side bold the text, instead). Other similar keystrokes will create URL links, ordered lists, block and coded text, and much more.
The “folding” part of FoldingText refers to what happens after you’ve added headings. Many code editors, used by developers when developing apps, let you hide or display sections of code for easier editing. Similarly, in FoldingText you can hide or display sections of your text by clicking the # that appears in front of each header section. Click a # once to hide all text under that header, including sub-headings and their text; clicking that # character again expands that section. (A folded section displays a white-on-black elipses character.) Folding helps you focus on the section of text you’re currently working on without being distracted by any of the other text that’s part of your document.
You can also quickly go to any section by pressing Command+L (or by choosing View -> Go To) to see a list of all headers; choose one to jump to it.
Beyond folding and formatting, FoldingText offers some special features that push the program beyond basic text editing. First is a feature called Todo mode, which allows you to turn an unordered list of items into a series of checkboxes. To do this you create a normal heading and then add .todo to the end of the header text. For example, if you wanted to create a grocery list, you’d type the header followed by an unordered list of items:
Each item will appear, in Folding Text, with a small checkbox next to it. Clicking the checkbox marks the item as completed, formats the item’s text as strikethrough, and shows an @done tag at the end of the line.
The timer feature is similar to the checklist. Add .timer to the end of a heading followed by indented text that contains timing information and FoldingText will create a timed list. For example:
Set water to boil water 3 minutes
Add cubed potatoes
Boil cubed potatoes for 10 minutes
Drain potatoes and dry
Pan fry in olive oil for 15 minutes, turning often
As you enter these lines, FoldingText displays the current time next to the first item, along with the relative time of completion, based on each item’s duration, next to subsequent items. Click an item’s time label, and FoldingText kicks off that step’s timer with an audible cue when the timer is completed; FoldingText then steps through the rest of the items and, if present, their timers. The precise date and time you started the list is displayed beneath the list header.
This timer feature, combined with the app’s folded-text and list-creation capabilities, allow you to use FoldingText as a Pomodoro Technique timer to keep you focused and on-task as you work. It’s an amazing feature for what, on the surface, is nothing more than a basic text editor.
There are some things I’d like added to future versions of the program. First, the app would benefit from some basic user options. I mentioned earlier that each new document contains the same default text. Short of opening Terminal and typing a few commands, there is no simple way to turn this off—a standard preference setting would nice here. Second, when you print FoldingText documents, they do not look the way they do within the app; instead, they include unformatted text along with the Markdown syntax you’ve used to format and organize that text. The app needs an option for printing rendered text. Finally, FoldingText uses a non-standard .ft file extension that’s not recognized by many Mac text editors, nor by an iOS text editors, including Hog Bay’s own PlainText app. I’d rather the app use a standard Markdown file extension (such as .markdown or .md) so you could use your FoldingText documents on your iOS devices or in other Mac text editors.
FoldingText is a standout text-editing app that’s surprisingly versatile thanks to a number of unexpected features. It also shows exceptional maturity for an application that is a 1.0 release. While I love FoldingText now, I can’t wait to see what the future holds.