History log of /dokuwiki/ (Results 176 – 200 of 10912)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
10fb3d6520-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

prevent inline formatting from matching across paragraph boundaries

The Lexer compiles all patterns with the `s` (DOTALL) flag via
ParallelRegex::getPerlMatchingFlags(), which makes `.` match newlin

prevent inline formatting from matching across paragraph boundaries

The Lexer compiles all patterns with the `s` (DOTALL) flag via
ParallelRegex::getPerlMatchingFlags(), which makes `.` match newlines.
Inline formatting modes use lookaheads like `\*\*(?=.*\*\*)` to verify
a closing delimiter exists, so with DOTALL a lone `**` happily matched
its "closer" many paragraphs later, swallowing blank lines into a
single <strong> run.

Add CONTENT_UNTIL_PARA on AbstractMode — a regex snippet matching any
character unless it would start a paragraph break (blank line, possibly
with horizontal whitespace). Update all inline formatting entry patterns
(Strong, Emphasis, Underline, Monospace, Subscript, Superscript,
Deleted) to use it in their closing-delimiter lookaheads.

Emphasis also gets a real closing-`//` check; its previous lookahead
just verified "content exists with a non-colon char" without requiring
the closing delimiter at all.

Single newlines inside a delimiter pair still match (multi-line
formatting); only blank lines end it.

BREAKING: This means you no longer can mark multiple paragraphs as bold
or strike them out. On the other hand it prevents accidentally breaking
the page layout by missing a closing delimiter (as reported many many
times over the years) eg. #1025 #3588 #1056

show more ...

17c6179b20-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

add $conf['syntax'] setting and conditional mode loading in ModeRegistry

Introduce a new 'syntax' configuration setting (dokuwiki, markdown, dw+md, md+dw)
that controls which parser modes are loaded

add $conf['syntax'] setting and conditional mode loading in ModeRegistry

Introduce a new 'syntax' configuration setting (dokuwiki, markdown, dw+md, md+dw)
that controls which parser modes are loaded. Built-in modes are split into
always-loaded (no Markdown equivalent), DW-only, and MD-only groups.
Refactor getModes() into focused sub-methods for each group.

No Gfm mode classes exist yet, so only 'dokuwiki' is functional.
The change is a strict no-op for existing behavior.

show more ...

cba0888619-Apr-2026 Andreas Gohr <andi@splitbrain.org>

fix: avoid picker close/reopen race on toggle button click

When focus was inside the picker and the toolbar toggle button was
clicked, focusout would close the picker before the click handler
toggle

fix: avoid picker close/reopen race on toggle button click

When focus was inside the picker and the toolbar toggle button was
clicked, focusout would close the picker before the click handler
toggled it, causing an immediate reopen. Skip the focusout-triggered
close when focus moves to a picker toggle button.

show more ...

0a5c6ce419-Apr-2026 Andreas Gohr <andi@splitbrain.org>

subscriptions: include diff link in plain-text list mails too

Fixes the docblock of lastRevBefore() and extends the diff link added to
the HTML list mail to the plain-text variant as well, so both f

subscriptions: include diff link in plain-text list mails too

Fixes the docblock of lastRevBefore() and extends the diff link added to
the HTML list mail to the plain-text variant as well, so both formats
stay in sync.

show more ...

8b6706eb19-Apr-2026 Vyacheslav <bryanskmap@ya.ru>

Translation update (ru)

f0f42d3b18-Apr-2026 Marek Adamski <fevbew@wp.pl>

Translation update (pl)

4a909b5418-Apr-2026 Eduardo Mozart de Oliveira <eduardomozart182@gmail.com>

Translation update (pt-br)

90c2f6e318-Apr-2026 Andreas Gohr <andi@splitbrain.org>

Clean up stale realip references after client_ip_header rename

Update docblocks in Ip.php and common.php, fix old tests to use
the new config key, remove outdated translations, fix method casing
in

Clean up stale realip references after client_ip_header rename

Update docblocks in Ip.php and common.php, fix old tests to use
the new config key, remove outdated translations, fix method casing
in test, and add example to English config description.

show more ...

59bc523518-Apr-2026 Andreas Gohr <andi@splitbrain.org>

fix code copy button copying its own text, closes #4617

Hide the button before reading innerText so the button label
is not included in the copied text.

04045fea18-Apr-2026 Andreas Gohr <andi@splitbrain.org>

remove unused rewriteBlocks property from Handler

This flag was added in b7c441b9 (2005) for planned wiki syntax
converters but was never set to false anywhere. Remove the dead
conditional and alway

remove unused rewriteBlocks property from Handler

This flag was added in b7c441b9 (2005) for planned wiki syntax
converters but was never set to false anywhere. Remove the dead
conditional and always run Block processing.

show more ...

3ea3771b18-Apr-2026 Andreas Gohr <andi@splitbrain.org>

supress code sniffer warning on deprecation wrapper

Previously the whole file was excluded. We can now be more precise.

504c13e818-Apr-2026 Andreas Gohr <andi@splitbrain.org>

migrate parser tests to modern namespaced classes

Move old-style parser tests from _test/tests/inc/parser/ to namespaced
test classes under _test/tests/Parsing/ParserMode/ and
_test/tests/Parsing/Le

migrate parser tests to modern namespaced classes

Move old-style parser tests from _test/tests/inc/parser/ to namespaced
test classes under _test/tests/Parsing/ParserMode/ and
_test/tests/Parsing/Lexer/.

- Add ParserTestBase with assertCalls() helper for comparing handler
call sequences with byte index stripping
- Split lexer.test.php into ParallelRegexTest, StateStackTest, and
LexerTest with a RecordingHandler that extends Handler
- Merge handler_parse_highlight_options tests into CodeTest
- Add new tests for previously untested modes: Nocache, Notoc, Rss,
and all individual formatting modes (Strong, Emphasis, etc.)
- Modernize test code: [] syntax, lowercase null, correct assertEquals
argument order, replace deprecated withConsecutive and string callables
- Renderer tests remain in old location (renderers not yet migrated)

show more ...

259e91d918-Apr-2026 Andreas Gohr <andi@splitbrain.org>

clean up Acronym and Preformatted

- remove stale comment, use closure for array_map, simplify compare
with spaceship operator in Acronym
- clarify misleading comment in Preformatted

71096e4618-Apr-2026 Andreas Gohr <andi@splitbrain.org>

move handler methods into ParserMode classes and rename Handler

Each ParserMode class now implements handle() from ModeInterface,
containing the token handling logic that previously lived as individ

move handler methods into ParserMode classes and rename Handler

Each ParserMode class now implements handle() from ModeInterface,
containing the token handling logic that previously lived as individual
methods on Doku_Handler.

The Handler class (formerly Doku_Handler) is the single dispatch point:
Lexer passes tokens to Handler::handleToken() which routes to mode
objects, plugins, or returns false. The Lexer only tokenizes and
resolves 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

show more ...


_test/rector.php
_test/tests/Parsing/HandlerTest.php
_test/tests/Parsing/ModeRegistryTest.php
_test/tests/inc/parser/handler_parse_highlight_options.test.php
_test/tests/inc/parser/lexer.test.php
_test/tests/inc/parser/parser.inc.php
_test/tests/inc/parser/parser_quotes.test.php
inc/Cache/CacheParser.php
inc/Extension/SyntaxPlugin.php
inc/Parsing/Handler.php
inc/Parsing/Handler/CallWriter.php
inc/Parsing/Lexer/Lexer.php
inc/Parsing/Parser.php
inc/Parsing/ParserMode/AbstractFormatting.php
inc/Parsing/ParserMode/Acronym.php
inc/Parsing/ParserMode/Base.php
inc/Parsing/ParserMode/Camelcaselink.php
inc/Parsing/ParserMode/Code.php
inc/Parsing/ParserMode/Deleted.php
inc/Parsing/ParserMode/Emaillink.php
inc/Parsing/ParserMode/Emphasis.php
inc/Parsing/ParserMode/Entity.php
inc/Parsing/ParserMode/Eol.php
inc/Parsing/ParserMode/Externallink.php
inc/Parsing/ParserMode/File.php
inc/Parsing/ParserMode/Filelink.php
inc/Parsing/ParserMode/Footnote.php
inc/Parsing/ParserMode/Header.php
inc/Parsing/ParserMode/Hr.php
inc/Parsing/ParserMode/Internallink.php
inc/Parsing/ParserMode/Linebreak.php
inc/Parsing/ParserMode/Listblock.php
inc/Parsing/ParserMode/Media.php
inc/Parsing/ParserMode/ModeInterface.php
inc/Parsing/ParserMode/Monospace.php
inc/Parsing/ParserMode/Multiplyentity.php
inc/Parsing/ParserMode/Nocache.php
inc/Parsing/ParserMode/Notoc.php
inc/Parsing/ParserMode/Preformatted.php
inc/Parsing/ParserMode/Quote.php
inc/Parsing/ParserMode/Quotes.php
inc/Parsing/ParserMode/Rss.php
inc/Parsing/ParserMode/Smiley.php
inc/Parsing/ParserMode/Strong.php
inc/Parsing/ParserMode/Subscript.php
inc/Parsing/ParserMode/Superscript.php
inc/Parsing/ParserMode/Table.php
inc/Parsing/ParserMode/Underline.php
inc/Parsing/ParserMode/Unformatted.php
inc/Parsing/ParserMode/Windowssharelink.php
inc/Parsing/ParserMode/Wordblock.php
inc/deprecated.php
inc/legacy.php
inc/load.php
inc/parserutils.php
7958e69816-Apr-2026 Andreas Gohr <andi@splitbrain.org>

decouple hardcoded mode names in Eol and Preformatted

Eol.php hardcoded ['listblock', 'table'] as modes to skip, and
Preformatted.php hardcoded [\*\-] as a negative lookahead for list
markers. Both

decouple hardcoded mode names in Eol and Preformatted

Eol.php hardcoded ['listblock', 'table'] as modes to skip, and
Preformatted.php hardcoded [\*\-] as a negative lookahead for list
markers. Both embed knowledge that belongs to the respective block
modes, not to Eol/Preformatted. Adding a new block mode that handles
its own EOL or uses different line start markers would require editing
these unrelated files — a hidden coupling.

Listblock and Table now register themselves on ModeRegistry during
preConnect(). Eol queries getBlockEolModes() and Preformatted queries
getLineStartMarkers() to build its lookahead dynamically. Each mode
owns its own data, and new block modes can participate without touching
unrelated files.

show more ...

dba14ea316-Apr-2026 Andreas Gohr <andi@splitbrain.org>

add unit tests for ModeRegistry

1f44347616-Apr-2026 Andreas Gohr <andi@splitbrain.org>

split Formatting into individual classes per formatting type

Introduce AbstractFormatting as a base class and seven concrete
classes (Strong, Emphasis, Underline, Monospace, Subscript,
Superscript,

split Formatting into individual classes per formatting type

Introduce AbstractFormatting as a base class and seven concrete
classes (Strong, Emphasis, Underline, Monospace, Subscript,
Superscript, Deleted) that each define their own patterns and
sort order. Delete the old Formatting class and update tests
to use the new classes directly. ModeRegistry now treats
formatting modes as regular built-in modes.

show more ...

c8dd1b9d16-Apr-2026 Andreas Gohr <andi@splitbrain.org>

introduce ModeRegistry to encapsulate parser mode categories

Replace the global $PARSER_MODES definition in inc/parser/parser.php
with a ModeRegistry singleton that initializes and manages the mode

introduce ModeRegistry to encapsulate parser mode categories

Replace the global $PARSER_MODES definition in inc/parser/parser.php
with a ModeRegistry singleton that initializes and manages the mode
categories. The global array is still populated for backward
compatibility with plugins that access it directly.

Mode constructors now use ModeRegistry::getModesForCategories()
instead of accessing the global directly. p_get_parsermodes() and
p_sort_modes() are moved to inc/deprecated.php as thin wrappers.

show more ...

8c5fa12616-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

deduplicate finalise() across rewriter subclasses

Move the identical finalise() logic into AbstractRewriter with an
abstract getClosingCall() method. Lists, Quote, Table, Preformatted
and Nest each

deduplicate finalise() across rewriter subclasses

Move the identical finalise() logic into AbstractRewriter with an
abstract getClosingCall() method. Lists, Quote, Table, Preformatted
and Nest each provide their closing call name instead of duplicating
the full method.

show more ...

57d6140316-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

remove unused Doku_Handler::fetch() method

Confirmed zero callers in core and plugin ecosystem.

8ab4ec3016-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

remove dead ParallelRegex::apply() method

Remove apply() which was never called from production code. Rewrite
the inherited SimpleTest tests to use split() instead, and add a
test for pre/post-match

remove dead ParallelRegex::apply() method

Remove apply() which was never called from production code. Rewrite
the inherited SimpleTest tests to use split() instead, and add a
test for pre/post-match splitting.

show more ...

f8026da116-Apr-2026 Andreas Gohr <gohr@cosmocode.de>

replace magic strings with class constants in Lexer

Introduce MODE_EXIT and MODE_SPECIAL_PREFIX constants to replace
the undocumented "__exit" and "_" string conventions used for
mode transitions.

e06577d215-Apr-2026 Andreas Gohr <andi@splitbrain.org>

better whitespace handling in log viewer

b929bbff15-Apr-2026 Vyacheslav <bryanskmap@ya.ru>

Translation update (ru)

fe6048cc14-Apr-2026 Alexander Lehmann <alexlehm@gmail.com>

remove realip option, add default in conf/dokuwiki.php

12345678910>>...437