Here's a more detailed flow of Dave's method (I think):
If you have indent to here tabs get rid of them using textFind .. findWhat = "^i"; changeTo = ""; myDoc.changeText();
Now ONE PAGE AT A TIME AND STARTING FROM THE BEGINING of the doc
Do grep seach on each paragraph ......findWhat = "^[^:]:\\s"; to find the colons
make an array of the endHorizontalOffset values of myFinds[i].insetertionPoints[-1].endHorizontalOffset;
If you are using paragraph composer you are going to have to allow for changes in the layout so if you can use the single line composer it's a lot more simple.
Now set the indents (first line indent 0 otherlines to value x)
To calculate value x see which paragraph is the most inserted i.e. which had the biggest endHorizontalOffset value on the page and set the indents of all the paragraphs on the page to this biggest value.
CHECK that that paragraphs still starts on the page. If yes continue with the next page BUT be careful not to change the indent value of the first paragraph of that page if it starts on the page before unless it only has one line on the page before then you need to change the value of the second+ line indent of that paragraph.
If the paragraph is bumped off to the next page then set the pages paragraph indents to the 2nd largest indent value and do the same check and so on.
One major snag, what to do if when one sets to the largest indent value the paragraph gets bumped off so one sets the paragraph to the second largest value and then the bigger paragraph now comes back on the page?
Probably best to put in a frame or column break.
In short - not so easy
If you can put that together or if some saint on the forum is prepared to do it for you even better if not then send me or Dave a private mail for a quote. Or Send me a mail to trevor at creative-scritps dot com.
Best of luck
Trevor