1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
if not modules then modules = { } end modules ['spac-hor'] = {
version = 1.001,
comment = "companion to spac-hor.mkiv",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
local chardata = characters.data
local peekchar = tokens.scanners.peekchar
local ctx_space = context.space
local can_have_space = characters.can_have_space
interfaces.implement {
name = "autoinsertnextspace",
protected = true,
public = true,
actions = function()
local char = peekchar() -- nil means space command
if char then
local d = chardata[char]
if d and can_have_space[d.category] then
ctx_space()
end
end
end,
}
local nuts = nodes.nuts
local tonut = nodes.tonut
local traverseglue = nuts.traversers.glue
local setwidth = nodes.nuts.setwidth
local indentskip_code = nodes.gluecodes.indentskip
local texgetnest = tex.getnest
local function lateindent(amount)
local head = tonut(texgetnest("top","head"))
if head then
for n, s in traverseglue, head do
if s == indentskip_code then
setwidth(n,amount or 0)
end
end
end
end
interfaces.implement {
name = "lateindent",
public = true,
protected = "true",
arguments = "dimension",
actions = lateindent,
}
interfaces.implement {
name = "lateundent",
public = true,
protected = "true",
actions = lateindent,
}
|