Revert `html_codeblock_linenos_style` removal (#10922)

This commit is contained in:
Adam Turner 2022-10-16 16:50:53 +01:00 committed by GitHub
parent e70a0fac6d
commit 592b46c431
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 5 deletions

View File

@ -1065,6 +1065,20 @@ that use Sphinx's HTMLWriter class.
.. versionadded:: 1.8 .. versionadded:: 1.8
.. confval:: html_codeblock_linenos_style
The style of line numbers for code-blocks.
* ``'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 .. confval:: html_context
A dictionary of values to pass into the template engine's context for all A dictionary of values to pass into the template engine's context for all

View File

@ -23,7 +23,7 @@ from sphinx import __display_version__, package_dir
from sphinx import version_info as sphinx_version from sphinx import version_info as sphinx_version
from sphinx.application import Sphinx from sphinx.application import Sphinx
from sphinx.builders import Builder from sphinx.builders import Builder
from sphinx.config import Config from sphinx.config import ENUM, Config
from sphinx.deprecation import RemovedInSphinx70Warning, deprecated_alias from sphinx.deprecation import RemovedInSphinx70Warning, deprecated_alias
from sphinx.domains import Domain, Index, IndexEntry from sphinx.domains import Domain, Index, IndexEntry
from sphinx.environment import BuildEnvironment from sphinx.environment import BuildEnvironment
@ -1371,6 +1371,8 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_config_value('html_search_scorer', '', None) app.add_config_value('html_search_scorer', '', None)
app.add_config_value('html_scaled_image_link', True, 'html') app.add_config_value('html_scaled_image_link', True, 'html')
app.add_config_value('html_baseurl', '', 'html') app.add_config_value('html_baseurl', '', 'html')
app.add_config_value('html_codeblock_linenos_style', 'inline', 'html', # RemovedInSphinx70Warning # NOQA
ENUM('table', 'inline'))
app.add_config_value('html_math_renderer', None, 'env') app.add_config_value('html_math_renderer', None, 'env')
app.add_config_value('html4_writer', False, 'html') app.add_config_value('html4_writer', False, 'html')

View File

@ -446,11 +446,14 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
return super().visit_literal_block(node) return super().visit_literal_block(node)
lang = node.get('language', 'default') lang = node.get('language', 'default')
linenos = node.get('linenos', False) and "inline" linenos = node.get('linenos', False)
highlight_args = node.get('highlight_args', {}) highlight_args = node.get('highlight_args', {})
highlight_args['force'] = node.get('force', False) highlight_args['force'] = node.get('force', False)
opts = self.config.highlight_options.get(lang, {}) opts = self.config.highlight_options.get(lang, {})
if linenos and self.config.html_codeblock_linenos_style:
linenos = self.config.html_codeblock_linenos_style
highlighted = self.highlighter.highlight_block( highlighted = self.highlighter.highlight_block(
node.rawsource, lang, opts=opts, linenos=linenos, node.rawsource, lang, opts=opts, linenos=linenos,
location=node, **highlight_args location=node, **highlight_args

View File

@ -404,11 +404,14 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
return super().visit_literal_block(node) return super().visit_literal_block(node)
lang = node.get('language', 'default') lang = node.get('language', 'default')
linenos = node.get('linenos', False) and "inline" linenos = node.get('linenos', False)
highlight_args = node.get('highlight_args', {}) highlight_args = node.get('highlight_args', {})
highlight_args['force'] = node.get('force', False) highlight_args['force'] = node.get('force', False)
opts = self.config.highlight_options.get(lang, {}) opts = self.config.highlight_options.get(lang, {})
if linenos and self.config.html_codeblock_linenos_style:
linenos = self.config.html_codeblock_linenos_style
highlighted = self.highlighter.highlight_block( highlighted = self.highlighter.highlight_block(
node.rawsource, lang, opts=opts, linenos=linenos, node.rawsource, lang, opts=opts, linenos=linenos,
location=node, **highlight_args location=node, **highlight_args

View File

@ -1598,8 +1598,21 @@ def test_html_scaled_image_link(app):
context) context)
@pytest.mark.sphinx('html', testroot='reST-code-block') @pytest.mark.sphinx('html', testroot='reST-code-block',
def test_html_codeblock_linenos_style(app): confoverrides={'html_codeblock_linenos_style': 'table'})
def test_html_codeblock_linenos_style_table(app):
app.build()
content = (app.outdir / 'index.html').read_text(encoding='utf8')
assert ('<div class="linenodiv"><pre><span class="normal">1</span>\n'
'<span class="normal">2</span>\n'
'<span class="normal">3</span>\n'
'<span class="normal">4</span></pre></div>') in content
@pytest.mark.sphinx('html', testroot='reST-code-block',
confoverrides={'html_codeblock_linenos_style': 'inline'})
def test_html_codeblock_linenos_style_inline(app):
app.build() app.build()
content = (app.outdir / 'index.html').read_text(encoding='utf8') content = (app.outdir / 'index.html').read_text(encoding='utf8')