%D \module
%D   [       file=typo-wrp,
%D        version=2014.11.09,
%D          title=\CONTEXT\ Typesetting Macros,
%D       subtitle=Wrappers,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Typesetting Macros / Wrapping}

\unprotect

\registerctxluafile{typo-wrp}{autosuffix}

\definesystemattribute[crlf]

\permanent\protected\def\crlf
  {\ifhmode
     \expandafter\spac_crlf
   \fi}

\protected\def\spac_crlf
  {\clf_enablecrlf % once
   \unskip
   \wordboundary
   \spac_crlf_placeholder % box
   \ifcase\raggedstatus\hfil\or\or\or\hfil\fi
   % in bad usage this can lead to: [break -10000] [wordboundary] [line(break)penalty] [glue (filler)]
   \break
   \begingroup
   \c_attr_crlf\plusone
   \wordboundary
   \endgroup
   % which we then remove (maybe we should flag the wordboundary with an attribute but not now
   \ignorespaces}

\protected\def\spac_crlf_placeholder
  {\strut} % or \endstrut

\protected\def\spac_crlf_placeholder_show
  {\hpack to \zeropoint{\strut{\infofont\kern.25\emwidth}\lohi{\infofont CR}{\infofont LF}\hss}}

\permanent\protected\def\settestcrlf
  {\let\spac_crlf_placeholder\spac_crlf_placeholder_show}

\permanent\protected\def\crlfplaceholder % for old times sake
  {\wordboundary\strut}

\appendtoks
    \lettonothing\spac_crlf_placeholder
\to \everysetnostrut

\appendtoks
    \let\spac_crlf\space
\to \everysimplifycommands

% experiment, triggered by MS:
%
% \type{f\kern\tightfitcompensation\high{x}}
% \type{f\tightfitboundary         \high{x}}

% \tightfitcompensation : defined at the lua end

\newboundary\c_tightfit_boundary

\permanent\protected\def\tightfitboundary
  {\clf_enabletighten
   \boundary\c_tightfit_boundary}

\protect \endinput
