<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in Listblock.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>47a02a102092be9e1e6f1ddaf158bdfffdb13d4f - Parsing: make parse syntax a per-parse value, drop ModeInterface</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#47a02a102092be9e1e6f1ddaf158bdfffdb13d4f</link>
        <description>Parsing: make parse syntax a per-parse value, drop ModeInterfaceThe active parse&apos;s syntax flavour is a per-parse question, not process-global state: within a single request a plugin can render bundledDokuWiki-syntax text inside an otherwise-Markdown page. Yet ModeRegistrywas a singleton that read $conf[&apos;syntax&apos;] and the $PARSER_MODES global,and every mode reached it through ModeRegistry::getInstance() &#8212; so theflavour lived in shared mutable state that two parses in one requestwould fight over.Make the registry a short-lived value instead:- ModeRegistry is constructed once per parse with an explicit $syntax  and injected into Parser, Handler and every mode. getSyntax() /  isDwPreferred() / isMdPreferred() consult $this-&gt;syntax; the  DOKU_UNITTEST-gated mode-list cache hack is gone (each registry is  fresh, nothing to invalidate).- p_get_instructions() is now the single place in the pipeline where  $conf[&apos;syntax&apos;] is read; from there the flavour travels as a  parameter. No code under inc/Parsing/ reads $conf[&apos;syntax&apos;] directly  anymore &#8212; the five syntax-reading modes (Preformatted, GfmHr,  GfmEscape, Externallink, GfmQuote) route through $this-&gt;registry.Keep the two concepts apart, as documented in the ModeRegistry andAbstractMode docblocks: the user&apos;s configured *preference* stays in$conf[&apos;syntax&apos;] for UI code (toolbar, settings), while the activeparse&apos;s syntax is a parameter carried by the registry.$PARSER_MODES is demoted to a deprecated, read-only mirror, publishedduring loadPluginModes() &#8212; third-party syntax plugins (columnlist,alphalist2, phpwikify, skipentity) and the bundled info plugin read theglobal directly, often from their constructors, so the taxonomy muststay visible there. No core code reads the mirror.Fold ModeInterface into AbstractMode while here: getSort()/handle() areabstract, the connect callbacks carry defaults, and the public $Lexer&quot;FIXME should be done by setter&quot; becomes setLexer()/getLexer() injectedby Parser::addMode() alongside the registry. Nested-content resolutionmoves to the allowedCategories()/filterAllowedModes() hooks, resolvedonce when the registry is attached.Tests build their own parser/registry through ParserTestBase::setSyntax()instead of mutating $conf and calling the removed ModeRegistry::reset().

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Thu, 04 Jun 2026 12:27:59 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>06ab3bb2c83692e8fee0c14ad0cc085ac2b07162 - Merge branch &apos;master&apos; into gfm</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#06ab3bb2c83692e8fee0c14ad0cc085ac2b07162</link>
        <description>Merge branch &apos;master&apos; into gfm* master: (176 commits)  Delete inc/Search/concept.txt  &#55358;&#56598; Rector and PHPCS fixes  &#55358;&#56598; Update deleted files  updated phpseclib dependency  use new ModeRegistry constant in info plugin  keep historic typo in value but not in constant  SearchIndex: fix comment position  &#55358;&#56598; Rector and PHPCS fixes  Translation update (tr)  Translation update (fr)  refactor(changelog): persist external-edit detection on first read  fix(infoutils): escape git log arguments for Windows compatibility  fix(preview): remove deprecated X-XSS-Protection header  fix: don&apos;t move the editor textarea into the toolbar  fix EXIF-rotated images shown cropped in previews, closes #4482  fix: avoid picker close/reopen race on toggle button click  subscriptions: include diff link in plain-text list mails too  Translation update (ru)  Translation update (pl)  Translation update (pt-br)  ...# Conflicts:#	inc/Parsing/ParserMode/Quote.php

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Tue, 12 May 2026 14:11:42 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>56c730b56ef2746acf3b1a27c69bada1239535bd - keep historic typo in value but not in constant</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#56c730b56ef2746acf3b1a27c69bada1239535bd</link>
        <description>keep historic typo in value but not in constantWe need to keep the historic typo in the value (&quot;substition&quot;), but thereis no reason to keep it in the constant.

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Wed, 06 May 2026 19:14:25 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>96d096f148d7def1456456590bd2910ff9115c0f - remove getLineStartMarkers registry &#8212; sort order already wins</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#96d096f148d7def1456456590bd2910ff9115c0f</link>
        <description>remove getLineStartMarkers registry &#8212; sort order already winsPreformatted&apos;s entry pattern carried a `(?![\*\-])` negativelookahead to defer to list modes on indented bullet lines.0cecf9d50 (2005, &quot;new parser added&quot;) introduced it hardcoded;7958e6980 (2026, &quot;decouple hardcoded mode names in Eol andPreformatted&quot;) refactored that hardcoded knowledge intoregister/getLineStartMarkers on ModeRegistry so each list modeowned its marker chars. Both preserved the behavior verbatim;neither documented why it was needed.Tracing the lexer, it isn&apos;t. ParallelRegex merges all entrypatterns into one PCRE expression; PCRE returns the leftmostmatch and breaks ties on expression order. Modes are added insort order via ModeRegistry::getModes(), so Listblock (sort 10)always precedes Preformatted (sort 20) and wins the tie on&quot;  - foo&quot; without any lookahead. The only test that caught adifference was testPreformattedList, which happened to registermodes in non-canonical order - that was a test bug.This patch drops the lookahead in Preformatted::connectTo, theregisterLineStartMarkers call in Listblock::preConnect, theregister/getLineStartMarkers methods on ModeRegistry, and thethree registry-API unit tests. testPreformattedList nowregisters Listblock before Preformatted.

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Mon, 27 Apr 2026 14:36:55 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>71096e46fcbfaeaa808667aba794e77fe2780169 - move handler methods into ParserMode classes and rename Handler</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#71096e46fcbfaeaa808667aba794e77fe2780169</link>
        <description>move handler methods into ParserMode classes and rename HandlerEach ParserMode class now implements handle() from ModeInterface,containing the token handling logic that previously lived as individualmethods on Doku_Handler.The Handler class (formerly Doku_Handler) is the single dispatch point:Lexer passes tokens to Handler::handleToken() which routes to modeobjects, plugins, or returns false. The Lexer only tokenizes andresolves mapHandler aliases.Key changes:- Add handle() to ModeInterface, implemented by all mode classes- Move Doku_Handler to dokuwiki\Parsing\Handler namespace- File extends Code (shared parsing via $type property)- Quotes uses mapHandler() + Handler::getModeName() for sub-modes- Media::parseMedia() replaces Doku_Handler_Parse_Media()- Code::parseHighlightOptions() replaces parse_highlight_options()- Per-parse state (footnote, doublequote) stays on Handler- Deprecated wrappers kept for base/header/internallink/media- Class alias and rector rules added for backward compatibility

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Sat, 18 Apr 2026 15:35:30 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>7958e69808290099292c0703b95d88708f6ebb96 - decouple hardcoded mode names in Eol and Preformatted</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#7958e69808290099292c0703b95d88708f6ebb96</link>
        <description>decouple hardcoded mode names in Eol and PreformattedEol.php hardcoded [&apos;listblock&apos;, &apos;table&apos;] as modes to skip, andPreformatted.php hardcoded [\*\-] as a negative lookahead for listmarkers. Both embed knowledge that belongs to the respective blockmodes, not to Eol/Preformatted. Adding a new block mode that handlesits own EOL or uses different line start markers would require editingthese unrelated files &#8212; a hidden coupling.Listblock and Table now register themselves on ModeRegistry duringpreConnect(). Eol queries getBlockEolModes() and Preformatted queriesgetLineStartMarkers() to build its lookahead dynamically. Each modeowns its own data, and new block modes can participate without touchingunrelated files.

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Thu, 16 Apr 2026 16:35:56 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>c8dd1b9d24a2f9905db764a0ac4646fb1e172af4 - introduce ModeRegistry to encapsulate parser mode categories</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#c8dd1b9d24a2f9905db764a0ac4646fb1e172af4</link>
        <description>introduce ModeRegistry to encapsulate parser mode categoriesReplace the global $PARSER_MODES definition in inc/parser/parser.phpwith a ModeRegistry singleton that initializes and manages the modecategories. The global array is still populated for backwardcompatibility with plugins that access it directly.Mode constructors now use ModeRegistry::getModesForCategories()instead of accessing the global directly. p_get_parsermodes() andp_sort_modes() are moved to inc/deprecated.php as thin wrappers.

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Thu, 16 Apr 2026 15:51:43 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>d4f83172d9533c4d84f450fe22ef630816b21d75 - code style: line breaks</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#d4f83172d9533c4d84f450fe22ef630816b21d75</link>
        <description>code style: line breaks

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Thu, 31 Aug 2023 20:44:40 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>be906b566b9bdfd92c032ee07c4fd077d820a8d1 - moved all parsing related namespaces to their own</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/ParserMode/Listblock.php#be906b566b9bdfd92c032ee07c4fd077d820a8d1</link>
        <description>moved all parsing related namespaces to their own

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Listblock.php</description>
        <pubDate>Fri, 04 May 2018 12:22:09 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
