Add warning facility on unknown Pygments lexer names.

This commit is contained in:
Georg Brandl 2010-04-04 20:27:41 +02:00
parent 454c9d3b9e
commit 1996a9e5e9

View File

@ -34,6 +34,7 @@ try:
from pygments.styles import get_style_by_name
from pygments.styles.friendly import FriendlyStyle
from pygments.token import Generic, Comment, Number
from pygments.util import ClassNotFound
except ImportError:
pygments = None
lexers = None
@ -170,7 +171,7 @@ class PygmentsBridge(object):
else:
return True
def highlight_block(self, source, lang, linenos=False):
def highlight_block(self, source, lang, linenos=False, warn=None):
if isinstance(source, str):
source = source.decode()
if not pygments:
@ -197,8 +198,16 @@ class PygmentsBridge(object):
if lang in lexers:
lexer = lexers[lang]
else:
lexer = lexers[lang] = get_lexer_by_name(lang)
lexer.add_filter('raiseonerror')
try:
lexer = lexers[lang] = get_lexer_by_name(lang)
except ClassNotFound:
if warn:
warn('Pygments lexer name %s is not known' % lang)
return self.unhighlighted(source)
else:
raise
else:
lexer.add_filter('raiseonerror')
try:
if self.dest == 'html':
return highlight(source, lexer, self.fmter[bool(linenos)])