summaryrefslogtreecommitdiff
path: root/sphinx/highlighting.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/highlighting.py')
-rw-r--r--sphinx/highlighting.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
index 198939197..493ecb7a7 100644
--- a/sphinx/highlighting.py
+++ b/sphinx/highlighting.py
@@ -11,11 +11,13 @@
from six import text_type
+from sphinx.util import logging
from sphinx.util.pycompat import htmlescape
from sphinx.util.texescape import tex_hl_escape_map_new
from sphinx.ext import doctest
from pygments import highlight
+from pygments.lexer import Lexer # NOQA
from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \
CLexer, TextLexer, RstLexer
from pygments.lexers import get_lexer_by_name, guess_lexer
@@ -25,6 +27,8 @@ from pygments.styles import get_style_by_name
from pygments.util import ClassNotFound
from sphinx.pygments_styles import SphinxStyle, NoneStyle
+logger = logging.getLogger(__name__)
+
lexers = dict(
none = TextLexer(stripnl=False),
python = PythonLexer(stripnl=False),
@@ -33,7 +37,7 @@ lexers = dict(
pycon3 = PythonConsoleLexer(python3=True, stripnl=False),
rest = RstLexer(stripnl=False),
c = CLexer(stripnl=False),
-)
+) # type: Dict[unicode, Lexer]
for _lexer in lexers.values():
_lexer.add_filter('raiseonerror')
@@ -91,7 +95,7 @@ class PygmentsBridge(object):
return '\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n' + \
source + '\\end{Verbatim}\n'
- def highlight_block(self, source, lang, opts=None, warn=None, force=False, **kwargs):
+ def highlight_block(self, source, lang, opts=None, location=None, force=False, **kwargs):
if not isinstance(source, text_type):
source = source.decode()
@@ -119,11 +123,9 @@ class PygmentsBridge(object):
try:
lexer = lexers[lang] = get_lexer_by_name(lang, **(opts or {}))
except ClassNotFound:
- if warn:
- warn('Pygments lexer name %r is not known' % lang)
- lexer = lexers['none']
- else:
- raise
+ logger.warning('Pygments lexer name %r is not known', lang,
+ location=location)
+ lexer = lexers['none']
else:
lexer.add_filter('raiseonerror')
@@ -136,17 +138,16 @@ class PygmentsBridge(object):
formatter = self.get_formatter(**kwargs)
try:
hlsource = highlight(source, lexer, formatter)
- except ErrorToken as exc:
+ except ErrorToken:
# this is most probably not the selected language,
# so let it pass unhighlighted
if lang == 'default':
pass # automatic highlighting failed.
- elif warn:
- warn('Could not lex literal_block as "%s". '
- 'Highlighting skipped.' % lang,
- type='misc', subtype='highlighting_failure')
else:
- raise exc
+ logger.warning('Could not lex literal_block as "%s". '
+ 'Highlighting skipped.', lang,
+ type='misc', subtype='highlighting_failure',
+ location=location)
hlsource = highlight(source, lexers['none'], formatter)
if self.dest == 'html':
return hlsource