• Read This First

    Pinned Locked
    1
    5 Votes
    1 Posts
    9k Views
    No one has replied
  • 2 Votes
    32 Posts
    48k Views
    ThosRTannerT
    Just a quick question - when will the plugintemplate repo be updated to include the new message? Thanks
  • Search++: A work in progress

    203
    7 Votes
    203 Posts
    61k Views
    CoisesC
    @guy038 said: The only way to bookmark the last empty line 10, that I found, is to use the regex ^((?!test).)*$ Yes, that’s the bug you found. The precise conditions are that if a match includes the last character in the file, Search++ fails to check for the possibility of a null match at the end of the file. That will be fixed in the next release. Using Search++, in mode Regex, this regex counts 8 matches, whose line 1 with ONLY a small blue triangle at bottom of line 1 and the last empty line 10 with the calltip ^ zero length match Yes. Where possible I use the small triangle to mark a zero-length match. There are two situations where that isn’t possible, due to Scintilla limitations: when the match is at the end of a line, before the line ending characters, and line ending characters are not shown; and when the match is at the very end of the file. In those cases, I use the ^ zero length match banner instead. I use triangles for zero length matches in the Search++ results list and with the Show command, too. The same limitations apply with Show, but because call tips disappear when you interact with the text, I can’t really do anything about the indicators you can’t see. In the results list you can always see them because I can safely change some settings so that I can use line ending characters that Scintilla considers displayed, but that don’t actually show anything you can see. Using Columns++, this regex counts also 8 matches, but, this time, the first line returns, instead, the calltip ^ zero length match Yes, I hadn’t thought of the triangle method yet when I wrote Columns++. Using Search++, in mode ICU this regex counts 7 matches, whose line 1 with ONLY a small blue triangle at bottom of line 1. So the line 10 is not a match As best I can tell, ICU’s regex engine does not consider the position following the last character in the document to be the beginning of line, regardless of whether the last character is a line ending character. That makes sense, really, but it doesn’t conform to the way Scintilla lays out lines. So your expression doesn’t match because the circumflex doesn’t match. With N++ and MultiReplace the ^abc regex counts 8 matches. So a beginning of line is seen : At the very beginning of the file After a LF character After a FF character After a CR character After a NEL character After a LS character After a PS character After a \r\n string, in line 9 With the Columns++ and Search++ Regex the ^abc regex counts 4 matches. So a beginning of line is seen : At the very beginning of the file After a LF character After a CR character After a \r\n string, in line 9 With Search++ ICU, the ^abc counts 9 matches. So a beginning of line is seen, like with N++ and MultiReplace and, also, after a VT character. Yes, Columns++ and Search++ Regex do their best (I think they succeed) to treat the same things as line endings that are visible as line endings in Notepad++. So, for example, in your Total_Chars.txt, ^ matches 3 times in Columns++ and in Search++ Regex; it matches 13 times in Search++ ICU; and in Notepad++ native search, if you use Find Next (since Count ignores null matches) and count manually (making sure not to miss the match at the very beginning of the file) there are 7 matches. Likewise, (?-s:(?!.))(?s:.) produces 6 matches in Notepad++ (you can use Count for this one), 2 matches in Columns++ and Search++ Regex, and 7 matches in Search++ ICU. I’m not sure yet what causes the extra matches for ^ in ICU; it could be something I’ve done wrong in preparing the string, it could be a bug in ICU4C, or could just be something I don’t understand. Seemingly, in ICU mode, the \r\n couple is not considered as one char. Thus, the regex ^\n|Q do see the CR character as a beginning of line (^). However, in this case, I do not understand why the ^\n regex finds nothing at all ! ICU appears to treat ^ differently in different expressions. So far, it looks to me as if, when it is the first thing to match in the only alternative, it treats CRLF as one, but when it’s anywhere else, it treats CR and LF each as line ending characters even when they are together in that order. That’s just from trying to infer a pattern behind what I’ve observed; I can’t find any documentation of such a thing. It could be a bug, or just something I don’t know. Then, I simply searched for the ^\n regex. As noticed above, this regex finds nothing. However, after clicking on the Mark in Whole document option, the previous marks and bookmarks remain unchanged ? I expected no marked text and no bookmrked line ! I suppose it’s a bug. It is working as intended, but perhaps the design is confusing. I had to keep the text in the Settings dialog reasonably brief, but I see I didn’t describe the details correctly in the help. Existing marks (and bookmarks, if applicable) are cleared if the command is successful, meaning it finds at least one match. (Internally, it waits until it finds the first match and only clears the existing marks after it has found the first match, but before it marks it.) If there is an error, or if no match is found, nothing is cleared. Since you can’t “undo” changes in marks and bookmarks, I thought that at least in the case where someone mistypes a search string resulting in no matches, it would be better not to lose the marks (or selections, or shown text and lines, as the case might be), so one could easily try again.
  • XML Tools plugin is not maintained

    3
    0 Votes
    3 Posts
    228 Views
    Lycan ThropeL
    @PeterJones said: [IANAL, and I don’t know the legal term for a non-registered trademark] An unregistered trademark, sometimes informally called a common law trademark, is an enforceable mark created by a business or individual to signify or distinguish a product or service. –For future reference. The stronger case needs to be made as you mention to differentiate what could be called a trademark name versus a generically descriptive name. Such as the difference between Borax as a chemical and Borax as a trademarked product name. I am not a lawyer [IANAL], either, but I have done legal research from time to time, on these types of subjects as well, in the past.
  • [New plugin] Smart Math

    10
    1 Votes
    10 Posts
    1k Views
    Vitalii DovganV
    Here are the latest binaries of SmartMath. This is a fully-working unofficial build that is going to be added to the official git repository… unless more improvements are suggested :) What’s new: the archive structure corresponds to the expectations of the Plugins Admin; the plugin searches for its documentation file near the SmartMath.dll, as well as in the “plugins\doc” folder; the plugin shows a warning when it does not find its syntax files in the expected locations under the “userDefineLangs” and “autoCompletion” folders of Notepad++. 64-bit version: https://drive.google.com/file/d/1pTS_cBdU_Q0vkG03cubqWZ9TDdYiSsXW/view?usp=drive_link 32-bit version: https://drive.google.com/file/d/1qsI5Hsx4XmyRlhVeGsplAoTX391WEnOv/view?usp=drive_link
  • XBrackets Lite v2.0 has been released!

    5
    3 Votes
    5 Posts
    3k Views
    Vitalii DovganV
    XBrackets Lite v2.0.4 Glory to Ukraine! Glory to the heroes! improved: a manually typed closing bracket steps over an auto-completed one, even after typing text inside the pair. For example, typing ( automatically inserts ), producing (|), where | indicates the caret position. Typing abc places the characters inside the pair, resulting in (abc|). Typing the final ) then steps over the existing ), resulting in (abc)| instead of adding a duplicate closing bracket (abc)). changed: while searching for “XBrackets.txt”, the plugin first checks the “plugins\XBrackets” folder, and only then checks the “plugins\doc” folder. a few internal corrections. https://github.com/d0vgan/npp-XBracketsLite/releases/tag/XBrackets_v204
  • wireloom in markdown viewers

    8
    0 Votes
    8 Posts
    672 Views
    rdipardoR
    I said: In case anyone else is interested, you can try previewing plain-text wireloom files with this development build of Preview HTML. This feature has now been merged, with additional support for offline Markdown previews that will render wireloom code blocks: [image: 1790348955006-wireloomx898.gif] All rendering is done by client-side JavaScript modules, so MS Edge is still required. @Keith-Collyer said: What would be really good would be if the developers of these re-merged their plugins! Don’t look now, but no fewer than three new Markdown plugins have appeared in the past two weeks — and they all depend on the WebView2 runtime (i.e. Edge).
  • 0 Votes
    1 Posts
    137 Views
    No one has replied
  • 1 Votes
    4 Posts
    2k Views
    D
    It never inserts the text at the caret’s position for me: it either moves up a line and/or replaces the existing text. What am I misunderstanding?
  • [New Plugin] MultiReplace

    81
    3 Votes
    81 Posts
    87k Views
    Thomas KnoefelT
    MultiReplace 6.1 is out and will land in Plugin Admin with the next Notepad++ release. The focus of this release is Replace All in One Pass, running the whole list in a single left-to-right sweep instead of one full pass per entry, together with a reworked Find/Replace in Files and a handful of list and UI improvements. Several new options live under Plugins > MultiReplace > Settings. Download: Latest build Key Features & Improvements Replace All in One Pass: Runs the whole list in a single pass instead of one full Replace All per entry, so results build on each other left to right. With cat → dog and dog → cat, sequential mode turns “cat dog” into “cat cat”, one pass turns it into “dog cat”. Much faster on large documents. Toggle per tab, right-click the list tab. Use Open Documents: Find/Replace in Files can now work on files already open in Notepad++ as the live document, unsaved changes included, instead of the copy on disk. New checkbox in Settings. Skip Binary Files: New option for Find/Replace in Files (on by default), same detection as ripgrep and VS Code. Also adds UTF-16 detection without a BOM, and skipped files are always reported, broken down by reason. CSV Header Rows: Find/Replace now always searches header rows too. “Header rows to exclude” only protects sorting and duplicate detection. Collapse to File List: New Search Results dock option folding every search block down to just file names and hit counts. Ctrl/Shift-click works in the fold margin, same as Notepad++'s own Search Results panel. Library Mode: “Keep list always visible” can now be switched right from the Use List button’s context menu, no detour through Settings. Add New Row: Takes over the dialog’s current search options instead of starting all off. Find/Replace text still starts empty. Duplicate Row Reporting: A list row that exactly duplicates an earlier enabled one is skipped as before, but the status line now tells you how many rows were skipped. [image: 1789296944806-e15a9d23-6db6-4411-a694-d44fc95300e5-image.jpeg] Issues or suggestions: GitHub. Happy replacing!
  • SetFirstVisibleLine not working?

    10
    0 Votes
    10 Posts
    2k Views
    PeterJonesP
    @peter-wall said: It works if that setting is off. It works, full stop. You just need to understand the documentation. As ScintillaDoc says for SCI_SETFIRSTVISIBLELINE, “These messages retrieve and set the line number of the first visible line in the Scintilla view. The first line in the document is numbered 0. The value is a visible line rather than a document line.” (emhasis added). The “document line” in Scintilla is the same thing that Notepad++ numbers in the line number column: it’s the real line, no wrapping. The “visible line” is affected by hiding lines and/or wrapped lines: if you have lines hidden in the document, that can decrease the visible line index relative to the document line number; if you have lines wrapped, that can increase the visible line index relative to the document line number. Scintilla has commands like SCI_VISIBLEFROMDOCLINE and SCI_DOCLINEFROMVISIBLE to help transform between the two concepts, and SCI_WRAPCOUNT will help you determine how many visible lines a single document line will become. If you want to turn word wrapping off, set your visible line, then reinstate word-wrapping, that’s fine; but the Scintilla messages provide other ways to allow you to correctly handle visible-line vs display-line.
  • Testing nppPluginList for new/updated plugin

    8
    0 Votes
    8 Posts
    698 Views
    rdipardoR
    @PeterJones said: If you’ve got steps that work for doing a local debug build, that would be helpful. > where cmake C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe > type .\build_gup.ps1 param ( [string]$Configuration = "Debug", [string]$Platform = "x64" ) if (-not $(Test-Path "${PSScriptRoot}\wingup\.git")) { git clone --single-branch https://github.com/notepad-plus-plus/wingup.git wingup } try { pushd "${PSScriptRoot}\wingup" $CmakeArchParam=$(if ("$Platform" -imatch "x86") {"Win32"} else {"$Platform"}) $LibPlatform=$(if ("$Platform" -imatch "Win32") {"x86"} else {"$Platform"}) cmake -S ".\curl" -B ".\curl\build\$LibPlatform" -A $CmakeArchParam ` -DBUILD_SHARED_LIBS=OFF ` -DCURL_STATIC_CRT=ON ` -DBUILD_CURL_EXE=OFF ` -DCURL_USE_SCHANNEL=ON ` -DCURL_USE_OPENSSL=OFF ` -DBUILD_TESTING=OFF ` -DUSE_LIBPSL=OFF ` -DCURL_USE_LIBPSL=OFF ` -DUSE_NGHTTP2=OFF ` -DUSE_LIBIDN2=OFF cmake --build ".\curl\build\$LibPlatform" --config $Configuration pushd vcproj msbuild GUP.sln /v:m /p:configuration=$Configuration /p:platform=$LibPlatform popd } catch { $_.InvocationInfo.PositionMessage; $_.Exception.Message } finally { popd } > powershell .\build_gup.ps1 Debug x86 # ...
  • [New Plugin] ZeroBasedColumn

    1
    0 Votes
    1 Posts
    158 Views
    No one has replied
  • nppftp and and windows 11

    11
    0 Votes
    11 Posts
    1k Views
    xomxX
    @Afik-Gilboa said: both of them have the “run as administrator” unchecked. so any ideas why it keeps opening in admin mode? apparently everything running as administrator here, not sure why but it’s everything… I recognize the symptoms - you probably have turned off the Windows UAC completely somehow and at the same time the account, you are logged in, has the administrator rights (then everything launched will have the admin rights as default). Check your Registry for EnableLUA REG_DWORD 0x00000000 in: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] (click on Windows Start, start typing “Reg” there, click on the Registry Editor (System) app offered and navigate there to the hive path above) If there is that 0x00000000 (OFF), change it do 0x00000001 (ON) and restart your PC.
  • 1 Votes
    3 Posts
    382 Views
    S
    @PeterJones, many thanks to Your reply. This workaround works perfectly. I searched for this workaround (because I expected that anyone wouls have the same needs) but wasn’t successful - searching for a solution to a problem can be a frustrating experience if you don’t use the right search term(s) — which, of course, you don’t know yet at that stage…
  • [New Plugin] EncTags — inline text encryption via ^^...^^ tags

    3
    1 Votes
    3 Posts
    390 Views
    rdipardoR
    @saintleningrad-prog said: Select text, or place the cursor inside a ^^…^^ tag, press Ctrl+Shift+E Just a head’s up: that’s the same default key combination that decodes HTML entities when HTML Tag is installed. Since plugin commands are mapped in alphabetical order, and the most recent mapping prevails, having both installed will silently block the EncTag’s plugin shortcut from functioning: [image: 1787355567929-enctags-v020-shortcut-conflict.png] One more thing: the text you are passing to the About message box (here) contains the literal Unicode character U+2013: EN DASH. Since the Unicode literal is inside a character string, the compiler interprets everything between "..." as if it were encoded in the operating system’s default, single-byte code page (usually Windows-1252 on English- or European-language PCs). When shown, the emdash becomes the string of nonsensical bytes \xe2\x80\x94: [image: 1787355726977-enctags-v020-mojibake.png] You just need to escape the Unicode literal, i.e., "Ctrl+Shift+E \u2013 ..."
  • Markdown UDL Help

    markdown udl
    9
    1 Votes
    9 Posts
    5k Views
    J
    @dcog989 Thanks for this - if you have any tweaks or updates you’ve made since this comment, let me know!
  • Search++ (\W)'(\w) regex replace failure

    49
    0 Votes
    49 Posts
    6k Views
    M Andre Z EckenrodeM
    @Coises said: I expect that Version 0.6.5 will fix this. Noted, thanks again, and I’ll let him know — although he actually doesn’t typically use regex for his own purposes.
  • [BETA] Upcoming Plugin: HiddenLexers

    15
    1
    2 Votes
    15 Posts
    1k Views
    PeterJonesP
    Since it’s essentially working at this point, I’ve renamed the Topic to “BETA” @mpheath , I have updated the README at https://github.com/pryrt/NppPlugin-HiddenLexers to enumerate available options I think I’ll be patient, and give the beta test a while longer, so won’t try to rush to release it before N++ v8.9.8’s PluginsAdmin list is finalized.
  • Awesome Notepad++ Configs, settings and syntax highlighting

    9
    3
    1 Votes
    9 Posts
    4k Views
    rafaelloR
    1.2.2 Syntax highlighting PowerShell Improved absolute, relative, quoted and unquoted paths colors [image: 1785402977913-paths.png] Improved variables interpolation colors [image: 1785402952228-interpolation.png] [image: 1785402954396-interpolation4.png] Added colors for expressions $(..), ${..} Added registry hives colors (HKLM, HKEY_LOCAL_MACHINE, …) Fixed syntax highlighting Fixed variables colors inside paths and quotes Fixed excessive colors of variables, keywords, and functions enclosed in quotes Fixed unexpected sc.. and vk.. colors in AutoHotkey code Disabled colors for variables inside single quotes ' ' (because single quotes prevents var. interpolation)