Skip to content

Commit 7c30e2c

Browse files
committed
Add table linenos support for Chroma highlighter
Fixes #3915
1 parent 60bd332 commit 7c30e2c

File tree

3 files changed

+35
-24
lines changed

3 files changed

+35
-24
lines changed

‎helpers/pygments.go‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import (
4040

4141
const pygmentsBin = "pygmentize"
4242

43-
// TODO(bep) document chroma -s perldoc --html --html-styles
4443
// hasPygments checks to see if Pygments is installed and available
4544
// on the system.
4645
func hasPygments() bool {
@@ -309,8 +308,12 @@ func (cs *ContentSpec) chromaFormatterFromOptions(pygmentsOpts map[string]string
309308
options = append(options, html.WithClasses())
310309
}
311310

312-
if pygmentsOpts["linenos"] != "" {
311+
lineNumbers := pygmentsOpts["linenos"]
312+
if lineNumbers != "" {
313313
options = append(options, html.WithLineNumbers())
314+
if lineNumbers != "inline" {
315+
options = append(options, html.LineNumbersInTable())
316+
}
314317
}
315318

316319
startLineStr := pygmentsOpts["linenostart"]

‎helpers/pygments_test.go‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ func TestParseDefaultPygmentsArgs(t *testing.T) {
111111
type chromaInfo struct {
112112
classes bool
113113
lineNumbers bool
114+
lineNumbersInTable bool
114115
highlightRangesLen int
115116
highlightRangesStr string
116117
baseLineNumber int
@@ -120,8 +121,10 @@ func formatterChromaInfo(f *html.Formatter) chromaInfo {
120121
v := reflect.ValueOf(f).Elem()
121122
c := chromaInfo{}
122123
// Hack:
123-
c.classes = v.FieldByName("classes").Bool()
124+
125+
c.classes = f.Classes
124126
c.lineNumbers = v.FieldByName("lineNumbers").Bool()
127+
c.lineNumbersInTable = v.FieldByName("lineNumbersInTable").Bool()
125128
c.baseLineNumber = int(v.FieldByName("baseLineNumber").Int())
126129
vv := v.FieldByName("highlightRanges")
127130
c.highlightRangesLen = vv.Len()
@@ -171,14 +174,19 @@ func TestChromaHTMLFormatterFromOptions(t *testing.T) {
171174
assert.Equal("[[1 1] [2 2] [3 3]]", c.highlightRangesStr)
172175
assert.Equal(1, c.baseLineNumber)
173176
}},
174-
{"linenos=sure,hl_lines=1,linenostart=4", nil, nil, "style=monokai,noclasses=false", func(c chromaInfo) {
177+
{"linenos=inline,hl_lines=1,linenostart=4", nil, nil, "style=monokai,noclasses=false", func(c chromaInfo) {
175178
assert.True(c.classes)
176179
assert.True(c.lineNumbers)
180+
assert.False(c.lineNumbersInTable)
177181
assert.Equal(1, c.highlightRangesLen)
178182
// This compansates for https://github.com/alecthomas/chroma/issues/30
179183
assert.Equal("[[4 4]]", c.highlightRangesStr)
180184
assert.Equal(4, c.baseLineNumber)
181185
}},
186+
{"linenos=table", nil, nil, "style=monokai", func(c chromaInfo) {
187+
assert.True(c.lineNumbers)
188+
assert.True(c.lineNumbersInTable)
189+
}},
182190
{"style=monokai,noclasses=false", nil, nil, "style=manni,noclasses=true", func(c chromaInfo) {
183191
assert.True(c.classes)
184192
}},

‎vendor/vendor.json‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,34 @@
2121
"revisionTime": "2017-08-10T14:37:23Z"
2222
},
2323
{
24-
"checksumSHA1": "OZOPnvP9OY1ADgmcDttl3Zvytcs=",
24+
"checksumSHA1": "/xPnkXIHTk3EtmQ9NbufTWUG15g=",
2525
"path": "github.com/alecthomas/chroma",
26-
"revision": "282a86e2a0ed1739095c404758b99402fe4f7045",
27-
"revisionTime": "2017-10-03T14:35:07Z"
26+
"revision": "02c4adc0664a104c4ea91c6c3a41a91b93bbd9ef",
27+
"revisionTime": "2017-10-14T09:02:40Z"
2828
},
2929
{
3030
"checksumSHA1": "pnWyHePZ2ZE/GEg2fBw/vyjYhmY=",
3131
"path": "github.com/alecthomas/chroma/formatters",
32-
"revision": "282a86e2a0ed1739095c404758b99402fe4f7045",
33-
"revisionTime": "2017-10-03T14:35:07Z"
32+
"revision": "02c4adc0664a104c4ea91c6c3a41a91b93bbd9ef",
33+
"revisionTime": "2017-10-14T09:02:40Z"
3434
},
3535
{
36-
"checksumSHA1": "cFa4bl6NeNIkSqOsKGY6SI5jprk=",
36+
"checksumSHA1": "YgboNwoGG2Yc/rWKaIb00/+Ad5Y=",
3737
"path": "github.com/alecthomas/chroma/formatters/html",
38-
"revision": "282a86e2a0ed1739095c404758b99402fe4f7045",
39-
"revisionTime": "2017-10-03T14:35:07Z"
38+
"revision": "02c4adc0664a104c4ea91c6c3a41a91b93bbd9ef",
39+
"revisionTime": "2017-10-14T09:02:40Z"
4040
},
4141
{
42-
"checksumSHA1": "MwdDmbQQEpscTjcENv5yUFWIBS0=",
42+
"checksumSHA1": "lSa/vZVJvB3+HngwkxBkPHw4EKg=",
4343
"path": "github.com/alecthomas/chroma/lexers",
44-
"revision": "282a86e2a0ed1739095c404758b99402fe4f7045",
45-
"revisionTime": "2017-10-03T14:35:07Z"
44+
"revision": "02c4adc0664a104c4ea91c6c3a41a91b93bbd9ef",
45+
"revisionTime": "2017-10-14T09:02:40Z"
4646
},
4747
{
4848
"checksumSHA1": "Wxv1e1MLoJGrZ33LgJqaoHcaBTs=",
4949
"path": "github.com/alecthomas/chroma/styles",
50-
"revision": "282a86e2a0ed1739095c404758b99402fe4f7045",
51-
"revisionTime": "2017-10-03T14:35:07Z"
50+
"revision": "02c4adc0664a104c4ea91c6c3a41a91b93bbd9ef",
51+
"revisionTime": "2017-10-14T09:02:40Z"
5252
},
5353
{
5454
"checksumSHA1": "7yrV1Gzr1ajco1xJ1gsyqRDTY2U=",
@@ -90,14 +90,14 @@
9090
{
9191
"checksumSHA1": "6y/Ht8J58EotTDBEIuE3+s4AnL8=",
9292
"path": "github.com/dlclark/regexp2",
93-
"revision": "487489b64fb796de2e55f4e8a4ad1e145f80e957",
94-
"revisionTime": "2017-07-18T21:59:41Z"
93+
"revision": "7632a260cbaf5e7594fc1544a503456ecd0827f1",
94+
"revisionTime": "2017-10-09T02:06:23Z"
9595
},
9696
{
9797
"checksumSHA1": "k0JXX65FspyueQ8/1i50DGRiCUk=",
9898
"path": "github.com/dlclark/regexp2/syntax",
99-
"revision": "487489b64fb796de2e55f4e8a4ad1e145f80e957",
100-
"revisionTime": "2017-07-18T21:59:41Z"
99+
"revision": "7632a260cbaf5e7594fc1544a503456ecd0827f1",
100+
"revisionTime": "2017-10-09T02:06:23Z"
101101
},
102102
{
103103
"checksumSHA1": "lTESeJAGIWm6b7Xytf9sP3Gjhj8=",
@@ -281,10 +281,10 @@
281281
"revisionTime": "2017-07-05T02:17:15Z"
282282
},
283283
{
284-
"checksumSHA1": "OZpv1QDSDG23bzSk/7auPQRB2Qg=",
284+
"checksumSHA1": "1KVewmQICPa+IH1gYJUKDgNbKpY=",
285285
"path": "github.com/russross/blackfriday",
286-
"revision": "4048872b16cc0fc2c5fd9eacf0ed2c2fedaa0c8c",
287-
"revisionTime": "2017-07-28T17:53:26Z"
286+
"revision": "6d1ef893fcb01b4f50cb6e57ed7df3e2e627b6b2",
287+
"revisionTime": "2017-10-11T18:22:19Z"
288288
},
289289
{
290290
"checksumSHA1": "HkNUuhYSk5C2fTMa536jBiORq44=",

0 commit comments

Comments
 (0)