summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-07-11 22:30:37 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2021-01-26 01:42:17 +0900
commit84dc65ad51ee91e1073ff9b99b207753843f387c (patch)
tree16ca1cf2a9c423b62d9705202ca22f0dcda4a90a
parent77fad1ec9826a6e3751030ea719be04acd9519c3 (diff)
downloadsphinx-git-84dc65ad51ee91e1073ff9b99b207753843f387c.tar.gz
html: html_codeblock_linenos_style defaults to 'inline' (refs: #7849)
As discussed in #7879, the default style of line numbers for code blocks in HTML output becames 'inline' by default. And 'table' style is now deprecated and will be removed in Sphinx-6.0.
-rw-r--r--CHANGES3
-rw-r--r--doc/usage/configuration.rst9
-rw-r--r--sphinx/builders/html/__init__.py2
-rw-r--r--tests/test_directive_code.py94
4 files changed, 30 insertions, 78 deletions
diff --git a/CHANGES b/CHANGES
index 3a7ebf429..c3be86a31 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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
@@ -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``
diff --git a/doc/usage/configuration.rst b/doc/usage/configuration.rst
index cc12e1eb1..0283fcb7c 100644
--- a/doc/usage/configuration.rst
+++ b/doc/usage/configuration.rst
@@ -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
diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py
index 9e790bc48..105d90235 100644
--- a/sphinx/builders/html/__init__.py
+++ b/sphinx/builders/html/__init__.py
@@ -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')
diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py
index 0ae11baf3..a011a31e8 100644
--- a/tests/test_directive_code.py
+++ b/tests/test_directive_code.py
@@ -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')
@@ -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)