This would be a solution:
Index term, and some text 21, 34, 45, 72, 89, 101, 103, 109
where the rule is: when the numbers exceed the text width, close the paragraph, then start a new, right aligned one.
So i wrote this:
--------------------------------------------------- \def\wordorparagraphright#1{\let\scratchWidth\relax \setbox\scratchbox=\hbox{#1}\newdimen\scratchWidth \scratchWidth=\wd\scratchbox \ifdim\scratchWidth < 0.9\textwidth \wordright{#1}% \else \par \startalignment[flushright]#1\stopalignment \fi}
\starttext \input sapolsky \wordorparagraphright{\it other text} \par \blank \input sapolsky \wordorparagraphright{\it other text, this time longer} \par \blank \input sapolsky \wordorparagraphright{\it other text, this time much much much much much much much much much much much much much much much much much much much much much much longer} \par \stoptext ---------------------------------------------------
This, instead, works also with registers: ------------------------------------------------- -- \unexpanded\def\wordorparagraphright{\dosingleempty\WordOrParagraphRigh t} \def\WordOrParagraphRight[#1]{\groupedcommand{\setbox0\hbox\bgroup} {\egroup\newdimen\myBoxWd\myBoxWd=\wd0 \ifdim\myBoxWd < .7\hsize \wordright{\box0}% \else \startalignment[flushright]\leftskip=.3\hsize plus 1fil\unhbox0 \stopalignment \fi}} \starttext \input sapolsky \wordorparagraphright{\it other text} \par \blank \input sapolsky \wordorparagraphright{\it other text, this time longer} \par \blank \input sapolsky \wordorparagraphright{\it other text, this time much much much much much much much much much much much much much much much much much much much much much much longer} \par \stoptext --------------------------------------------------- A doubt: i'm using box0, is it dangerous? I tried with scratchbox, but it doesn't work, then i moved to box0, and it seems to work, even with a big file (with a big register too) of mine.