mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
The default highlight language is now Python 3.
References: #2279. This means that source code is highlighted as Python 3 (which is mostly a superset of Python 2), and no parsing is attempted to distinguish valid code.
This commit is contained in:
parent
7a4f914f91
commit
c1b7b6f369
3
CHANGES
3
CHANGES
@ -26,6 +26,9 @@ Incompatible changes
|
|||||||
by ``termsep`` node. In new implementation, each terms are converted into individual
|
by ``termsep`` node. In new implementation, each terms are converted into individual
|
||||||
``term`` nodes and ``termsep`` node is removed.
|
``term`` nodes and ``termsep`` node is removed.
|
||||||
By this change, output layout of every builders are changed a bit.
|
By this change, output layout of every builders are changed a bit.
|
||||||
|
* The default highlight language is now Python 3. This means that source code
|
||||||
|
is highlighted as Python 3 (which is mostly a superset of Python 2), and no
|
||||||
|
parsing is attempted to distinguish valid code.
|
||||||
|
|
||||||
Features added
|
Features added
|
||||||
--------------
|
--------------
|
||||||
|
@ -320,11 +320,16 @@ Project information
|
|||||||
.. confval:: highlight_language
|
.. confval:: highlight_language
|
||||||
|
|
||||||
The default language to highlight source code in. The default is
|
The default language to highlight source code in. The default is
|
||||||
``'python'``. The value should be a valid Pygments lexer name, see
|
``'python3'``. The value should be a valid Pygments lexer name, see
|
||||||
:ref:`code-examples` for more details.
|
:ref:`code-examples` for more details.
|
||||||
|
|
||||||
.. versionadded:: 0.5
|
.. versionadded:: 0.5
|
||||||
|
|
||||||
|
.. versionchanged:: 1.4
|
||||||
|
The default is now ``'python3'``, since it is mostly a superset of
|
||||||
|
``'python'``. If you prefer Python 2 only highlighting, you can set
|
||||||
|
it back to ``'python'``.
|
||||||
|
|
||||||
.. confval:: highlight_options
|
.. confval:: highlight_options
|
||||||
|
|
||||||
A dictionary of options that modify how the lexer specified by
|
A dictionary of options that modify how the lexer specified by
|
||||||
|
@ -65,7 +65,7 @@ class Config(object):
|
|||||||
trim_footnote_reference_space = (False, 'env'),
|
trim_footnote_reference_space = (False, 'env'),
|
||||||
show_authors = (False, 'env'),
|
show_authors = (False, 'env'),
|
||||||
pygments_style = (None, 'html', [str]),
|
pygments_style = (None, 'html', [str]),
|
||||||
highlight_language = ('python', 'env'),
|
highlight_language = ('python3', 'env'),
|
||||||
highlight_options = ({}, 'env'),
|
highlight_options = ({}, 'env'),
|
||||||
templates_path = ([], 'html'),
|
templates_path = ([], 'html'),
|
||||||
template_bridge = (None, 'html', [str]),
|
template_bridge = (None, 'html', [str]),
|
||||||
|
@ -25,8 +25,8 @@ from sphinx.util.texescape import tex_hl_escape_map_new
|
|||||||
from sphinx.ext import doctest
|
from sphinx.ext import doctest
|
||||||
|
|
||||||
from pygments import highlight
|
from pygments import highlight
|
||||||
from pygments.lexers import PythonLexer, PythonConsoleLexer, CLexer, \
|
from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \
|
||||||
TextLexer, RstLexer
|
CLexer, TextLexer, RstLexer
|
||||||
from pygments.lexers import get_lexer_by_name, guess_lexer
|
from pygments.lexers import get_lexer_by_name, guess_lexer
|
||||||
from pygments.formatters import HtmlFormatter, LatexFormatter
|
from pygments.formatters import HtmlFormatter, LatexFormatter
|
||||||
from pygments.filters import ErrorToken
|
from pygments.filters import ErrorToken
|
||||||
@ -37,6 +37,7 @@ from sphinx.pygments_styles import SphinxStyle, NoneStyle
|
|||||||
lexers = dict(
|
lexers = dict(
|
||||||
none = TextLexer(stripnl=False),
|
none = TextLexer(stripnl=False),
|
||||||
python = PythonLexer(stripnl=False),
|
python = PythonLexer(stripnl=False),
|
||||||
|
python3 = Python3Lexer(stripnl=False),
|
||||||
pycon = PythonConsoleLexer(stripnl=False),
|
pycon = PythonConsoleLexer(stripnl=False),
|
||||||
pycon3 = PythonConsoleLexer(python3=True, stripnl=False),
|
pycon3 = PythonConsoleLexer(python3=True, stripnl=False),
|
||||||
rest = RstLexer(stripnl=False),
|
rest = RstLexer(stripnl=False),
|
||||||
@ -151,9 +152,11 @@ class PygmentsBridge(object):
|
|||||||
lexer = lexers['none']
|
lexer = lexers['none']
|
||||||
else:
|
else:
|
||||||
lexer = lexers['python']
|
lexer = lexers['python']
|
||||||
elif lang in ('python3', 'py3') and source.startswith('>>>'):
|
elif lang in ('py3', 'python3'):
|
||||||
# for py3, recognize interactive sessions, but do not try parsing...
|
if source.startswith('>>>'):
|
||||||
lexer = lexers['pycon3']
|
lexer = lexers['pycon3']
|
||||||
|
else:
|
||||||
|
lexer = lexers['python3']
|
||||||
elif lang == 'guess':
|
elif lang == 'guess':
|
||||||
try:
|
try:
|
||||||
lexer = guess_lexer(source)
|
lexer = guess_lexer(source)
|
||||||
@ -187,7 +190,8 @@ class PygmentsBridge(object):
|
|||||||
# this is most probably not the selected language,
|
# this is most probably not the selected language,
|
||||||
# so let it pass unhighlighted
|
# so let it pass unhighlighted
|
||||||
if warn:
|
if warn:
|
||||||
warn('Could not parse literal_block as "%s". highlighting skipped.' % lang)
|
warn('Could not lex literal_block as "%s". '
|
||||||
|
'Highlighting skipped.' % lang)
|
||||||
else:
|
else:
|
||||||
raise exc
|
raise exc
|
||||||
hlsource = highlight(source, lexers['none'], formatter)
|
hlsource = highlight(source, lexers['none'], formatter)
|
||||||
|
@ -17,10 +17,12 @@ Test file and literal inclusion
|
|||||||
|
|
||||||
.. should give a warning
|
.. should give a warning
|
||||||
.. literalinclude:: wrongenc.inc
|
.. literalinclude:: wrongenc.inc
|
||||||
|
:language: none
|
||||||
|
|
||||||
.. should succeed
|
.. should succeed
|
||||||
.. literalinclude:: wrongenc.inc
|
.. literalinclude:: wrongenc.inc
|
||||||
:encoding: latin-1
|
:encoding: latin-1
|
||||||
|
:language: none
|
||||||
.. include:: wrongenc.inc
|
.. include:: wrongenc.inc
|
||||||
:encoding: latin-1
|
:encoding: latin-1
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ Generic reST
|
|||||||
|
|
||||||
A |subst| (the definition is in rst_epilog).
|
A |subst| (the definition is in rst_epilog).
|
||||||
|
|
||||||
|
.. highlight:: none
|
||||||
|
|
||||||
.. _label:
|
.. _label:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
@ -31,16 +31,16 @@ http://www.python.org/logo.png
|
|||||||
reading included file u'.*?wrongenc.inc' seems to be wrong, try giving an \
|
reading included file u'.*?wrongenc.inc' seems to be wrong, try giving an \
|
||||||
:encoding: option\\n?
|
:encoding: option\\n?
|
||||||
%(root)s/includes.txt:4: WARNING: download file not readable: .*?nonexisting.png
|
%(root)s/includes.txt:4: WARNING: download file not readable: .*?nonexisting.png
|
||||||
(%(root)s/markup.txt:357: WARNING: invalid single index entry u'')?
|
(%(root)s/markup.txt:359: WARNING: invalid single index entry u'')?
|
||||||
(%(root)s/undecodable.txt:3: WARNING: undecodable source characters, replacing \
|
(%(root)s/undecodable.txt:3: WARNING: undecodable source characters, replacing \
|
||||||
with "\\?": b?'here: >>>(\\\\|/)xbb<<<'
|
with "\\?": b?'here: >>>(\\\\|/)xbb<<<'
|
||||||
)?"""
|
)?"""
|
||||||
|
|
||||||
HTML_WARNINGS = ENV_WARNINGS + """\
|
HTML_WARNINGS = ENV_WARNINGS + """\
|
||||||
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
||||||
%(root)s/markup.txt:269: WARNING: Could not parse literal_block as "c". highlighting skipped.
|
%(root)s/markup.txt:271: WARNING: Could not lex literal_block as "c". Highlighting skipped.
|
||||||
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
||||||
%(root)s/markup.txt:158: WARNING: unknown option: &option
|
%(root)s/markup.txt:160: WARNING: unknown option: &option
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if PY3:
|
if PY3:
|
||||||
|
@ -24,10 +24,10 @@ from test_build_html import ENV_WARNINGS
|
|||||||
|
|
||||||
|
|
||||||
LATEX_WARNINGS = ENV_WARNINGS + """\
|
LATEX_WARNINGS = ENV_WARNINGS + """\
|
||||||
%(root)s/markup.txt:158: WARNING: unknown option: &option
|
%(root)s/markup.txt:160: WARNING: unknown option: &option
|
||||||
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
||||||
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
||||||
%(root)s/markup.txt:269: WARNING: Could not parse literal_block as "c". highlighting skipped.
|
%(root)s/markup.txt:271: WARNING: Could not lex literal_block as "c". Highlighting skipped.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if PY3:
|
if PY3:
|
||||||
|
@ -23,7 +23,7 @@ from test_build_html import ENV_WARNINGS
|
|||||||
|
|
||||||
|
|
||||||
TEXINFO_WARNINGS = ENV_WARNINGS + """\
|
TEXINFO_WARNINGS = ENV_WARNINGS + """\
|
||||||
%(root)s/markup.txt:158: WARNING: unknown option: &option
|
%(root)s/markup.txt:160: WARNING: unknown option: &option
|
||||||
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
%(root)s/footnote.txt:60: WARNING: citation not found: missing
|
||||||
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
%(root)s/images.txt:20: WARNING: no matching candidate for image URI u'foo.\\*'
|
||||||
%(root)s/images.txt:29: WARNING: no matching candidate for image URI u'svgimg.\\*'
|
%(root)s/images.txt:29: WARNING: no matching candidate for image URI u'svgimg.\\*'
|
||||||
|
Loading…
Reference in New Issue
Block a user