<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Search++: A work in progress]]></title><description><![CDATA[<p dir="auto">Over time the search function in <a href="https://github.com/Coises/ColumnsPlusPlus/" rel="nofollow ugc">Columns++</a> has stretched well beyond its original mission, which was to provide the ability to search in a column selection. While I don’t expect to remove search from Columns++, I felt the extensions to search I developed there would work better for a more general audience if they were separated from the logic and user interface already established in Columns++.</p>
<p dir="auto">I also wanted to experiment with alternatives to some of the user interface limitations of both native Notepad++ and Columns++ search.</p>
<p dir="auto">Finally, after saying multiple times that I could not figure out how to incorporate ICU into a plugin, a few weeks ago I searched one more time, and the answer popped right up, in the “AI” section at the top of the Google search results. I don’t know if something has changed, or if I just failed to find it before. (The answer, for C++ programmers, is at <a href="https://github.com/unicode-org/icu/releases/" rel="nofollow ugc">https://github.com/unicode-org/icu/releases/</a> — it’s pretty much just that simple, download the appropriate archive(s), set up the compiler and linker to use the include and binary libraries, include the DLLs in the output directory.) So instead of relying on my home-grown processing of the raw Unicode data files, I can now go straight to ICU.</p>
<p dir="auto">My experience suggests that early feedback from curious potential users does a lot to avert getting locked into bad design decisions. So, in a first version that will probably provide ample hunting ground for digital entymologists… I present <strong>Search++</strong> as a work in progress:</p>
<p dir="auto"><a href="https://github.com/Coises/SearchPlusPlus/releases/" rel="nofollow ugc">https://github.com/Coises/SearchPlusPlus/releases/</a></p>
<p dir="auto">There is a <a href="https://coises.github.io/SearchPlusPlus/help.htm" rel="nofollow ugc">help file</a>.</p>
<p dir="auto"><strong>Features</strong></p>
<ul>
<li>
<p dir="auto">Search++ can be used as a docking dialog or an ordinary dialog. An advantage of the docking dialog is that search results and context will never wind up hidden behind the dialog. As an ordinary dialog, Search++ can be oriented either horizontally or vertically. By default, Search++ opens docked to the right side of Notepad++. You can change that with the first option in the <strong>Settings…</strong> dialog. (As with any docking window in Notepad++, you <em>can</em> float the docking dialog by dragging its title bar into the main Notepad++ area; however, Search++ as a regular dialog, chosen from the Settings dialog, is likely to be ”better behaved” than a floating dockable dialog.)</p>
</li>
<li>
<p dir="auto">The Find and Replace fields in Search++ are Scintilla controls. This allows for easy inclusion and visualization of multiple lines, line ending characters and special characters, as well as zooming the fields as desired. Find and replace text is shown using the same font as in the main Notepad++ editing window.</p>
</li>
<li>
<p dir="auto">Search++ can search within selections (including column selections and multiple selections) and within marked text. Commands are available to Find All (send a list of matches to a search results window), Select, Mark or Show (hide all lines, then unhide lines with matches and mark the matches).</p>
</li>
<li>
<p dir="auto">Regular expression searches in Search++ perform a fully Unicode-based search using a customized combination of Boost.Regex and ICU4C. In particular, this produces fewer “surprising” results with Unicode characters above 0xFFFF (including most emoji) and when searching in documents using a DBCS code page (which in Notepad++ can be Chinese, Japanese or Korean files that are in the system default encoding instead of in Unicode).</p>
</li>
<li>
<p dir="auto">Regular expression replacements in Search++ can include numeric calculations. The replacement syntax is similar to the one introduced in Columns++.</p>
</li>
</ul>
<p dir="auto"><strong>Quirks and features with poor discoverability</strong></p>
<ul>
<li>
<p dir="auto">The Find and Replace boxes and the Search++ Results window have right-click menus. There are various commands and shortcuts you won’t discover until you right-click. In particular, history for the Find and Replace windows is on their right-click menus.</p>
</li>
<li>
<p dir="auto">The main command buttons (Find, Count, etc.) have drop-down menus. You can select an alternate action from those menus. If you Shift+click an item on the menu, that becomes the new action for clicking the button.</p>
</li>
<li>
<p dir="auto">The <strong>Tools</strong> button at the top right of the Find box opens a menu of handy functions you might want to use in conjunction with search.</p>
</li>
<li>
<p dir="auto">If you assign a keyboard shortcut to <strong>Search…</strong> on the <strong>Search++</strong> plugin menu, you can use that to open a search dialog or to switch keyboard focus to it when it is already open. You can use Ctrl+O (think “Other”) to switch between the Find and Replace boxes or to switch from the Search Results list to the Find box. You can use Ctrl+N (think “Notepad++”) to switch keyboard focus back to the current Notepad++ editing window, and Ctrl+Shift+N to close the window you are in (either Search or Search Results) and switch focus back to Notepad++.</p>
</li>
<li>
<p dir="auto">You can navigate the Search++ Results window by keyboard using the Tab key to move to the next match (or Shift+Tab to move to the previous match). The Enter key will locate in the document window the current cursor position or selection in the Search++ Results window. Shift+Enter will locate <em>and</em> move keyboard focus to the document window. (So you can use Tab to navigate and Enter to see any particular match in context; then when you want to move to that match for editing, use Shift+Enter.)</p>
</li>
<li>
<p dir="auto">Formulas use the format <strong>(?=…)</strong> within the replacement box. You can use multiple formulas in one replacement and mix them with other, ordinary replacement strings. Within a formula, use <strong>$1</strong> for the first capture group, <strong>$2</strong> for the second, etc.; use <strong>$</strong> or <strong>$0</strong> for the entire match. The match or sub-match is interpreted as a number, and you can use ordinary arithmetic. For example, if the Find string matches a number, <strong>(?=$+100)</strong> would be replaced by that number plus 100.</p>
</li>
<li>
<p dir="auto">The <strong>Settings…</strong> dialog (available from the Search++ plugin menu or the Tools menu) has quite a few options you might want to review.</p>
</li>
<li>
<p dir="auto">The <strong>ICU</strong> button at the top is there mostly for testing. It uses the regular expression engine built into ICU, which has different syntax than the familiar Boost.Regex engine and does not integrate as well with Scintilla. Replace is not implemented for this search engine, and it only works on Unicode documents. It will probably be removed when Search++ reaches version 1.0, as it really isn’t very useful except as a check on the results from the main Regex engine (since I’ve meddled with the main Regex engine quite a lot, and I haven’t modified the ICU engine in any way).</p>
</li>
</ul>
<p dir="auto"><strong>Missing and Planned Features, and things I know don’t work quite right yet</strong></p>
<ul>
<li>
<p dir="auto"><strong>Search++</strong> does not yet support Find or Replace in all open documents or in files in a directory. I plan to add those capabilities, but I have not determined how I can/will do it.</p>
</li>
<li>
<p dir="auto">I plan to add a <strong>Save</strong> function that will let you save searches you might want to use again. Of course, once it is possible to save, it has to be possible to delete and rename and edit and organize… I haven’t designed a user interface for any of that yet.</p>
</li>
<li>
<p dir="auto">The Search++ Results window doesn’t show matches clearly in dark mode. I might be able to fix that without requiring user intervention; but depending on user experience, I suspect I might need to add the ability to customize colors and perhaps other details of all the Scintilla windows (Find/Replace and Search Results).</p>
</li>
<li>
<p dir="auto">If you edit a document that has results in the Search++ Results window, the results will no longer be “in sync” with the document and you won’t be able to navigate accurately to matches following the edit point. I don’t know if it is possible to overcome this, but I would like to do so if I find that I can.</p>
</li>
<li>
<p dir="auto">I’ve implemented a sort of “collision detection” when doing stepwise Find or Replace with the regular (non-docking) dialog or locating matches from the search results, so the document will be scrolled as needed to avoid the found text being obscured by the search window. I know it doesn’t work as well as it could yet. (It’s a surprisingly tricky problem to solve, and I couldn’t find any examples of it being solved already.)</p>
</li>
<li>
<p dir="auto">I hope to add more features to the regular expression search. The current version is almost identical to the search in Columns++, but presented in what is hopefully a more flexible and user-friendly interface. It should be more accurate for Unicode-derived properties since it uses ICU4C directly instead of working from the home-grown parse of Unicode tables used in Columns++. If I can work out a way, I hope to add Unicode word breaks and more Unicode properties.</p>
</li>
</ul>
]]></description><link>https://community.notepad-plus-plus.org/topic/27473/search-a-work-in-progress</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 08:51:48 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/27473.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Mar 2026 19:50:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Search++: A work in progress on Wed, 02 Sep 2026 08:56:57 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">I understand that focusing on N++ <strong>buffers</strong>, instead of on <strong>saved</strong> files on <strong>disk</strong>, is <strong>not</strong> really appropriate for your <strong>multithreaded</strong> approach !</p>
<p dir="auto">You said :</p>
<blockquote>
<p dir="auto">I am more inclined to raise a warning box telling the user that some of the files to be searched are currently open in Notepad++, and the search results (and modifications, when I get Replace in Files done) will apply to the stored files, not to the edits in progress in Notepad++.</p>
</blockquote>
<p dir="auto">So, given, your constraints, I <strong>totally</strong> agree ! That seems the more simple and obvious solution, with a <strong><code>Cancel</code></strong> button in case some concerned and opened files are <strong>dirty</strong>, in current N++ session</p>
<hr />
<p dir="auto">On the other hand, you said :</p>
<blockquote>
<p dir="auto">I wonder if any of this works properly when users have multiple instances of Notepad++ open and the files are open in a different instance than the one doing the search?</p>
</blockquote>
<p dir="auto">I personally mainly use N++ in a N++ <strong>mono</strong> instance so I can’t speak <strong>properly</strong> of that case. But I agree with you that managing <strong>several</strong> instances must be a <strong>challenge</strong> for the <strong><code>Find in Files</code></strong> or <strong><code>Replace in Files</code></strong> feature !</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106232</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106232</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Wed, 02 Sep 2026 08:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 01 Sep 2026 15:48:07 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/106222">said</a>:</p>
<p dir="auto">You can verify that, in the table, at that time, the Search++ and Multiplace plugins, unlike N++, did a Find in Files search on the saved files on disk and not on the N++ buffers possibly modified</p>
</blockquote>
<p dir="auto">Yes, that is a condition I have not yet addressed, and it is good that you call it to my attention.</p>
<p dir="auto">I am more inclined to raise a warning box telling the user that some of the files to be searched are currently open in Notepad++, and the search results (and modifications, when I get Replace in Files done) will apply to the stored files, not to the edits in progress in Notepad++.</p>
<p dir="auto">The way these searches work would make it difficult (probably not impossible, but difficult) to attempt to insert open document searches into the multi-threaded file-based search process. There are significant differences in how the two are implemented.</p>
<p dir="auto">Do you see much practical application for searching the files in a folder, some of which are modified and not saved in Notepad++, merging the search of the unsaved open documents with the search of the unopened files on disk? (For replace I can see the value of <em>skipping</em> open files, as you might have tested the change on a couple files before choosing to apply it to the remaining files. If you already saved the files, you’d be applying the change twice; if you hadn’t saved them, you’d have a bunch of “File has changed, do you want to reload?” prompts to dismiss.)</p>
<p dir="auto">I wonder if any of this works properly when users have multiple instances of Notepad++ open and the files are open in a different instance than the one doing the search?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106228</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106228</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Tue, 01 Sep 2026 15:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 01 Sep 2026 10:59:27 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a> and <strong>All</strong>,</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a>, I recommend that you read this <strong><code>GithHub</code></strong> thread about the <strong><code>multiReplace</code></strong> plugin, specifically my following <strong>two</strong> replies :</p>
<ul>
<li>
<p dir="auto"><a href="https://github.com/daddel80/notepadpp-multireplace/issues/133#issuecomment-5478750061" rel="nofollow ugc">https://github.com/daddel80/notepadpp-multireplace/issues/133#issuecomment-5478750061</a></p>
</li>
<li>
<p dir="auto"><a href="https://github.com/daddel80/notepadpp-multireplace/issues/133#issuecomment-5492407859" rel="nofollow ugc">https://github.com/daddel80/notepadpp-multireplace/issues/133#issuecomment-5492407859</a></p>
</li>
</ul>
<p dir="auto">In the <strong>first</strong> post, I asked <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a> if the <strong><code>Find in Files</code></strong> search could scan the N++ <strong>buffers</strong> rather that their equivalents on <strong>disk</strong> !</p>
<p dir="auto">You can verify that, in the table, at that time, the <strong><code>Search++</code></strong> and <strong><code>Multiplace</code></strong> plugins, unlike N++, did a <strong><code>Find in Files</code></strong> search on the saved files on <strong>disk</strong> and <strong>not</strong> on the N++ <strong>buffers</strong> possibly modified</p>
<p dir="auto">And, in the <strong>second</strong> post, I verified that the <strong>attached</strong> new build, provided by <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a>, do scan the N++ <strong>buffers</strong>, by <strong>default</strong> !</p>
<p dir="auto">Could you implement such behavior and add an <strong>option</strong> to search on N++ <strong>buffers</strong>, by default <em>OR</em> on saved files on <strong>disk</strong>, like within N++ <strong><code>v8.9.8</code></strong> and <strong><code>MultiReplace</code></strong> ?</p>
<p dir="auto">TIA for your <strong>time</strong> and <strong>work</strong> on this topic !</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106222</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106222</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Tue, 01 Sep 2026 10:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sun, 30 Aug 2026 11:30:21 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a> and <strong>All</strong>,</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: Coises">@<bdi>Coises</bdi></a>, you said :</p>
<blockquote>
<p dir="auto">So I’m wondering, if you happen to remember, whether you tested in the order you listed, or whether you happened to test Search++ first?</p>
</blockquote>
<p dir="auto">Well, since my previous tests were done in <strong><code>July 18, 2026</code></strong>, I don’t remenber exactly the way I used but I suppose that I <strong>first</strong> tested the native N++ search ! Thus, I decided to conduct a <strong>new</strong> series of tests. Of course, the results of the <strong>entire</strong> scan of my <strong><code>D:</code></strong> USB drive, are <strong>slightly</strong> different. Luckily, the number of matches and files containing the <strong><code>Fi</code></strong> string are <strong>identical</strong> between the <strong><code>Search++</code></strong> search and the <strong><code>Notepad++</code></strong> search</p>
<p dir="auto"><em>IMPORTANT</em> : I updated <strong><code>Search++</code></strong> to the <strong>last</strong> <strong><code>0.6.5</code></strong> version, <strong>before</strong> all these tests</p>
<p dir="auto">So, this time, I first use the <strong><code>Search++</code></strong> <em>Find in Files</em> dialog :</p>
<ul>
<li>
<p dir="auto">I stop and re-start my <strong><code>W11</code></strong> laptop</p>
</li>
<li>
<p dir="auto">I pluged my <em>USB</em> key</p>
</li>
<li>
<p dir="auto">I start N++</p>
</li>
<li>
<p dir="auto">I ran an <strong>entire</strong> scan of my <strong><code>D:</code></strong> <em>USB</em> key for the <strong><code>Fi</code></strong> string, using the <strong><code>Search++</code></strong> plugin</p>
</li>
</ul>
<p dir="auto">=&gt; I got <strong><code>27,081</code></strong> matches in <strong><code>841</code></strong> files of <strong><code>1,772</code></strong>, in <strong><code>2m 10s</code></strong></p>
<ul>
<li>
<p dir="auto">I close N++</p>
</li>
<li>
<p dir="auto">I unpluged my <em>USB</em> key</p>
</li>
<li>
<p dir="auto">I stop and re-start my <strong><code>W11</code></strong> laptop</p>
</li>
<li>
<p dir="auto">I re-pluged my <em>USB</em> key</p>
</li>
<li>
<p dir="auto">I start N++</p>
</li>
<li>
<p dir="auto">I ran an <strong>entire</strong> scan of my <strong><code>D:</code></strong> <em>USB</em> key for the <strong><code>Fi</code></strong> string, using the native <strong><code>Notepad++</code></strong> search</p>
</li>
</ul>
<p dir="auto">=&gt; I got <strong><code>27,081</code></strong> matches in <strong><code>841</code></strong> files of <strong><code>1,772</code></strong>, in <strong><code>1m 21s</code></strong></p>
<hr />
<p dir="auto">As you can see, no <strong>real</strong> difference between these tests and those of <strong><code>July 18</code></strong> ! On the other hand, this time, the results obtained with the <strong><code>MultiReplace</code></strong> plugin are <strong>completely</strong> different. After a <strong>complete</strong> re-start of my machine</p>
<ul>
<li>I ran an <strong>entire</strong> scan of my <strong><code>D:</code></strong> <em>USB</em> key for the <strong><code>Fi</code></strong> string, using the <strong><code>MultiReplace</code></strong> plugin</li>
</ul>
<p dir="auto">=&gt; I got <strong><code>18,767</code></strong> hits in <strong><code>726</code></strong> files in <strong><code>1m 05s</code></strong>. Most of non <strong>text</strong> files are <strong>not</strong> scanned at all ?!</p>
<p dir="auto">I don’t understand these <strong>huge</strong> differences ? I first suspected that I allowed this option in <em>MultiReplace</em> settings : <strong><code>File Search : Skip files larger than</code></strong> but this option is <strong>not</strong> set !</p>
<p dir="auto">Thus, right after this post, I’m going to post to <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a> for possible information !</p>
<p dir="auto">Remark that this <strong>present</strong> post is saved on a <strong>different</strong> USB drive to avoid future changes regarding the <strong>number</strong> of matches of the <strong><code>Fi</code></strong> string !</p>
<hr />
<p dir="auto">To end, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a>, you said :</p>
<blockquote>
<p dir="auto">In any case, after weeks of running in circles, I think I will soon give up the fight to optimize performance and see what else needs work.</p>
</blockquote>
<p dir="auto">I totally agree with this <strong>wise</strong> statement !!</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106202</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106202</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Sun, 30 Aug 2026 11:30:21 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Fri, 28 Aug 2026 03:46:00 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105921">said</a>:</p>
<p dir="auto">Now, I did a test, searching in all files of my D: USB key, with :</p>
<pre><code>The native N++ Find in Files dialog

The Search++ Search in Files dialog

The MultiReplace Find All in Files command
</code></pre>
<p dir="auto">To be sure to process fair tests, I unplung my USB key, re-start my laptop completely, replug my USB key and starts a new N++ session, before running these three Find in Files operations, in turn !</p>
<p dir="auto">I searched for the Fi string, with the Match case and the Regular expression options checked. I got :</p>
<pre><code>27,112 matches in 833 files of 1,761 searched for the N++ Search Results panel, in 1m 37s

27,112 matches in 833 files of 1,761 files for the Search++ Search++ Results, in 2m 21s

27,087 hits in 835 file(s) for the MultiReplace Search results panel, in 1m 36s
</code></pre>
</blockquote>
<p dir="auto">I have been struggling with how to optimize the multithreading of my search for over a month now. Among other things, I’ve found that most everything I thought I was measuring wasn’t what I was actually measuring.</p>
<p dir="auto">One surprise I only recently discovered was that even if I eject and unplug a thumb drive and then plug it in again. there is still a “first time today” cost in the time it takes to read it. Windows is persisting <em>something</em> and it is able to identify the same drive, even though it’s been unplugged. I don’t know the exact time, but Windows on my machine keeps it for more than an hour and less than 24 hours.</p>
<p dir="auto">Running a particular test the first time I plugged in a particular USB drive I have, it took 8 minutes and 26 seconds. After ejecting the drive, unplugging it, waiting a moment, plugging it back in and running <em>the exact same test</em>, it took 20 seconds.</p>
<p dir="auto">This drive appears to take whatever it is that Windows does once a day (?) exceptionally hard. Most drives don’t show anything so obvious. This is the only drive I have tested so far that uses FAT, so that could have something to do with it.</p>
<p dir="auto">I haven’t yet tested whether rebooting is enough to reset the “once a day” penalty, or if it persists in something that isn’t lost in a reboot. It may have something to do with antivirus, though I haven’t yet proven any such thing.</p>
<p dir="auto">So I’m wondering, if you happen to remember, whether you tested in the order you listed, or whether you happened to test Search++ <em>first</em>?</p>
<p dir="auto">In any case, after weeks of running in circles, I think I will soon give up the fight to optimize performance and see what else needs work.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106196</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106196</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Fri, 28 Aug 2026 03:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sun, 16 Aug 2026 05:55:42 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/Coises/SearchPlusPlus/releases/tag/v0.6.5" rel="nofollow ugc">Search++ version 0.6.5</a> is available:</p>
<ul>
<li>Update to ICU 78.3 and use static linking for ICU. This is expected to fix problems some testers have had running Search++ on <a href="https://github.com/Coises/SearchPlusPlus/issues/1" rel="nofollow ugc">older systems</a> or on <a href="https://community.notepad-plus-plus.org/topic/27623/search-w-w-regex-replace-failure/30?_=1786858245819">minimal</a> Windows installs (like Windows Sandbox). For most users there will be no functional difference between this version and version 0.6.4.</li>
</ul>
<p dir="auto">Note: There are five icu——.dll files in older versions of Search++ that are not used beginning with version 0.6.5; so it is best to delete the existing Search++ folder (or its contents) before copying, rather than copying the new folder over the old one.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106124</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106124</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Sun, 16 Aug 2026 05:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sat, 15 Aug 2026 05:25:08 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/Coises/SearchPlusPlus/releases/tag/v0.6.4" rel="nofollow ugc">Search++ version 0.6.4</a> is available. It is expected to fix the bug reported <a href="https://community.notepad-plus-plus.org/topic/27623">here</a>.</p>
<p dir="auto">Even though it seems most people never experience that bug, I still recommend upgrading at the next convenient time, so we will all be testing the same code. It’s always possible that I broke something else.</p>
<p dir="auto">I am still working on improving the multi-threading for find in files. I’m also trying to decide how best to mitigate a problem wherein Search++ fails to load when a particular Windows <a href="https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version" rel="nofollow ugc">redistributable library</a> has never been installed on the system. More updates should be coming before too much longer.</p>
<p dir="auto">All thoughts, suggestions, comments, criticisms, bug reports and raspberries are welcome, and thank you to everyone willing to give this jalopy a good work-out.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106108</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106108</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Sat, 15 Aug 2026 05:25:08 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Wed, 05 Aug 2026 17:38:09 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/m-andre-z-eckenrode" aria-label="Profile: M-Andre-Z-Eckenrode">@<bdi>M-Andre-Z-Eckenrode</bdi></a> <a href="/post/106017">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: Coises">@<bdi>Coises</bdi></a></p>
<p dir="auto">As you I recently reported an issue with Search++ in a new, separate topic, but I see that several others have reported various issues in this one (presumably, <em><strong>because</strong></em> it’s still a work in progress). I have a new issue to report, and thought maybe I should ask if you prefer that new issues get reported in their own topic (which is generally my default), or for users to just include them in this one. Do you care one way or the other?</p>
</blockquote>
<p dir="auto">Either way is OK with me. I suspect the moderators might prefer to keep discussion confined to this topic, though.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106018</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106018</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Wed, 05 Aug 2026 17:38:09 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Wed, 05 Aug 2026 17:41:26 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: Coises">@<bdi>Coises</bdi></a></p>
<p dir="auto">As you know, I recently reported an issue with Search++ in a new, separate topic, but I see that several others have reported various issues in this one (presumably, <em><strong>because</strong></em> it’s still a work in progress). I have a new issue to report, and thought maybe I should ask if you prefer that new issues get reported in their own topic (which is generally my default), or for users to just include them in this one. Do you care one way or the other?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/106017</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/106017</guid><dc:creator><![CDATA[M Andre Z Eckenrode]]></dc:creator><pubDate>Wed, 05 Aug 2026 17:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 28 Jul 2026 18:52:50 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: Coises">@<bdi>Coises</bdi></a> <a href="/post/105990">said</a>:</p>
<p dir="auto">I might be missing something. Do you find that it is not obvious enough in the document window itself when lines are hidden (the horizontal lines where the hidden lines are)?</p>
</blockquote>
<p dir="auto">Thanks for your hint; I see, the mistake is on my side! I use a different background color and my eyes are getting older ;-) Therefore I did not see the lines between the text:<br />
My configuration vs. Default theme:<br />
<img src="/assets/uploads/files/1785264398025-b4c2960d-2d83-4c60-a13b-064ce8ffdd81-image.jpeg" alt="b4c2960d-2d83-4c60-a13b-064ce8ffdd81-image.jpeg" class=" img-fluid img-markdown" />  / <img src="/assets/uploads/files/1785264414096-3749de5d-cf73-4ea2-ad28-54e459e8bf8d-image.jpeg" alt="3749de5d-cf73-4ea2-ad28-54e459e8bf8d-image.jpeg" class=" img-fluid img-markdown" /><br />
Now I know where to look.</p>
<blockquote>
<p dir="auto">Good point. I will fix that — not necessarily in the very next release, but I will fix it.</p>
</blockquote>
<p dir="auto">I know you have a lot of topics on your list that are much more urgent. For me it is a ‘nice to have’. Thanks for your help.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105992</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105992</guid><dc:creator><![CDATA[sevem47]]></dc:creator><pubDate>Tue, 28 Jul 2026 18:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 28 Jul 2026 15:48:55 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sevem47" aria-label="Profile: sevem47">@<bdi>sevem47</bdi></a> <a href="/post/105987">said</a>:</p>
<p dir="auto">First of all thanks to your great work with this plugin.</p>
</blockquote>
<p dir="auto">Thank you for trying it and giving feedback!</p>
<blockquote>
<ul>
<li>Using a docking dialog for different plugins they may share the same space in NPP. If Search++ ist not active, there is just an empty space that is visible for me. Other plugins have a graphical representation that, in addition to the balloon tip, show which plugin is active.</li>
</ul>
</blockquote>
<p dir="auto">Good point. I will fix that — not necessarily in the very next release, but I will fix it.</p>
<blockquote>
<ul>
<li>Using Search++ I learned about the possibility to show only certain lines in the edit window. Would it make sense to have a marker that identifies that only some lines of a document are displayed after applying Search++ commands.</li>
</ul>
</blockquote>
<p dir="auto">I might be missing something. Do you find that it is not obvious enough in the document window itself when lines are hidden (the horizontal lines where the hidden lines are)?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105990</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105990</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Tue, 28 Jul 2026 15:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 28 Jul 2026 12:22:43 GMT]]></title><description><![CDATA[<p dir="auto">First of all thanks to your great work with this plugin. Going through the help file to learn about all features of the plugin the following ideas came to my mind.</p>
<p dir="auto">They are about graphical topics that probably are just cosmetical questions.</p>
<ul>
<li>Using a docking dialog for different plugins they may share the same space in NPP. If Search++ ist not active, there is just an empty space that is visible for me. Other plugins have a graphical representation that, in addition to the balloon tip, show which plugin is active. Two images to show my point:<br />
<img src="/assets/uploads/files/1785240981408-c9dad97b-4215-4bdb-a019-66f7211d8a3b-image.jpeg" alt="c9dad97b-4215-4bdb-a019-66f7211d8a3b-image.jpeg" class=" img-fluid img-markdown" /> /  <img src="/assets/uploads/files/1785240999685-f8e9b08d-60cd-4612-ac91-c772fe222de8-image.jpeg" alt="f8e9b08d-60cd-4612-ac91-c772fe222de8-image.jpeg" class=" img-fluid img-markdown" /></li>
<li>Using Search++ I learned about the possibility to show only certain lines in the edit window. Would it make sense to have a marker that identifies that only some lines of a document are displayed after applying Search++ commands. Something like the following filter symbol to mark that not all lines are visible:<br />
<img src="/assets/uploads/files/1785241071497-e539a5c4-c588-4edf-ba34-56e65f253d63-image.jpeg" alt="e539a5c4-c588-4edf-ba34-56e65f253d63-image.jpeg" class=" img-fluid img-markdown" /><br />
(the image is copied from Total Commander’s function ‘Synchronize directories’)</li>
</ul>
<p dir="auto">Just some ideas that would help me in using Search++.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105987</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105987</guid><dc:creator><![CDATA[sevem47]]></dc:creator><pubDate>Tue, 28 Jul 2026 12:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Fri, 24 Jul 2026 13:36:09 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105972">said</a>:</p>
<p dir="auto">I’m actually really surprised by Search++'s performance compared to Notepad++, especially when the search involves a complex regular expression. ( 0:16.36 vs 2:08.20 ! )</p>
<p dir="auto">Please, note that the USB flash drive I used for my test is a fairly old one with a capacity of only 512 Mb, which may not be well-suited for multithreading and would explain the poor results with Search++</p>
<p dir="auto">In any case, I assume you’re now confident in Search++'s overall performance !</p>
</blockquote>
<p dir="auto">I don’t entirely trust my own results. Why did my USB search in Search++ for <code>the</code> take longer than the search for <code>a([^\r\n])[^\r\n]*b\1</code>? Either the test data is erroneous or spurious, or Search++ is screwing up access to the USB in some way that’s causing it to “choke” and lose performance (what I suspect happened in your test). I’m still trying to work out how to avoid that happening without hurting the performance when reads are fast.</p>
<p dir="auto">To the best of my knowledge, Notepad++ is entirely single-threaded. It’s only ever doing one thing at a time. An i9-9900K can run sixteen threads simultaneously. So for CPU-heavy workloads (complicated regex searches) with lots of files, it’s not at all surprising that a multithreaded approach could be almost eight times faster. Thirteen times faster running <code>a([^\r\n])[^\r\n]*b\1</code> against an SSD is pretty satisfying, though. :-) I’m probably getting additional gains from using memory-mapped I/O and running Boost::regex directly against the data the operating system maps into memory, while Notepad++ loads every file into a buffer, and from there into an off-screen Scintilla, before running the search through Scintilla’s API instead of directly with Boost::regex.</p>
<p dir="auto">It’s useful to have tests like yours. I won’t be able to test anywhere near all the situations that can occur. What happens when someone searches a OneDrive folder and not all the files are up-to-date? What happens when someone searches a drive that’s mounted over a VPN? What happens when the cat knocks the USB connector loose in the middle of a search? The worst case for all these is that the whole thing either crashes and takes Notepad++ down with it, or locks up and makes the user terminate Notepad++ with task manager — losing any unsaved work in progress. I don’t want to let that happen. I still have a lot to do to “harden” this against things that can go wrong.</p>
<p dir="auto">And that’s not even starting with Replace yet.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105973</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105973</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Fri, 24 Jul 2026 13:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Fri, 24 Jul 2026 12:16:19 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">Your tests are much more <strong>comprehensive</strong> than my simple test and yield some <strong>interesting</strong> results !</p>
<p dir="auto">In particular, the comparison between <strong><code>Notepad++</code></strong> and <strong><code>Search++</code></strong> for searches on a <strong>USB</strong> drive shows that <em>Search++</em> <strong>outperforms</strong> <em>Notepad++</em>, whether the search is <strong>complex</strong> or <strong>simple</strong> !</p>
<p dir="auto">Indeed, we have :</p>
<h5>Search++ 0.6.3.1 :</h5>
<pre><code class="language-diff">U:\Testing2           a([^\r\n])[^\r\n]*b\1  0:16.36  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
U:\Testing2 (repeat)  a([^\r\n])[^\r\n]*b\1  0:08.87  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1

U:\Testing2           the                    0:24.84  445,907 matches in 3,342 of 3,762 files (Regex): the
U:\Testing2 (repeat)  the                    0:01.03  445,907 matches in 3,342 of 3,762 files (Regex): the
</code></pre>
<p dir="auto">And :</p>
<h5>Notepad++ 8.9.7 :</h5>
<pre><code class="language-diff">U:\Testing2           a([^\r\n])[^\r\n]*b\1  2:08.20  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
U:\Testing2 (repeat)  a([^\r\n])[^\r\n]*b\1  1:54.96  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]

U:\Testing2           the                    0:31.62  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
U:\Testing2 (repeat)  the                    0:14.16  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
</code></pre>
<hr />
<p dir="auto">I’m actually <strong>really</strong> surprised by <strong><code>Search++</code></strong>'s performance compared to <strong><code>Notepad++</code></strong>, especially when the search involves a <strong>complex</strong> regular expression. ( <strong><code>0:16.36</code></strong> vs <strong><code>2:08.20</code></strong> ! )</p>
<p dir="auto">Please, note that the <strong>USB</strong> flash drive I used for my test is a fairly <strong>old</strong> one with a capacity of only <strong><code>512 Mb</code></strong>, which may <strong>not</strong> be well-suited for <strong>multithreading</strong> and would explain the <strong>poor</strong> results with <strong><code>Search++</code></strong></p>
<p dir="auto">In any case, I assume you’re now <strong>confident</strong> in <strong><code>Search++</code></strong>'s <strong>overall</strong> performance !</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105972</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105972</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Fri, 24 Jul 2026 12:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Thu, 23 Jul 2026 19:45:53 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105948">said</a>:</p>
<p dir="auto">Now, based on my test, have you conducted any similar tests of your own, and have you found that searching with Search++ also takes longer compared to the native search in N++ ?</p>
</blockquote>
<p dir="auto">I ran some tests this morning because I wanted to get a reference before I start testing  changes to the multithread scheduling in Search++ — so I can verify that what is <em>supposed</em> to be better actually is better.</p>
<ul>
<li>This is Windows 10 Pro, 64 bit, running on a 2019 desktop with a Core i9-9900K and 32 GB RAM.</li>
<li>D is an internal SSD. S is an internal HDD. U is a USB thumb drive. \\PEACOCK is another machine on the same local area network.</li>
<li>The content of the folder Testing2 on each drive is the same. It’s a mix of 3,762 files in 228 folders, 591 MB total. Somewhere around 5% are binary files (dll, exe, png, etc.).</li>
<li>For U, following your lead, I did a “repeat” running the same search immediately after the first; after that, I unplugged and reconnected the drive before proceeding to another test.</li>
<li>I couldn’t conveniently unplug the internal drives, but testing showed no significant variation in successive trials on D, S or PEACOCK.</li>
</ul>
<p dir="auto">Some of these results are surprising. (I thought the hard disk would be noticeably slower than the SSD, and I expected to see a repeat of your experience with the USB drive.) I suspect that some specialized knowledge I do not have, and perhaps a more controlled environment, is required to measure performance <em>meaningfully</em>, so all this should be taken as anecdotal.</p>
<p dir="auto">Search++ 0.6.3.1:</p>
<pre><code class="language-text">D:\Quick\Testing2     a([^\r\n])[^\r\n]*b\1  0:08.71  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
D:\Quick\Testing2     the                    0:01.44  445,907 matches in 3,342 of 3,762 files (Regex): the
S:\Testing2           a([^\r\n])[^\r\n]*b\1  0:08.91  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
S:\Testing2           the                    0:01.10  445,907 matches in 3,342 of 3,762 files (Regex): the
U:\Testing2           a([^\r\n])[^\r\n]*b\1  0:16.36  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
U:\Testing2 (repeat)  a([^\r\n])[^\r\n]*b\1  0:08.87  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
U:\Testing2           the                    0:24.84  445,907 matches in 3,342 of 3,762 files (Regex): the
U:\Testing2 (repeat)  the                    0:01.03  445,907 matches in 3,342 of 3,762 files (Regex): the
\\PEACOCK\Testing2    a([^\r\n])[^\r\n]*b\1  0:12.32  149,919 matches in 2,505 of 3,762 files (Regex): a([^\r\n])[^\r\n]*b\1
\\PEACOCK\Testing2    the                    0:07.07  445,907 matches in 3,342 of 3,762 files (Regex): the
</code></pre>
<p dir="auto">Notepad++ 8.9.7:</p>
<pre><code class="language-text">D:\Quick\Testing2     a([^\r\n])[^\r\n]*b\1  1:53:64  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
D:\Quick\Testing2     the                    0:14.14  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
S:\Testing2           a([^\r\n])[^\r\n]*b\1  1:53.99  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
S:\Testing2           the                    0:12.42  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
U:\Testing2           a([^\r\n])[^\r\n]*b\1  2:08.20  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
U:\Testing2 (repeat)  a([^\r\n])[^\r\n]*b\1  1:54.96  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
U:\Testing2           the                    0:31.62  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
U:\Testing2 (repeat)  the                    0:14.16  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
\\PEACOCK\Testing2    a([^\r\n])[^\r\n]*b\1  2:11.36  Search "a([^\r\n])[^\r\n]*b\1" (149919 hits in 2505 files of 3762 searched) [RegEx]
\\PEACOCK\Testing2    the                    0:29.46  Search "the" (445907 hits in 3342 files of 3762 searched) [RegEx]
</code></pre>
<p dir="auto">(The reason for using <code>[^\r\n]</code> instead of <code>.</code> is that Notepad++ and Search++ have slightly different definitions of <code>.</code> when “matches newline” is not in effect: like Columns++, Search++ excludes <em>only</em> the characters that cause a line break in Scintilla, new line and return; while Notepad++ also excludes four other control characters, FF, NEL, LS and PS. The <code>.</code> is noticeably faster, but it returns different results for Search++ and Notepad++, almost certainly due to the binary files in Testing2.)</p>
<p dir="auto">Edit: Added local area network tests.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105968</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105968</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Thu, 23 Jul 2026 19:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Thu, 23 Jul 2026 04:22:23 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/Coises/SearchPlusPlus/releases/tag/v0.6.3.1" rel="nofollow ugc">Search++ version 0.6.3.1</a> is available:</p>
<ul>
<li>
<p dir="auto">Fix a pair of errors that caused incorrect results when characters outside the basic multilingual plane were used in a regex replacement string and when a capture group included invalid UTF-8.</p>
</li>
<li>
<p dir="auto">Fix problematic behavior for <strong>Show file in explorer</strong> on the context menu for the file list in the Search in Files dialog when the file list is large. The action could become sluggish or fail to complete and interfere with other activity.</p>
</li>
<li>
<p dir="auto">Handle absolute file paths larger than MAX_PATH in Search in Files. (They still won’t open in Notepad++, but there was no reason Search in Files shouldn’t be able to parse them.)</p>
</li>
<li>
<p dir="auto">Avoid “configuration file for this plugin was edited” when running multiple instances of Notepad++: only save when the last instance is closing.</p>
</li>
</ul>
<p dir="auto">Nothing exciting here, and hopefully no new bugs… just some particular fixes.</p>
<p dir="auto">Apologies to anyone who downloaded 0.6.3 in the short time it was available. I chose a dumb way to detect the last running instance of Notepad++ that was bound to cause a problem sooner or later. In 0.6.3.1 it is replaced with a less dumb way.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105963</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105963</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Thu, 23 Jul 2026 04:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Wed, 22 Jul 2026 13:56:43 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105948">said</a>:</p>
</blockquote>
<blockquote>
<p dir="auto">FYI, during <strong>all</strong> my tests, the <strong><code>Autodetect character encoding</code></strong> option, in <em>Settings &gt; Preferences… &gt; MISC</em>, was <strong>checked</strong> and <strong>all</strong> the files, described in the <strong>P.S.</strong> section of my previous post, contain a <em>Byte Order Mark</em> ( <strong><code>BOM</code></strong> ).</p>
</blockquote>
<p dir="auto">Autodetect is irrelevant when a byte order mark is present: Notepad++ always honors byte order marks. The only time autodetect matters is for a file with no byte order mark that doesn’t appear to be UTF-8 and doesn’t have an internal indication (like an HTML file with a &lt;meta charset&gt; declaration) of its encoding. With autodetect off, such files will always be read using the system default code page. With autodetect on, Notepad++ runs some heuristic tests to try to guess whether the file uses a different legacy encoding.</p>
<p dir="auto">When plugins access documents open in Notepad++ they necessarily use the copies Notepad++ has already loaded, so they “inherit” Notepad++’s encoding detection. The loaded copy will always be either in the system default code page (“ANSI”) or UTF-8. Notepad++ converts any document that isn’t one of those. (Any indication in the status bar other than ANSI or UTF-8 means Notepad++ has converted the document to UTF-8, and will convert it back to the indicated encoding when saving it.)</p>
<p dir="auto">If a plugin accesses files on disk without opening them in Notepad++ — as Search++ does for Search in Files, and as it appears MultiReplace does when searching in files — it’s up to the plugin to sort out the encoding.</p>
<p dir="auto">I’m not familiar with the code for <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a>’s MultiReplace, but based on your tests, I suspect it doesn’t process UTF-16 correctly when searching in files. You could probably construct a minimized example and submit an issue if you were so inclined.</p>
<blockquote>
<p dir="auto">Now, based on my test, have you conducted any <strong>similar</strong> tests of your own, and have you found that searching with <strong><code>Search++</code></strong> also takes <strong>longer</strong> compared to the <strong>native</strong> search in N++ ?</p>
</blockquote>
<p dir="auto">Comparisons looked fine at first. I was running regular expressions with a lot of backtracking against thousands of files on an SSD. Then things fell apart when I tried a network share.</p>
<p dir="auto">Most of my testing has been “stress testing” rather than comparisons, but they point to the same problem. I understand the problem. Engineering a solution is taking some time.</p>
<p dir="auto">Your tests, with the inclusion of re-running the searches, demonstrate what is happening quite well.</p>
<p dir="auto">In the rerun tests, the files from your thumb drive were already cached by Windows. Those second tests show (roughly) how much time the actual searching took. (Notice that Search++ was faster there, because it uses multiple cores of your computer to search several files simultaneously instead of processing them one at a time.)</p>
<p dir="auto">The difference between the first and second runs is (roughly) the time it took to read the files from the thumb drive. That is where the current version of Search++ is just plain doing it wrong. I naïvely supposed that Windows was smart enough to “serialize” access to a device, like a USB drive, from different threads in a manner sensible for the device. Alas, it doesn’t work that way. However many threads your computer can run simultaneously, they’re all hitting the USB drive with requests for different files at the same time. Not only is that not any faster than single-threading them, it’s actually slower, because the controller in the drive is dealing with “too many” requests coming in all at once.</p>
<p dir="auto">The multi-threading I have works pretty well for an internal SSD. It also works if Windows has already cached the entire folder in memory. For everything else… it sucks.</p>
<p dir="auto">I’m working on solving that problem now. It’s slow going. There are a lot things you can “get by with” when single-threading that just blow up under one condition or another when multi-threading.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105952</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105952</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Wed, 22 Jul 2026 13:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Wed, 22 Jul 2026 12:00:51 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">You said :</p>
<pre><code class="language-diff">There are limitations, not yet formally documented, to the way Search++ handles encodings for Search in Files:

1. UTF-16 files without a byte order mark are not recognized as such. (They’ll be misread as something else.)

2. UTF-8 files without a byte order mark that contain any invalid UTF-8 sequences will be processed using the system default (ANSI) code page.

3. Pure ASCII files are processed as UTF-8. (This doesn’t matter for Find, but I will have to review it when I implement Replace, since someone might include non-ASCII characters in the replacement text. I think there will have to be a user control to determine whether to promote ASCII to ANSI or to UTF-8.)

4. Files without a byte order mark that are not pure ASCII and contain any invalid UTF-8 characters are processed using the system default code page. No attempt is made to detect whether a different legacy code page is more likely to be correct, or is explicitly declared within the file.
</code></pre>
<p dir="auto">Thanks for this <strong>extra</strong> information !</p>
<p dir="auto">FYI, during <strong>all</strong> my tests, the <strong><code>Autodetect character encoding</code></strong> option, in <em>Settings &gt; Preferences… &gt; MISC</em>, was <strong>checked</strong> and <strong>all</strong> the files, described in the <strong>P.S.</strong> section of my previous post, contain a <em>Byte Order Mark</em> ( <strong><code>BOM</code></strong> ). Here is the list of all <strong><code>UTF-16</code></strong> files of my <strong><code>D:</code></strong> USB key</p>
<pre><code class="language-diff">    •------------•--------------------------------------------------------------•-----------------•---------------------•--------------------•
    |            |                                                              |                 |    Multi-Replace    |   Search++ / N++   |
    |    BOM     |                             File                             |    Encoding     |     Matches 'Fi'    |    Matches 'Fi'    |
    •------------•--------------------------------------------------------------•-----------------•---------------------•--------------------•
    |   FE FF    |  D:\Plane_0_UCS-2_BE.txt                                     |  UTF-16 BE BOM  |          2          |          0         |
    |   FE FF    |  D:\Planes_0+1_UTF-16.txt                                    |  UTF-16 BE BOM  |          2          |          0         |
    •------------•--------------------------------------------------------------•-----------------•---------------------•--------------------•
    |   FF FE    |  D:\862_x64\plugins\NppExec\doc\NppExec\NppExec_HelpAll.txt  |  UTF-16 LE BOM  |          0          |         31         |
    |   FF FE    |  D:\Plane_0_UCS-2_LE.txt                                     |  UTF-16 LE BOM  |          2          |          0         |
    |   FF FE    |  D:\862_x64\plugins\Config\npec_cmdhistory.txt               |  UTF-16 LE BOM  |          0          |          0         |
    |   FF FE    |  D:\862_x64\plugins\Config\npes_last.txt                     |  UTF-16 LE BOM  |          0          |          0         |
    •------------•--------------------------------------------------------------•-----------------•---------------------•--------------------•
    |            |                            Total                             |                 |  3 Files / 6 hits   |  1 File / 31 hits  |
    •------------•--------------------------------------------------------------•-----------------•---------------------•--------------------•
</code></pre>
<p dir="auto">Notes :</p>
<ul>
<li>
<p dir="auto">The <strong>correct</strong> results are reported in the <strong>last</strong> column</p>
</li>
<li>
<p dir="auto">My USB key also contains <strong><code>49</code></strong>  <em>UTF-8-BOM</em> files ( <strong><code>EF BB BF</code></strong> ) <strong>correctly</strong> detected by <strong>all</strong> the search <strong>engines</strong> !</p>
</li>
</ul>
<hr />
<p dir="auto">Now, based on my test, have you conducted any <strong>similar</strong> tests of your own, and have you found that searching with <strong><code>Search++</code></strong> also takes <strong>longer</strong> compared to the <strong>native</strong> search in N++ ?</p>
<p dir="auto">Of course, I can run <strong>more</strong> tests myself, but I imagine your tests would be more <strong>valuable</strong> and might, perhaps, give you some ideas on how to <strong>increase</strong> the overall search speed with Search++</p>
<p dir="auto">I’m really <strong>curious</strong> to hear your own observations !</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105948</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105948</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Wed, 22 Jul 2026 12:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sat, 18 Jul 2026 20:34:12 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105921">said</a>:</p>
<p dir="auto">I understood the small differences which occur in the MultiReplace search ( 27,112 - 25 ) matches in ( 833 + 2 ) files. But, I prefer, first, to study more closely the MultiReplace plugin, which is very powerful too and reply later to <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a>. It concerns the encoding of 4 files which is not recognized properly and which occurs only when the Find in Files command is used. The Find All and Find in Docs commands, themselves, give correct results for these 4 files !?</p>
</blockquote>
<p dir="auto">As best I can make out, like Search++, MultiReplace processes searches against documents open in Notepad++ using the copy of the document that Notepad++ has loaded into Scintilla. (I can’t really think of another way it could be done.) That means that for existing files, Notepad++ has already determined the encoding and either loaded it as ANSI or UTF-8, or translated it to UTF-8. (Notepad++ never sets Scintilla to use any encoding other than UTF-8 or the system default code page; anything else is translated to UTF-8 and translated back on writing.)</p>
<p dir="auto">So it’s no surprise that we’re both using the same encoding as Notepad++ for Find All and Find in Open Documents, because we’re just using the work Notepad++ has already done.</p>
<p dir="auto">I <em>think</em> MultiReplace uses an invisible Scintilla to process searches in files. It could be that it hasn’t entirely replicated the labyrinthine logic Notepad++ uses to determine the encoding of a file (including the effect of <strong>Preferences</strong> | <strong>MISC.</strong> | <strong>Autodetect character encoding</strong>).</p>
<p dir="auto">Search++ does not duplicate that logic either, but it approaches the problem in a different way. Rather than using an invisible Scintilla control, Search++ uses its customized version of Boost::regex directly on the data in the file buffer. So I never translate the file encoding to anything else. I do have to determine the encoding, though, as the choice of iterator for Boost::regex depends on that.</p>
<p dir="auto">There are limitations, not yet formally documented, to the way Search++ handles encodings for Search in Files:</p>
<ol>
<li>UTF-16 files without a byte order mark are not recognized as such. (They’ll be misread as something else.)</li>
<li>UTF-8 files without a byte order mark that contain <em>any</em> invalid UTF-8 sequences will be processed using the system default (ANSI) code page.</li>
<li>Pure ASCII files are processed as UTF-8. (This doesn’t matter for Find, but I will have to review it when I implement Replace, since someone might include non-ASCII characters in the replacement text. I think there will have to be a user control to determine whether to promote ASCII to ANSI or to UTF-8.)</li>
<li>Files without a byte order mark that are not pure ASCII and contain any invalid UTF-8 characters are processed using the system default code page. No attempt is made to detect whether a different legacy code page is more likely to be correct, or is explicitly declared within the file.</li>
</ol>
<p dir="auto">The sad fact about file encoding is that in most cases there is no algorithmic way to be absolutely certain about what it is. (The exceptions are pure ASCII — but then, if any non-ASCII characters are introduced, there is no way to know how those should be encoded — and some file types, like HTML and XML, that can include a declaration of their own encoding, the declaration itself being in plain ASCII. Byte order marks are, in practice, another exception: they <em>could</em> occur in a legacy encoding, but they would be so uncommon at the start of a file that it’s safe to assume they are definitive, or the file has been purposely engineered to cause mis-detection.)</p>
<p dir="auto">I will probably improve handling of file encodings as Search++ evolves. I doubt that I will attempt to duplicate exactly what Notepad++ does.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105923</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105923</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Sat, 18 Jul 2026 20:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sat, 18 Jul 2026 19:34:59 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105921">said</a>:</p>
<p dir="auto">So, apparently, the results of the first search seem to speed up all the next same searches, whatever the search engine used ( native one or plugins ones ) !</p>
</blockquote>
<p dir="auto">My guess is that the total size of all the files on your USB key was well less than the amount of memory available to Windows. If so, then (I think) that when you repeated a test, almost nothing was read from the USB key: Windows already had the whole drive cached in memory.</p>
<p dir="auto">It makes sense that in that circumstance, Search++ would be several times faster, because it uses multiple threads for search in files; I’m pretty sure both native Notepad++ search and MultiReplace are strictly single-threaded. So when the actual searching, rather than reading the files, is what takes most of the time, Search++ is using all cores of your CPU and the others are using just one.</p>
<p dir="auto">I do wonder, though, why Search++ is so much slower on the first execution. I suspect that something in the way I’m reading files (trying to get several at once, since multiple threads are running) is reducing throughput from the USB key. There is probably a way to make that better. Whether I can figure out what it is remains to be seen.</p>
<p dir="auto">Thanks for your testing!</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105922</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105922</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Sat, 18 Jul 2026 19:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Sat, 18 Jul 2026 09:46:23 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <a class="plugin-mentions-user plugin-mentions-a" href="/user/coises" aria-label="Profile: coises">@<bdi>coises</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">Again, thanks for <strong>quickly</strong> fixing the different issues ( and some others, at the <strong>same</strong> time ! ). So far, everything looks <strong>OK</strong> ;-))</p>
<hr />
<p dir="auto">Now, I did a test, searching in <strong>all</strong> files of my <strong><code>D:</code></strong> <strong>USB</strong> key, with :</p>
<ul>
<li>
<p dir="auto">The native <em>N++</em> <strong><code>Find in Files</code></strong> dialog</p>
</li>
<li>
<p dir="auto">The <em>Search++</em> <strong><code>Search in Files</code></strong> dialog</p>
</li>
<li>
<p dir="auto">The <em>MultiReplace</em> <strong><code>Find All in Files</code></strong> command</p>
</li>
</ul>
<p dir="auto">To be sure to process <strong>fair</strong> tests, I unplung my USB key, re-start my laptop <strong>completely</strong>, replug my USB key and starts a <strong>new</strong> N++ session, before running these <strong>three</strong> <strong><code>Find in Files</code></strong> operations, in turn !</p>
<p dir="auto">I searched for the <strong><code>Fi</code></strong> string, with the <strong><code>Match case</code></strong> and the <strong><code>Regular expression</code></strong> options <strong>checked</strong>. I got :</p>
<ul>
<li>
<p dir="auto"><strong><code>27,112 matches in 833 files of 1,761 searched</code></strong> for the <strong><code>N++</code></strong> <em>Search Results</em> panel, in <strong><code>1m 37s</code></strong></p>
</li>
<li>
<p dir="auto"><strong><code>27,112 matches in 833 files of 1,761 files</code></strong> for the <strong><code>Search++</code></strong> <em>Search++ Results</em>, in <strong><code>2m 21s</code></strong></p>
</li>
<li>
<p dir="auto"><strong><code>27,087 hits in 835 file(s)</code></strong> for the <strong><code>MultiReplace</code></strong> <em>Search results</em> panel, in <strong><code>1m 36s</code></strong></p>
</li>
</ul>
<p dir="auto">However, when you <strong>re</strong>-run this <strong>same</strong> search, <strong>without</strong> exiting N++, right after the <strong>first</strong> search, we get the job done in about :</p>
<ul>
<li>
<p dir="auto"><strong><code>6s</code></strong> for the <strong><code>N++</code></strong> search</p>
</li>
<li>
<p dir="auto"><strong><code>5.2s</code></strong> for the <strong><code>MultiReplace</code></strong> search</p>
</li>
<li>
<p dir="auto"><strong><code>1,1s</code></strong> for the <strong><code>Search++</code></strong> search</p>
</li>
</ul>
<p dir="auto">So, apparently, the results of the <strong>first</strong> search seem to <strong>speed up</strong> all the <strong>next</strong> <em>same</em> searches, <strong>whatever</strong> the search engine used ( <em>native</em> one or <em>plugins</em> ones ) !</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
<p dir="auto"><strong>P.S.</strong> :</p>
<p dir="auto">I understood the <strong>small</strong> differences which occur in the <strong><code>MultiReplace</code></strong> search <strong><code>( 27,112 - 25 )</code></strong> matches in <strong><code>( 833 + 2 )</code></strong> files. But, I prefer, first, to study more <strong>closely</strong> the <strong><code>MultiReplace</code></strong> plugin, which is very <strong>powerful</strong> too and reply <strong>later</strong> to <a class="plugin-mentions-user plugin-mentions-a" href="/user/thomas-knoefel" aria-label="Profile: thomas-knoefel">@<bdi>thomas-knoefel</bdi></a>. It concerns the <strong>encoding</strong> of <strong><code>4</code></strong> files which is <strong>not</strong> recognized properly and which occurs <strong>only</strong> when the <strong><code>Find in Files</code></strong> command is used. The <strong><code>Find All</code></strong> and <strong><code>Find in Docs</code></strong> commands, themselves, give <strong>correct</strong> results for these <strong><code>4</code></strong> files !?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105921</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105921</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Sat, 18 Jul 2026 09:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Tue, 14 Jul 2026 01:20:54 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://github.com/Coises/SearchPlusPlus/releases/tag/v0.6.2" rel="nofollow ugc">Search++ version 0.6.2</a> is available:</p>
<ul>
<li>Fix a critical error that caused ICU searches to crash Notepad++.</li>
<li>Fix unwanted characters appearing at the ends of lines in the Results list with Notepad++ rendering mode GDI.</li>
<li>Fix regression of line ending symbols being in text color instead of white space color, and switch the CRLF symbol in GDI mode to one that hopefully renders more consistently.</li>
</ul>
<p dir="auto">Thanks to <a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> for catching the ICU error and the unwanted characters in the results list in GDI mode.</p>
<p dir="auto">(The ICU error appears to have been due to an uninitialized variable. The faulty code has been there from the beginning. As chance would have it, up until now it just happened to land on memory that contained an innocuous value. Hopefully I didn’t miss anything else similar…)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105905</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105905</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Tue, 14 Jul 2026 01:20:54 GMT</pubDate></item><item><title><![CDATA[Reply to Search++: A work in progress on Mon, 13 Jul 2026 20:04:44 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> <a href="/post/105902">said</a>:</p>
<p dir="auto">But you found out the culprit : it’s just because the GDI ( most compatible) option was selected !. Luckily, for any other option of the rendering mode, after closing an re-starting N++, this special character does not display, anymore !</p>
</blockquote>
<p dir="auto">Thanks for documenting that!</p>
<p dir="auto">It should appear correctly in GDI mode too, of course. I suspect the problem will turn out to be that GDI mode doesn’t support alpha transparency, so my setting the opacity to zero is doing nothing. I’ll have to find another way.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/105903</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/105903</guid><dc:creator><![CDATA[Coises]]></dc:creator><pubDate>Mon, 13 Jul 2026 20:04:44 GMT</pubDate></item></channel></rss>