From 2105b120655e6c694cc78ba8caa1d56ab71877d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pit-Claudel?= Date: Fri, 27 Aug 2021 03:02:19 -0400 Subject: [PATCH] pygments: Strip error tokens from output of provers other than Coq --- alectryon/pygments.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/alectryon/pygments.py b/alectryon/pygments.py index f8689379..8beff5f3 100644 --- a/alectryon/pygments.py +++ b/alectryon/pygments.py @@ -30,7 +30,7 @@ import pygments import pygments.styles import pygments.formatters -from pygments.token import Error, STANDARD_TYPES, Name, Operator +from pygments.token import Error, STANDARD_TYPES, Name, Operator, Text from pygments.filters import Filter, TokenMergeFilter, NameHighlightFilter from pygments.formatter import Formatter from pygments.lexers import get_lexer_by_name # pylint: disable=no-name-in-module @@ -58,6 +58,7 @@ def get_lexer(lang): lexer.add_filter(WarnOnErrorTokenFilter()) else: lexer = get_lexer_by_name(lang, ensurenl=False) + lexer.add_filter(StripErrorsTokenFilter()) lexer.add_filter(TokenMergeFilter()) return lexer @@ -236,6 +237,15 @@ def filter(self, _lexer, stream): warnings.warn(MSG.format(val, indent(context, ' ' * 8))) yield typ, val +class StripErrorsTokenFilter(Filter): + """Change ``Error`` tokens to ``Text`` ones.""" + + def filter(self, _lexer, stream): + for typ, val in stream: + if typ is Error: + typ = Text + yield typ, val + def replace_builtin_coq_lexer(): """Monkey-patch pygments to replace the built-in Coq Lexer.