From 84dc65ad51ee91e1073ff9b99b207753843f387c Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 11 Jul 2020 22:30:37 +0900 Subject: [PATCH] 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. --- CHANGES | 3 + doc/usage/configuration.rst | 9 ++- sphinx/builders/html/__init__.py | 2 +- tests/test_directive_code.py | 94 +++++++------------------------- 4 files changed, 30 insertions(+), 78 deletions(-) diff --git a/CHANGES b/CHANGES index 3a7ebf4294..c3be86a31b 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 ``

`` instead of ``

`` * 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 cc12e1eb14..0283fcb7c2 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 ```` tag (default) - * ``'inline'`` -- display line numbers using ```` tag + * ``'table'`` -- display line numbers using ``
`` tag + * ``'inline'`` -- display line numbers using ```` 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 9e790bc489..105d90235d 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 0ae11baf32..a011a31e8f 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 ('' in html) + assert (' 1' + '# Literally included file using Python highlighting' in html) # :lineno-start: - assert ('' in html) - - # :lineno-match: - assert ('' in html) + assert ('200' + '# Literally included file using Python highlighting' in html) + + # :lines: 5-9 + assert ('5class ' + 'Foo:' 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 = '' - # 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 ('1class ' + 'Foo:' in html) + + # code-block not using linenothreshold (no line numbers) + assert '# comment' 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 (' 1' + '# Literally included file using Python highlighting' in html) + + # literal include not using linenothreshold (no line numbers) + assert ('# Very small literal include ' + '(linenothreshold check)' in html)
'
-            ' 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
'
-            '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
'
-            '5\n'
-            '6\n'
-            '7\n'
-            '8\n'
-            '9
'
-    lineos_tail = '