Saving hoisted outlines in Radio UserLand

One of the more important gotchas in the Radio UserLand outliner occurs when you save an outline that has been hoisted.

As I discuss in the Radio UserLand Kick Start chapter on outliners, hoisting causes a group of subheads to be displayed as they were the top level of the outline. Their parent and all other parts of the outline disappear from view.

If you save a hoisted outline, it only saves the parts of the outline that are visible, discarding everything else. You can ensure that everything in an outline is saved by using the Outline, De-Hoist All command before saving it.

David Matchett describes this as a "fairly serious bug" on the Radio customer support board, but I've always figured it was by design rather than by accident.


Well, you're very generous to call it a gotcha; the problem is I hit save pretty habitually in lots of programs, and it seems non-standard to lose a bunch of work just because something is off-screen for the moment. At its most useful, a hoist just gives you a different view; like a zoom. If you need to prune your outline, there are plenty of other ways.

Now that I'm marshalling my thoughts, I want to get Userland to fix this!

The problem with changing the behavior now is that outlines can be manipulated programmatically in UserTalk scripts. Any existing code that relies on the existing hoist-and-save behavior would break if UserLand changed it. UserLand's pretty strongly committed to "zero code breakage," even to the point of leaving some bugs in the code that have well-established workarounds.

Granted. Grumble grumble...

This is indeed a bug, and a serious one, since it represents the possibility for large amounts of data loss. We've logged the bug, and a fix will be released. We have yet to determine the nature of the fix, but the fact that one is needed is clear.

Add a Comment

All comments are moderated before publication. These HTML tags are permitted: <p>, <b>, <i>, <a>, and <blockquote>. This site is protected by reCAPTCHA (for which the Google Privacy Policy and Terms of Service apply).