# HG changeset patch # User Franz Glasner # Date 1778067312 -7200 # Node ID d84f1fd10e64931224f3f45a13c77f2171d47a92 # Parent 9bfd87544902fbd8b867f6635f1f36e84937a590 Allow to customize the symbol for a remark diff -r 9bfd87544902 -r d84f1fd10e64 pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Wed May 06 10:05:57 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Wed May 06 13:35:12 2026 +0200 @@ -111,6 +111,7 @@ DEFAULT_END_PREFIX = "END OF " SYMBOL_REMARK = "▷" # U+25B7: Unicode 1.0 (Geometric Shapes) # SYMBOL_REMARK = "▻" # U+25BB: Unicode 1.0 (Geometric Shapes) + # SYMBOL_REMARK = "⍝" # U+235D: Unicode 1.1 (Misc. Technical, APL) SYMBOL_BLOCK = "◆" # U+25C6: Unicode 1.0 (Geometric Shapes) # SYMBOL_BLOCK = "┃" # U+2503: Unicode 1.0 (Bow Drawing) # SYMBOL_BLOCK = "●" # U+25CF: Unicode 1.0 (Geometric Shapes) @@ -202,6 +203,9 @@ def op_gets(lexer, match, ctx=None): yield match.start(), Operator, lexer.symbol_gets + def op_remark(lexer, match, ctx=None): + yield match.start(), Comment.Single, lexer.symbol_remark + def op_symbol(toktype): def _op_symbol(lexer, match, ctx=None): @@ -332,7 +336,7 @@ ], "remark": [ (r"(?i)\\(remark|rem)\b(.*)$", - bygroups(op_symbol(Comment.Single), Comment.Single)), + bygroups(op_remark, Comment.Single)), ], "entity-name": [ # may be multiline (r"[^\\}]+", Name.Entity), @@ -514,6 +518,9 @@ self.symbol_gets = options.get("gets", None) if self.symbol_gets is None: self.symbol_gets = self.SYMBOLS["<-"] # Default: "⟵" # U+27F5 + self.symbol_remark = options.get("remark", None) + if self.symbol_remark is None: + self.symbol_remark = self.SYMBOLS["REM"] # Default: "▷" # U+25B7 LexBase.__init__(self, **options) diff -r 9bfd87544902 -r d84f1fd10e64 tests/test_algpseudo.py --- a/tests/test_algpseudo.py Wed May 06 10:05:57 2026 +0200 +++ b/tests/test_algpseudo.py Wed May 06 13:35:12 2026 +0200 @@ -341,6 +341,17 @@ \\Rem the remark 2 """, self.lexer)) + def test_remark_custom(self): + # With the APL comment symbol + lexer = pygments.lexers.load_lexer_from_file( + ALGLEXERFILENAME, ALGLEXERCLASS, remark=u"⍝") + self.assertTokenStreamEqualComplete( + [("Comment.Single", "⍝"), # U+235D ⍝ APL FUNC. SYMBOL UP SHOE JOT + ("Comment.Single", " another remark"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\REMARK another remark\n", lexer)) + def test_remark_in_text(self): self.assertTokenStreamEqualComplete( [("Text", "the text "),