summaryrefslogtreecommitdiff
path: root/tex/context/base/page-lin.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-lin.mkiv')
-rw-r--r--tex/context/base/page-lin.mkiv52
1 files changed, 41 insertions, 11 deletions
diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv
index 84fa77813..2cea2da03 100644
--- a/tex/context/base/page-lin.mkiv
+++ b/tex/context/base/page-lin.mkiv
@@ -24,6 +24,30 @@
%
% we should use normal counters but then we need to sync settings
+% not yet ok, we need to give the top line a proper height
+%
+% \newbox\locallinenumberbox
+%
+% \unexpanded\def\startlocallinenumbering
+% {\setbox\locallinenumberbox\vbox\bgroup
+% \startlinenumbering}
+%
+% \unexpanded\def\stoplocallinenumbering
+% {\stoplinenumbering
+% \egroup
+% \mkdoprocessdeepboxcontents\locallinenumberbox
+% \unvbox\locallinenumberbox}
+
+% some line
+%
+% \startlocallinenumbering
+% some source code 1\par
+% some source code 2\par
+% some source code 3\par
+% \stoplocallinenumbering
+%
+% some line
+
\registerctxluafile{page-lin}{1.001}
\definesystemattribute[linenumber] [public]
@@ -32,15 +56,19 @@
\appendtoksonce \attribute\linenumberattribute \attributeunsetvalue \to \everyforgetall
\appendtoksonce \attribute\displaymathattribute\plusone \to \everybeforedisplayformula
-\newcount\linenumber % not used
-\newbox \linenumberscratchbox
-\newcount\linenumberchunk
-\newcount\linerefcounter
+\newcount \linenumber % not used
+\newbox \linenumberscratchbox
+\newcount \linenumberchunk
+\newcount \linerefcounter
+\newconstant\linenumbernesting
\newconditional\tracelinenumbering
-\def\mkprocesstextlinenumbers#1%
- {\setbox\linenumberscratchbox\vbox{\forgetall\offinterlineskip\ctxlua{nodes.lines.boxed.stage_one(\number#1)}}%
+\def\mkprocesstextlinenumbers#1#2%
+ {\setbox\linenumberscratchbox\vbox
+ {\forgetall
+ \offinterlineskip
+ \ctxlua{nodes.lines.boxed.stage_one(\number#1,\ifcase\linenumbernesting false\else true\fi)}}%
\ctxlua{nodes.lines.boxed.stage_two(\number#1,\number\linenumberscratchbox)}}% can move to lua code
% id nr shift width leftskip dir
@@ -49,9 +77,10 @@
\newconditional\boxcontentneedsprocessing
-\def\mkdoprocesspagecontents #1{\mkaddtextlinenumbers{#1}\plusone \plusone}
-\def\mkdoprocessboxcontents #1{\mkaddtextlinenumbers{#1}\plusone \plusone}
-\def\mkdoprocesscolumncontents#1{\mkaddtextlinenumbers{#1}\currentcolumn\nofcolumns}
+\def\mkdoprocesspagecontents #1{\mkaddtextlinenumbers{#1}\plusone \plusone \zerocount}
+\def\mkdoprocessboxcontents #1{\mkaddtextlinenumbers{#1}\plusone \plusone \zerocount}
+\def\mkdoprocessdeepboxcontents#1{\mkaddtextlinenumbers{#1}\plusone \plusone \plusone }
+\def\mkdoprocesscolumncontents #1{\mkaddtextlinenumbers{#1}\currentcolumn\nofcolumns\zerocount}
\def\mklinenumberparameters
{continue = "\linenumberparameter\c!continue",
@@ -280,14 +309,15 @@
\newconstant \linenumbercolumn
\newconstant \linenumberlastcolumn
-\def\mkaddtextlinenumbers#1#2#3% box col max
+\def\mkaddtextlinenumbers#1#2#3#4% box col max nesting
{\bgroup
\linenumberbox #1\relax
\linenumbercolumn #2\relax
\linenumberlastcolumn#3\relax
+ \linenumbernesting #4\relax
\fullrestoreglobalbodyfont
\let\makelinenumber\maketextlinenumber
- \mkprocesstextlinenumbers\linenumberbox
+ \mkprocesstextlinenumbers\linenumberbox\linenumbernesting
\egroup}
\def\maketextlinenumber#1#2%