Skip to content

Commit

Permalink
Merge pull request sphinx-doc#7942 from tk0miya/7879_default_setting_…
Browse files Browse the repository at this point in the history
…of_html_codeblock_linenos_style

html: html_codeblock_linenos_style defaults to 'inline' (refs: sphinx-doc#7849)
  • Loading branch information
tk0miya committed Jan 25, 2021
2 parents 77fad1e + 84dc65a commit 2ee0338
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 78 deletions.
3 changes: 3 additions & 0 deletions CHANGES
Expand Up @@ -23,6 +23,8 @@ Incompatible changes
section
* #7996: manpage: Make a section directory on build manpage by default (see
:confval:`man_make_section_directory`)
* #7849: html: Change the default setting of
:confval:`html_codeblock_linenos_style` to ``'inline'``
* #8380: html search: search results are wrapped with ``<p>`` instead of
``<div>``
* html theme: Move a script tag for documentation_options.js in
Expand All @@ -38,6 +40,7 @@ Incompatible changes
Deprecated
----------

* :confval:`html_codeblock_linenos_style`
* ``favicon`` and ``logo`` variable in HTML templates
* ``sphinx.directives.patches.CSVTable``
* ``sphinx.directives.patches.ListTable``
Expand Down
9 changes: 7 additions & 2 deletions doc/usage/configuration.rst
Expand Up @@ -971,10 +971,15 @@ that use Sphinx's HTMLWriter class.

The style of line numbers for code-blocks.

* ``'table'`` -- display line numbers using ``<table>`` tag (default)
* ``'inline'`` -- display line numbers using ``<span>`` tag
* ``'table'`` -- display line numbers using ``<table>`` tag
* ``'inline'`` -- display line numbers using ``<span>`` tag (default)

.. versionadded:: 3.2
.. versionchanged:: 4.0

It defaults to ``'inline'``.

.. deprecated:: 4.0

.. confval:: html_context

Expand Down
2 changes: 1 addition & 1 deletion sphinx/builders/html/__init__.py
Expand Up @@ -1296,7 +1296,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_config_value('html_search_scorer', '', None)
app.add_config_value('html_scaled_image_link', True, 'html')
app.add_config_value('html_baseurl', '', 'html')
app.add_config_value('html_codeblock_linenos_style', 'table', 'html',
app.add_config_value('html_codeblock_linenos_style', 'inline', 'html', # RemovedInSphinx60Warning # NOQA
ENUM('table', 'inline'))
app.add_config_value('html_math_renderer', None, 'env')
app.add_config_value('html4_writer', False, 'html')
Expand Down
94 changes: 19 additions & 75 deletions tests/test_directive_code.py
Expand Up @@ -423,44 +423,16 @@ def test_literal_include_linenos(app, status, warning):
html = (app.outdir / 'linenos.html').read_text()

# :linenos:
assert ('<td class="linenos"><div class="linenodiv"><pre>'
' 1\n'
' 2\n'
' 3\n'
' 4\n'
' 5\n'
' 6\n'
' 7\n'
' 8\n'
' 9\n'
'10\n'
'11\n'
'12\n'
'13</pre></div></td>' in html)
assert ('<span class="linenos"> 1</span><span class="c1">'
'# Literally included file using Python highlighting</span>' in html)

# :lineno-start:
assert ('<td class="linenos"><div class="linenodiv"><pre>'
'200\n'
'201\n'
'202\n'
'203\n'
'204\n'
'205\n'
'206\n'
'207\n'
'208\n'
'209\n'
'210\n'
'211\n'
'212</pre></div></td>' in html)

# :lineno-match:
assert ('<td class="linenos"><div class="linenodiv"><pre>'
'5\n'
'6\n'
'7\n'
'8\n'
'9</pre></div></td>' in html)
assert ('<span class="linenos">200</span><span class="c1">'
'# Literally included file using Python highlighting</span>' in html)

# :lines: 5-9
assert ('<span class="linenos">5</span><span class="k">class</span> '
'<span class="nc">Foo</span><span class="p">:</span>' in html)


@pytest.mark.sphinx('latex', testroot='directive-code')
Expand Down Expand Up @@ -594,45 +566,17 @@ def test_linenothreshold(app, status, warning):
app.builder.build(['linenothreshold'])
html = (app.outdir / 'linenothreshold.html').read_text()

lineos_head = '<td class="linenos"><div class="linenodiv"><pre>'
lineos_tail = '</pre></div></td>'

# code-block using linenothreshold
_, matched, html = html.partition(lineos_head +
'1\n'
'2\n'
'3\n'
'4\n'
'5\n'
'6' + lineos_tail)
assert matched

# code-block not using linenothreshold
html, matched, _ = html.partition(lineos_head +
'1\n'
'2' + lineos_tail)
assert not matched
assert ('<span class="linenos">1</span><span class="k">class</span> '
'<span class="nc">Foo</span><span class="p">:</span>' in html)

# code-block not using linenothreshold (no line numbers)
assert '<span></span><span class="c1"># comment</span>' in html

# literal include using linenothreshold
_, matched, html = html.partition(lineos_head +
' 1\n'
' 2\n'
' 3\n'
' 4\n'
' 5\n'
' 6\n'
' 7\n'
' 8\n'
' 9\n'
'10\n'
'11\n'
'12\n'
'13' + lineos_tail)
assert matched

# literal include not using linenothreshold
html, matched, _ = html.partition(lineos_head +
'1\n'
'2\n'
'3' + lineos_tail)
assert not matched
assert ('<span class="linenos"> 1</span><span class="c1">'
'# Literally included file using Python highlighting</span>' in html)

# literal include not using linenothreshold (no line numbers)
assert ('<span></span><span class="c1"># Very small literal include '
'(linenothreshold check)</span>' in html)

0 comments on commit 2ee0338

Please sign in to comment.