\unprotect

\def\strc_floats_make_complete_caption
  {\doifsomething{\floatcaptionparameter\c!spacebefore}{\blank[\floatcaptionparameter\c!spacebefore]}%
   \strc_floats_make_complete_caption_before
   \synchronizedisplaydirection % temp hack, till we have a proper model
   \noindent
   \gdef\lastcaptiontag{\strut\thecurrentfloatnumber}% was xdef ... needs checking
   \begingroup
     \usefloatcaptionstyleandcolor\c!style\c!color
     \clf_doifelselisthastitle{\currentfloat}\numexpr\currentfloatnumber\relax
       \donothing
       \emptyfloatcaptiontrue
     \ifnofloatnumber
     \else
% begin old code
%      \hbox{\usefloatcaptionstyleandcolor\c!headstyle\c!headcolor\thecurrentfloatnumber}%
%      \ifnofloatcaption \else \ifemptyfloatcaption \else
%        \doifelsenothing{\floatcaptionparameter\c!spaceinbetween}
%          {\floatcaptionparameter\c!headseparator\relax
%           \scratchskip\floatcaptionparameter\c!distance\relax
%           \dotfskip\scratchskip\emergencystretch.5\scratchskip}
%          {\blank[\floatcaptionparameter\c!spaceinbetween]}%
%      \fi \fi
% end old code
% begin new code
       \setbox\scratchbox\hbox{\usefloatcaptionstyleandcolor\c!headstyle\c!headcolor\thecurrentfloatnumber}%
       \ifnofloatcaption \else \ifemptyfloatcaption
         \box\scratchbox
       \else
         \scratchskip\floatcaptionparameter\c!distance\relax
         \setbox\scratchbox\hbox
           {\box\scratchbox
            \floatcaptionparameter\c!headseparator\relax
            \dotfskip\scratchskip}%
         \doifelsenothing{\floatcaptionparameter\c!spaceinbetween}
           {\doifelse{\floatcaptionparameter\c!hang}\v!yes
              {\leftskip\wd\scratchbox
               \llap{\box\scratchbox}}
              {\unhbox\scratchbox}%
            \emergencystretch.5\scratchskip}
           {\blank[\floatcaptionparameter\c!spaceinbetween]}%
       \fi \fi
% end new code
     \fi
     \ifnofloatcaption
       \global\d_strc_floats_caption_height\zeropoint
       \global\d_strc_floats_caption_depth \zeropoint
     \else
       \usefloatcaptionstyleandcolor\c!textstyle\c!textcolor
       \global\d_strc_floats_caption_height\strutheight
       \global\d_strc_floats_caption_depth \strutdepth
       \thecurrentfloatcaption\endgraf
     \fi
   \endgroup
   \strc_floats_make_complete_caption_after
   \doifsomething{\floatcaptionparameter\c!spaceafter}{\blank[\floatcaptionparameter\c!spaceafter]}}

\protect

\setupexternalfigures[location=default]

\setupcaption
  [figure]
  [align=tolerant]

\starttext

\startplacefigure[title={\samplefile{jojomayer}}]
  \externalfigure[hacker][width=.75\textwidth]
\stopplacefigure

\setupcaption
  [figure]
  [hang=yes]

\startplacefigure[title={\samplefile{jojomayer}}]
  \externalfigure[hacker][width=.75\textwidth]
\stopplacefigure

\stoptext
