Skip to content

Commit 21428bb

Browse files
committed
Update changelog, help and version info.
Fix failure to initialize BUTTON_SPLITINFO structure properly.
1 parent c362f08 commit 21428bb

4 files changed

Lines changed: 117 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Search++: An enhanced search plugin for Notepad++
22

3+
## Version 0.5.4 -- April 18th, 2026
4+
5+
* Fix bookmarks and Show command not working with ICU search engine.
6+
* Fix unwanted control character inserted when focus is in Find or Replace box and a keyboard shortcut is used to activate a Tools menu command that opens a dialog.
7+
* Use a custom font for button symbols.
8+
39
## Version 0.5.3 -- April 11th, 2026
410

511
* Avoid a crash when searching **in Marked Text in Open Documents** or **in Marked Text in Documents in this View** and a document has no marked text.

help.htm

Lines changed: 110 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@
122122

123123
.nowrap {white-space: nowrap;}
124124

125+
.symbol {width: 1em;}
126+
125127
</style>
126128
<script>
127129
function doPageLoad() {
@@ -340,10 +342,30 @@ <h3 id="commands-actions">Search actions</h3>
340342
<tr><th>Replace</th><td><p>first finds a match (unless a match has just been found), then on subsequent clicks replaces the match with the text or expression in the Replace box. After replacing, the command can either leave the replacement highlighted and visible, or find and highlight the next match. Which of these happens when you click the <strong>Replace</strong> button (or type <strong>Alt+R</strong>) is determined by the <strong>Jump to next match after Replace</strong> toggle on the <a href="#search-tools">Tools</a> menu. You can also tell by looking at the button; the word <strong>Replace</strong> will be followed by one of these indicators:</p>
341343

342344
<table>
343-
<tr><th>🡪</th><td>replace then jump to a new match forward</td></tr>
344-
<tr><th>🡨</th><td>replace then jump to a new match backward</td></tr>
345-
<tr><th>🡪❚</th><td>replace and highlight replacement; next click finds a new match forward</td></tr>
346-
<tr><th>❚🡨</th><td>replace and highlight replacement; next click finds a new match backward</td></tr>
345+
<tr><th class=symbol>
346+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
347+
<path fill="currentColor"
348+
d="M20 545v-90h804l-263 -263h121l308 308l-308 308h-121l263 -263h-804z" />
349+
</svg>
350+
</th><td>replace then jump to a new match forward</td></tr>
351+
<tr><th>
352+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
353+
<path fill="currentColor"
354+
d="M980 545h-804l263 263h-121l-308 -308l308 -308h121l-263 263h804v90z" />
355+
</svg>
356+
</th><td>replace then jump to a new match backward</td></tr>
357+
<tr><th>
358+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
359+
<path fill="currentColor"
360+
d="M20 545v-90h549l-263 -263h121l307 308l-307 308h-121l263 -263h-549zM890 180h90v640h-90v-640zM735 180h90v640h-90v-320v-320z" />
361+
</svg>
362+
</th><td>replace and highlight replacement; next click finds a new match forward</td></tr>
363+
<tr><th>
364+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
365+
<path fill="currentColor"
366+
d="M265 180v640h-90v-640h90zM110 180v640h-90v-640h90zM980 545h-549l263 263h-121l-307 -308l307 -308h121l-263 263h549v90z" />
367+
</svg>
368+
</th><td>replace and highlight replacement; next click finds a new match backward</td></tr>
347369
</table>
348370

349371
<p>The drop-down menu for the <strong>Replace</strong> button offers the available commands with the same jump behavior as the direct click command on the button; a submenu at the bottom allows you to select the same commands with the opposite jump behavior. Click-selecting a command from that submenu will set it as the direct click command and toggle the <strong>Jump to next match after Replace</strong> setting.</p></td></tr>
@@ -376,31 +398,79 @@ <h3 id="commands-extent">Search extents</h3>
376398

377399
<table>
378400

379-
<tr><th class="group" colspan=2>Search extents for stepwise search actions</th></tr>
380-
381-
<tr><td>forward</td><td>is the default for stepwise search actions (<strong>Find</strong> and <strong>Replace</strong>). It means moving from the current position or selection to the right and downward through the document. When a forward command can find nothing (or nothing more), a message at the bottom of the search dialog will indicate that. Clicking the same button again will “wrap around” to the beginning of the search scope (unless you already started from the beginning).</td></tr>
382-
383-
<tr><th>Backward</th><td>is available for stepwise search actions only when searching for <strong>Plain</strong> text. It means moving from the current position or selection to the left and upward through the document. When a Backward command can find nothing (or nothing more), a message at the bottom of the search dialog will indicate that. Clicking the same button again will “wrap around” to the end of the search scope (unless you already started from the end).</td></tr>
401+
<tr><th class="group" colspan=3>Search extents for stepwise search actions</th></tr>
402+
<tr><td colspan=3>The symbols in the second column are used on command buttons to indicate the current click action.</td></tr>
403+
404+
<tr><td>forward</td><th class=symbol>
405+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
406+
<path fill="currentColor"
407+
d="M20 545v-90h804l-263 -263h121l308 308l-308 308h-121l263 -263h-804z" />
408+
</svg>
409+
<br>
410+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
411+
<path fill="currentColor"
412+
d="M20 545v-90h549l-263 -263h121l307 308l-307 308h-121l263 -263h-549zM890 180h90v640h-90v-640zM735 180h90v640h-90v-320v-320z" />
413+
</svg>
414+
</th><td>is the default for stepwise search actions (<strong>Find</strong> and <strong>Replace</strong>). It means moving from the current position or selection to the right and downward through the document. When a forward command can find nothing (or nothing more), a message at the bottom of the search dialog will indicate that. Clicking the same button again will “wrap around” to the beginning of the search scope (unless you already started from the beginning).</td></tr>
415+
416+
<tr><th>Backward</th><th class=symbol>
417+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
418+
<path fill="currentColor"
419+
d="M980 545h-804l263 263h-121l-308 -308l308 -308h121l-263 263h804v90z" />
420+
</svg>
421+
<br>
422+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
423+
<path fill="currentColor"
424+
d="M265 180v640h-90v-640h90zM110 180v640h-90v-640h90zM980 545h-549l263 263h-121l-307 -308l307 -308h121l-263 263h549v90z" />
425+
</svg>
426+
</th>
427+
<td>is available for stepwise search actions only when searching for <strong>Plain</strong> text. It means moving from the current position or selection to the left and upward through the document. When a Backward command can find nothing (or nothing more), a message at the bottom of the search dialog will indicate that. Clicking the same button again will “wrap around” to the end of the search scope (unless you already started from the end).</td></tr>
384428

385429
</table>
386430

387431
<table>
388432

389-
<tr><th class="group" colspan=2>Search extents for multiple search actions</th></tr>
390-
391-
<tr><td>throughout the active document</td><td>is the default extension for command actions that search for multiple occurrences at one time. The entire <a href="#commands-scopes">scope</a> (the selection, marked text or the whole document) is searched. This extension is implied unless one of the other extensions is part of the command name.</td></tr>
392-
393-
<tr><th>Before</th><td><p>applies the command action only to matches that occur to the left and upward in the active document relative to the current position or selection. The action is not applied to matches which overlap the current position or selection.</p>
433+
<tr><th class="group" colspan=3>Search extents for multiple search actions</th></tr>
434+
<tr><td colspan=3>The symbols in the second column are used on command buttons to indicate the current click action.</td></tr>
435+
436+
<tr><td>throughout the active document</td><th class=symbol>
437+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 726 1000">
438+
<path fill="currentColor"
439+
d="M358 990l-308 -308v-121l263 263v-648l-263 263v-121l308 -308l308 308v121l-263 -263v648l263 -263v121z" />
440+
</svg>
441+
</th><td>is the default extension for command actions that search for multiple occurrences at one time. The entire <a href="#commands-scopes">scope</a> (the selection, marked text or the whole document) is searched. This extension is implied unless one of the other extensions is part of the command name.</td></tr>
442+
443+
<tr><th>Before</th><th class=symbol>
444+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 726 1000">
445+
<path fill="currentColor"
446+
d="M313 980v-804l-263 263v-121l308 -308l308 308v121l-263 -263v804h-90z" />
447+
</svg>
448+
</th><td><p>applies the command action only to matches that occur to the left and upward in the active document relative to the current position or selection. The action is not applied to matches which overlap the current position or selection.</p>
394449
<p class=note>If there is a single selection which is the result of an immediately preceding stepwise find, or the find step of a stepwise replace, <strong>Replace Before</strong> <em>includes</em> the found text. This lets you do a series of stepwise backward replaces and then complete them with a Replace Before.</p>
395450
</td></tr>
396451

397-
<tr><th>After</th><td><p>applies the command action only to matches that occur to the right and downward in the active document relative to the current position or selection. The action is not applied to matches which overlap the current position or selection.</p>
452+
<tr><th>After</th><th class=symbol>
453+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 726 1000">
454+
<path fill="currentColor"
455+
d="M403 20v804l263 -263v121l-308 308l-308 -308v-121l263 263v-804h90z" />
456+
</svg>
457+
</th><td><p>applies the command action only to matches that occur to the right and downward in the active document relative to the current position or selection. The action is not applied to matches which overlap the current position or selection.</p>
398458
<p class=note>If there is a single selection which is the result of an immediately preceding stepwise find, or the find step of a stepwise replace, <strong>Replace After</strong> <em>includes</em> the found text. This lets you do a series of stepwise replaces and then complete them with a Replace After.</p>
399459
</td></tr>
400460

401-
<tr><th>Open Documents</th><td>searches all documents that are open in any tab in Notepad++.</td></tr>
461+
<tr><th>Open Documents</th><th class=symbol>
462+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
463+
<path fill="currentColor"
464+
d="M545 110v780h320v-780h-320zM45 20h910v960h-910v-960zM135 110v780h320v-780h-320z" />
465+
</svg>
466+
</th><td>searches all documents that are open in any tab in Notepad++.</td></tr>
402467

403-
<tr><th>Documents in this View</th><td>searches all documents that are open in any tab in the active view. Notepad++ has one or two views. If there is only one view open, <strong>Documents in this View</strong> is the same as <strong>Open Documents</strong>.</td></tr>
468+
<tr><th>Documents in this View</th><th class=symbol>
469+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
470+
<path fill="currentColor"
471+
d="M45 20h910v960h-910v-960zM135 110v780h365v-780h-365z" />
472+
</svg>
473+
</th><td>searches all documents that are open in any tab in the active view. Notepad++ has one or two views. If there is only one view open, <strong>Documents in this View</strong> is the same as <strong>Open Documents</strong>.</td></tr>
404474

405475
</table>
406476

@@ -410,19 +480,37 @@ <h3 id="commands-scopes">Search scopes</h3>
410480

411481
<table>
412482

413-
<tr><th colspan=2 class="group">Search scopes</th></tr>
483+
<tr><th colspan=3 class="group">Search scopes</th></tr>
484+
<tr><td colspan=3>The symbols in the second column are used on command buttons to indicate the current click action.</td></tr>
414485

415-
<tr><th>Selection</th><td><p>only selected text will be searched.</p>
486+
<tr><th>Selection</th><th class=symbol>
487+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
488+
<path fill="currentColor"
489+
d="M650 200c-92.4189 0 -170 81.6064 -170 150c0 101.441 130 194.611 130 300c0 75.8096 -61.8096 150 -170 150h-90c112.718 0 170 -72.1035 170 -150c0 -105.788 -130 -199.77 -130 -300c0 -66.9189 80.0166 -149.444 170 -150h90zM180 110v780h640v-780h-640zM90 20h820
490+
v960h-820v-960z" />
491+
</svg>
492+
</th><td><p>only selected text will be searched.</p>
416493
<p class=note>Because a <strong>Find</strong> command, or the preliminary find step in a replace command, selects the found text, subsequent commands won’t be confined to the originally-selected text, since it will no longer be selected. To avoid this, you can use <strong>Add Selection to Marked Text</strong> from the <a href="#search-tools">Tools</a> button menu before searching. Also see the <a href="#settings-selections">Settings</a> checkbox <strong>Convert selections to marked text when beginning a default stepwise search</strong> for an option to do this automatically.</p>
417494
<p class=note>For a regular expression search, each line in a rectangular selection and each selection in a multiple selection is searched independently; the search in any line or selection cannot “see” outside that selection. This affects the behavior of assertions (including word boundaries, lookaheads and lookbehinds, <strong>^</strong> and <strong>$</strong>).</p></td></tr>
418495

419-
<tr><th>Marked Text</th><td><p>only marked text will be searched.</p>
496+
<tr><th>Marked Text</th><th class=symbol>
497+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
498+
<path fill="currentColor"
499+
d="M180 110v780h640v-780h-640zM90 20h820v960h-820v-960zM270 200h90l140 266l140 -266h90v600h-90v-425.479l-140 271.479l-140 -271.479v425.479h-90v-600z" />
500+
</svg>
501+
</th><td><p>only marked text will be searched.</p>
420502
<p class=note>For a regular expression search, each run of marked text is searched independently; the search in any span of marked text cannot “see” outside that span. This affects the behavior of assertions (including word boundaries, lookaheads and lookbehinds, <strong>^</strong> and <strong>$</strong>).</p>
421503
</td></tr>
422504

423-
<tr><th>Whole Document</th><td>selections and marks are ignored; everything in the document (subject to any <em>extent</em> constraint) is searched.</td></tr>
505+
<tr><th>Whole Document</th><th class=symbol>
506+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1010 1000">
507+
<path fill="currentColor"
508+
d="M90 20h820v960h-820v-960zM180 110v780h640v-780h-640z" />
509+
</svg>
510+
</th><td>selections and marks are ignored; everything in the document (subject to any <em>extent</em> constraint) is searched.</td></tr>
424511

425-
<tr><td>default scope</td><td>attempts to infer what you probably want to search based on whether anything is already marked or selected. The default rules are these:
512+
<tr><td>default scope</td><th class=symbol>
513+
</th><td>attempts to infer what you probably want to search based on whether anything is already marked or selected. The default rules are these:
426514
<ol>
427515
<li>Scope is not inferred for commands <strong>in Open Documents</strong> or <strong>in Documents in this View</strong>. A command with one of these qualifiers can also indicate that it is <strong>in Marked Text</strong>; otherwise it is <strong>in Whole Document</strong>.
428516
<li>If there is any marked text in the active document, only marked text is searched, except for the default <strong>Mark</strong> command; an unqualified <strong>Mark</strong> command adds to the marked text instead of searching within it.

src/SearchDialog.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,7 @@ void decorateSplitButton(const NMCUSTOMDRAW& cd) {
10191019
}
10201020

10211021
BUTTON_SPLITINFO bsi;
1022+
bsi.mask = BCSIF_SIZE;
10221023
Button_GetSplitInfo(cd.hdr.hwndFrom, &bsi);
10231024
RECT r = cd.rc;
10241025
r.right -= bsi.size.cx;

src/resource.rc

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)