%D \module %D [ file=core-buf, % blocks are moved to core-blk %D version=2000.01.05, %D title=\CONTEXT\ Core Macros, %D subtitle=Buffers, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. % this will become a proper new verbatim module \unprotect \registerctxluafile{core-buf}{1.001} \def\mkresetbuffer {\ctxlua{buffers.erase("\currentbuffer")}} \long\def\mksetbuffer#1% {\ctxlua{buffers.set("\currentbuffer", \!!bs\detokenize{#1}\!!es)}} \long\def\mkstartbuffer#1#2#3#4#5% {\doifelsenothing{#4} {\expanded{\setbuffercapsules{\e!start\v!buffer}{\e!stop\v!buffer}}% \letvalue\bufferstop\relax} %{\@EA\setbuffercapsules\@EA{\csname#3\@EA\endcsname\@EA}\@EA{\csname#4\endcsname}}% if we strip later {\setbuffercapsules{#3}{#4}}% \expanded{\dodowithbuffer {\currentbuffer} {\bufferstart} {\bufferstop} {\donothing} {#5% \egroup \noexpand\getvalue{\bufferstop}}}} \def\mkdobuffer#1% {#1} \def\mkdoifelsebuffer#1% {\ctxlua{buffers.doifelsebuffer("#1")}} \def\mkgetbuffer {\ctxlua{buffers.get("\currentbuffer")}} % will move \ifx\mkinitializeverbatim\undefined \def\mkinitializeverbatim{\tttf} \fi \def\mktypebuffer {\mkdotypebuffer{\v!file}{}{\currentbuffer}} \def\mkprocessbufferverbatim {\mkinitializeverbatim \ctxlua{buffers.type("\currentbuffer")}} \def\mkprocessbufferlinesverbatim#1#2#3% {#2% % todo, set up numbers \mkinitializeverbatim \ctxlua{buffers.type("\currentbuffer")} #3} \def\mkdotypebuffer#1#2#3% see dodotypefile {\mkdoifelsebuffer{#3} {\dosometyping{#1}{#2}{#3}\mkprocessbufferverbatim\mkprocessbufferlinesverbatim} {\reporttypingerror{#3}}} % \def\setbuffercapsules#1#2% % {\edef\bufferstart{\strippedcsname#1}\edef\bufferstart{\scantextokens\expandafter{\bufferstart}}% % \edef\bufferstop {\strippedcsname#2}\edef\bufferstop {\scantextokens\expandafter{\bufferstop }}} \def\setbuffercapsules#1#2% \scantextokens not needed (had a reason at some point) {\edef\bufferstart{#1}\edef\bufferstart{\scantextokens\expandafter{\bufferstart}}% \edef\bufferstop {#2}\edef\bufferstop {\scantextokens\expandafter{\bufferstop }}} \def\dowithbuffer#1#2#3% name, startsequence, stopsequence, before, after {\setbuffercapsules{#2}{#3}% \expanded{\dodowithbuffer{#1}{\bufferstart}{\bufferstop}}} \long\def\dodowithbuffer#1#2#3#4#5% name, startsequence, stopsequence, before, after {#4% \bgroup \setcatcodetable \vrbcatcodes \catcode`\\=12 \ctxlua{buffers.erase("#1")}% \long\def\nododowithbuffer {\egroup #5}% \long\def\dododowithbuffer##1#3% is detokenize needed? TEST {\ctxlua {buffers.grab("#1","#2","#3",\!!bs\detokenize{##1}\!!es)} \dododowithbuffer \nododowithbuffer}% \dododowithbuffer} % kind of redundant in mkiv \let\mkstartmemorybuffer\startbuffer \let\mkstartfilebuffer \startbuffer % bonus \def\inspectbuffer {\dosingleempty\doinspectbuffer} \def\doinspectbuffer[#1]% {\setcurrentbuffer{#1}% \ctxlua{buffers.inspect("\currentbuffer")}} \protect \endinput