summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/cont-new.tex2
-rw-r--r--tex/context/base/context.tex2
-rw-r--r--tex/context/base/strc-lst.mkiv72
-rw-r--r--tex/context/base/supp-box.lua13
-rw-r--r--tex/generic/context/luatex-fonts-merged.lua2
5 files changed, 55 insertions, 36 deletions
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 1248d1568..2d46457a9 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2010.12.12 17:06}
+\newcontextversion{2010.12.13 20:58}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 12939fa64..9065429f9 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2010.12.12 17:06}
+\edef\contextversion{2010.12.13 20:58}
%D For those who want to use this:
diff --git a/tex/context/base/strc-lst.mkiv b/tex/context/base/strc-lst.mkiv
index 526ed0409..f037ea6ae 100644
--- a/tex/context/base/strc-lst.mkiv
+++ b/tex/context/base/strc-lst.mkiv
@@ -70,9 +70,18 @@
\def\structurelistinject{\dotripleempty\dostructurelistinject}
-\def\dostructurelistinject[#1][#2][#3]%
+\def\dostructurelistinject[#1]% [#2][#3]% no check on nofarguments here
{\begingroup
- \edef\currentlistname{#1}%
+ \edef\currentlist{#1}%
+ \doifelse{\listparameter\c!state}\v!start\dodostructurelistinject\nonostructurelistinject}
+
+\def\dodostructurelistinject[#1][#2]%
+ {\endgroup}
+
+\def\dodostructurelistinject[#1][#2]%
+ {\getparameters[\??li\??li][\c!type=userdata,\c!location=\v!none,#1]%
+ \edef\currentlisttype {\@@li@@litype}%
+ \edef\currentlistlocation{\@@li@@lilocation}%
\setnextinternalreference
\edef\currentlistnumber{\ctxlua{structures.lists.push{
references = {
@@ -81,16 +90,15 @@
section = structures.sections.currentid(),
},
metadata = {
- kind = "#2",
- name = "\currentlistname",
+ kind = "\currentlisttype",
+ name = "\currentlist",
level = structures.sections.currentlevel(),
catcodes = \the\catcodetable,
},
- userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es)
+ userdata = structures.helpers.touserdata(\!!bs\detokenize{#2}\!!es)
}}}%
- \edef\structurelistsynchronize{\getvalue{\??li::inject::#2::synchronize}}%
% we can do the enhance injection at the lua end which saves tokenization and a call
- \ifx\structurelistsynchronize\v!yes
+ \ifx\currentlistlocation\v!here
% this injects nodes !
\expanded{\ctxlatelua{structures.lists.enhance(\currentlistnumber)}}%
% new from here
@@ -381,23 +389,39 @@
\let\dowritetolist \gobblefourarguments
\let\dodowritetolist\gobblefourarguments
-% some day we will have \definestructurelistinjector or maybe just as key in #3
-
-\letvalue{\??li::inject::command::synchronize}\v!no
-\letvalue{\??li::inject::userdata::synchronize}\v!no
-\letvalue{\??li::inject::simple::synchronize}\v!yes
-
-\unexpanded\def\writebetweenlist[#1]#2%
- {\doif{\namedlistparameter{#1}\c!state}\v!start{\structurelistinject[#1][command][command={#2}]}}
-
-\unexpanded\def\writedatatolist
- {\dodoubleargument\dowritedatatolist}
-
-\def\dowritedatatolist[#1][#2]%
- {\doif{\namedlistparameter{#1}\c!state}\v!start{\structurelistinject[#1][userdata][#2]}}
-
-\unexpanded\def\writetolist[#1]#2#3%
- {\doif{\namedlistparameter{#1}\c!state}\v!start{\structurelistinject[#1][simple][first={#2},second={#3}]}}
+% command : location=none
+% userdata : location=none
+% simple : location=here
+
+\unexpanded\def\writebetweenlist{\dodoubleempty \dowritebetweenlist}
+\unexpanded\def\writedatatolist {\dotripleargument\dowritedatatolist}
+\unexpanded\def\writetolist {\dodoubleempty \dowritetolist}
+
+\def\dowritebetweenlist[#1][#2]#3% we can overload location
+ {\doif{\namedlistparameter{#1}\c!state}\v!start
+ {\ifsecondargument
+ \dostructurelistinject[#1][#2,\c!type=command][command={#3}]%
+ \else
+ \dostructurelistinject[#1][\c!type=command][command={#3}]%
+ \fi}}
+
+
+\def\dowritedatatolist[#1][#2][#3]% we can overload location
+ {\doif{\namedlistparameter{#1}\c!state}\v!start
+ {\ifthirdargument
+ \dostructurelistinject[#1][#2,\c!type=userdata][#3]%
+ \else
+ \dostructurelistinject[#1][\c!type=userdata][#2]%
+ \fi}}
+
+
+\def\dowritetolist[#1][#2]#3#4% we can overload location
+ {\doif{\namedlistparameter{#1}\c!state}\v!start
+ {\ifsecondargument
+ \dostructurelistinject[#1][\c!location=\v!here,#2,\c!type=simple][first={#3},second={#4}]%
+ \else
+ \dostructurelistinject[#1][\c!location=\v!here,\c!type=simple][first={#3},second={#4}]%
+ \fi}}
\installstructurelistprocessor{simple}
{\dodolistelement
diff --git a/tex/context/base/supp-box.lua b/tex/context/base/supp-box.lua
index 6c53a4c5f..c40995562 100644
--- a/tex/context/base/supp-box.lua
+++ b/tex/context/base/supp-box.lua
@@ -24,19 +24,14 @@ local texbox = tex.box
function hyphenatedlist(list)
while list do
- local id = list.id
- local next = list.next
- local prev = list.prev
+ local id, next, prev = list.id, list.next, list.prev
if id == disc_code then
local hyphen = list.pre
if hyphen then
local penalty = new_penalty(-500)
- hyphen.next = penalty
- penalty.prev = hyphen
- prev.next = hyphen
- next.prev = penalty
- penalty.next = next
- hyphen.prev = prev
+ hyphen.next, penalty.prev = penalty, hyphen
+ prev.next, next.prev = hyphen, penalty
+ penalty.next, hyphen.prev = next, prev
list.pre = nil
free_node(list)
end
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index 1c692e810..6af528034 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 12/12/10 17:06:51
+-- merge date : 12/13/10 20:58:02
do -- begin closure to overcome local limits and interference