# HG changeset patch # User Franz Glasner # Date 1777533635 -7200 # Node ID 27e12387154d519d1353a33de8c1bcd4159a965d # Parent 711f8d19e27a73cde4a7f3efa0f1c217eb08b85c FIX: Handle escape character more thoroughly: also explicitely handle "\\" diff -r 711f8d19e27a -r 27e12387154d pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Wed Apr 29 12:43:28 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Thu Apr 30 09:20:35 2026 +0200 @@ -197,12 +197,14 @@ "entity-name": [ # may be multiline (r"[^\\}]+", Name.Entity), (r"\\\}", LexBase.op_fixed(Name.Entity, "}")), + (r"\\\\", LexBase.op_fixed(Name.Entity, "\\")), (r"\\", LexBase.op_fixed(Name.Entity, "\\")), (r"\}", LexBase.op_ignore, "#pop"), ], "entity-name-end": [ # may be multiline -- suppressed if no_end (r"[^\\}]+", op_opt_ignore(Name.Entity)), (r"\\\}", op_opt_ignore_or_fixed(Name.Entity, "}")), + (r"\\\\", op_opt_ignore_or_fixed(Name.Entity, "\\")), (r"\\", op_opt_ignore_or_fixed(Name.Entity, "\\")), (r"\}", LexBase.op_ignore, "#pop"), ], @@ -220,6 +222,8 @@ (r"\}", LexBase.op_ignore, "#pop"), (r"\n", Whitespace), include("expr-in-braces"), + (r"\\\\", LexBase.op_fixed(Text, "\\")), + (r"\\", LexBase.op_fixed(Text, "\\")), (r"\s+", Text), ], "expr-in-braces": [ diff -r 711f8d19e27a -r 27e12387154d tests/test_algpseudo.py --- a/tests/test_algpseudo.py Wed Apr 29 12:43:28 2026 +0200 +++ b/tests/test_algpseudo.py Thu Apr 30 09:20:35 2026 +0200 @@ -362,6 +362,23 @@ ], pygments.lex(r"\block{\text{a b c}}", self.lexer)) + def test_block_with_escaped_text(self): + self.assertTokenStreamEqualComplete( + [("Text", "◆"), + ("Text.Whitespace", " "), + ("Text", "\\"), + ("Name.Entity", "text"), + ("Punctuation", "{"), + ("Name.Entity", "a"), + ("Text", " "), + ("Name.Entity", "b"), + ("Text", " "), + ("Name.Entity", "c"), + ("Punctuation", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex(r"\block{\\text{a b c\}}", self.lexer)) + def test_block(self): self.assertTokenStreamEqualComplete( [("Text", "◆"),