Categories

  • Announcements regarding our community
    297 Topics
    5k Posts
    Rolf WittR

    @MelchiorGaspar

    Looks like a Windows 11 bug. When an installer calls regsrv32.exe, dllhost.exe crashes. This also happens with other installers. However, I don’t know where to report this error to Microsoft.
    The ‘good news’ is that apart from the extended installation time, there don’t seem to be any other consequences.

  • Frequently Asked Questions and Guides (about Notepad++ and this Forum)

    37 Topics
    62 Posts
    PeterJonesP

    You have likely found this page, or been directed to this page, because you were wondering about how to

    The list of Operating Systems (OS) that Notepad++ supports is published at https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/SUPPORTED_SYSTEM.md

    There is a footnote regarding Windows Vista and Windows Server 2008, both of which are officially unsupported: The last release of Notepad++ that worked on those ancient OS versions was Notepad++ v8.4.6. However, the footnote indicates, “The current version of Notepad++ built by GCC can be run under Vista & Server 2008”. Some users, who are interested in preserving historic computing, or have working hardware that is old enough to only be able to run such old OS, are confused by that statement, or wonder how they can get “the current version of Notepad++ built by GCC”. (Two examples of such posts are here and here.)

    When updates are pushed to the Notepad++ repository, a slew of versions are built, including some built by the GCC compiler instead of Microsoft’s compiler used by Visual Studio. Those versions are not used in the published releases of Notpead++, however, they are built from the same source code, so have all the same functionality.

    Main Steps

    The steps for installing the newest Notepad++ onto Vista or Server 2008 are as follows:

    Install the newest Notpead++ normally, or unzip the newest portable edition of Notepad++, noting whether you are using the 32-bit or 64-bit Notepad++. Verify that notepad++.exe doesn’t run on your computer. (If it does, you don’t need to follow the remaining steps.) Obtain the notepad++.exe built by GCC using one of the two sections below: Recent Release or Older Release Replace your installed or portable notepad++.exe with the executable downloaded in step 3. Run the replaced notepad++.exe, and verify it does run on your computer. Artifacts

    When the GCC builds are automatically run on the GitHub servers, the executables are kept for up to 90 days from the time of the build; however, that retention period is also influenced by how many artifacts a project generates: Notepad++ generates a lot of artifacts, so sometimes the artifacts for a release are not available for the full 90-day period.

    If the artifacts are still retained for the most recent release, then you can follow the procedure in Recent Release (below) to obtain the GCC-built executable. If those artifacts are gone, you will have to use the similar procedure in Older Release, though make sure you read that section thoroughly for unique .

    Recent Release Go to https://github.com/notepad-plus-plus/notepad-plus-plus/releases/latest where it has the little -o- icon and 7-9 hex digits, click on that hex number
    2c11d2fe-18e2-4f48-b7d2-50e3ff54dc41-image.png It should have a green checkmark (or less likely, a red X): click it
    82185f3a-d05b-47c9-893c-1d2cfbac6305-image.png In the popup, click any of the Details links (it doesn’t matter which one)
    b116fae8-972b-4796-a0db-c3f4c3d97b88-image.png Click on the Summary button
    c5d81331-849f-4c5e-82aa-e57d54f088ce-image.png Scroll down to the Artifacts at the bottom of that Summary page, and pick the …GCC.i686.Release if you want 32-bit Notepad++, or …GCC.x86_64.Release if you want the 64-bit Notepad++
    0d0757f8-b8a1-4709-8c8b-05e5a237afe8-image.png That downloaded artifact will be a zipfile containing a single (unsigned) notepad++.exe

    Once you have unzipped the artifact, you can continue with step 4 in the Main Steps

    Older Release

    If the artifact from the most recent release is no longer stored in GitHub, you can instead grab the most-recent build. However, you need to understand that builds made since the most recent release have code in them that has never gone through the Release Candidate verification: it passes all the automated testing, but there may be edge cases that have not yet been found or fixed. One should only use the most-recent build instead of a release build when those risks are understood.

    Go to https://github.com/notepad-plus-plus/notepad-plus-plus/actions and find the most-recent commit to the master, and click on that row. Look for the Artifacts at the bottom. Find the link with “GCC” in the name with the right version (64-bit is x86_64, 32-bit is i686, or ARM64) – assuming you have 64-bit Vista, then it would be Notepad++.GCC.x86_64.Release. Click the appropriate artifact, which will download a zipfile. Open the zipfile and extract the executable from it

    Once you have unzipped the artifact, you can continue with step 4 in the Main Steps

    Build Your Own

    The Notepad++ repository includes BUILD instructions for GCC, so if you follow those instructions, you can build your own GCC-based Notepad++ from the source code. You will obviously need the GCC compiler (you will have to find and install that on your own, as such a procedure is beyond the scope of this FAQ or this Forum).

    Once you have the GCC compiler ready, you can download the source code for Notepad++: it is up to you whether you want to download the source code from the latest release, which will give you a snapshot of the code at the time it was released; or whether you want to grab the most recent commit from the main development branch of the repo which can have code/features that have been added since the last release.

    Building your own copy of Notepad++ using GCC is intended for people with coding experience, and experience with GCC in particular, and who know how to use GitHub and git – if this doesn’t describe you, you may wish to gain experience before trying to build your own using GCC.

    Caveat: This is Unsupported

    Rememeber: using Notepad++ on Windows Vista or Windows Server 2008 is not officially supported for new Notepad++ versions. If you can happen to get newer Notepad++ to work on those OS versions by following these instructions, that’s great for you.

    Otherwise, the best recommendation is to use an older version of Notepad++ that was officially tested on those operating systems – with v8.4.6 being the newest Notepad++ to be verified with those OS. Having been verified, it should work for you; however, there will never be any updates to the v8.4.6 code, so any bugs or security issues present in v8.4.6 will remain unfixed for you. (The same is true for most applications that stop supporting older OS, so this is not unique to Notepad++.)

  • Notepad++ discussions that don’t fit in other Categories

    4k Topics
    22k Posts
    Vince AmanV

    @mpheath ,

    Thanks again for you reply! I plan to test your BufferRestore script after my next “break” in my current project(s). After looking closer at your post and web page, this looks to be a good option for me to use until NP++ has a built in tool…

    I do own a rack of servers and plan to spin up a couple extra VMs once I release my own platform/environment for my apps (within the next couple months). The challenge with one of the (main) current platforms which I’m using is, while I pay annually to be a developer for them, their licensing does not allow me to run on more than 1 PC at a time, so it requires me to log out/in each time I switch between PCs or VMs. I can’t maintain the variable “state” if forced to log out.

    There are many additional issues with Windows Rebooting… When the current test environments get “killed”, all the opened files are now locked and all the variables are flushed. So it requires unlocking the files, and recreating the previous workflow to recreate the variable “state”. Using a log file doesn’t work well in this environment, because it typically goes back beyond the last save… and could only be applied if the saved file was in the exact state as when the log file was started… not sure if that makes sense?

  • 10k Topics
    54k Posts
    guy038G

    Hello, @mm-tsuchi, @terry-r and All,

    @mm-tsuchi, The behavior, that you’ve found out, seems definitively a bug , I’m afraid :-((

    Let’s test with the beginning of the change.log file, copied in a new tab :

    Notepad++ v8.8.7 new features & bug-fixes: 1. Sign Notepad++ binaries with GlobalSign certificat to fix false-positive alerts. 2. Fix Monitoring in one view affects selections and position in second view. 3. Fix Shortcut Mapper memory leak issue. 4. Enhance Perl FunctionList for class. 5. Fix pressing Alt or Tab causes controls redrawing problem in UDL dialog. Notepad++ v8.8.6 new features & bug-fixes: 1. Add capacity of pasting multiline into Find/Replace fields. 2. Improve UAC in Notepad++ for seamless elevated operations. 3. Fix Pin Tab operation being too long with many opened documents. 4. Add 2 new full-readonly modes via command line argument (-fullReadOnly & -fullReadOnlySavingForbidden). 5. Add apply/remove read-only for all documents commands. 6. Column Editor enhancement: GUI input fields now support radix to match the output format. 7. Add Window dialog "File Modified Time" sorting capacity. 8. Fix NPPN_CMDLINEPLUGINMSG not working issue & define the pluginMessage usage protocol. 9. Fix pasting from column mode to multi-selection issue due to different EOL. 10. Add NPPM_GETNPPSETTINGSDIRPATH message to get Notepad++ settings directory path. 11. Enhance SQL function list parser. 12. Fix C# function list not working with comments. 13. Add function list ability for CSS. 14. Allow user to customize max selected chars to auto-fill "Find what" field. 15. Restore undo/redo behaviour in Find/Replace fields after Copy/Paste or Ctrl-F. 16. Fix text corruption issue caused by selection within multibyte characters. 17. Fix DOCTYPE styling in xml and html. 18. Fix double clicking on edit zone border creates a new tab issue. 19. Update cURL in WinGUp (Notepad++ updater) for fixing security issue CVE-2025-5399.

    And let’s start with a fresh portable v8.8.7 release of N++. After launching Notepad++.exe for the first time, if you move to the Preferences... > Searching panel, you should see this snapshot :

    ba0aed16-e512-4b4d-bf11-8d3cbde6d7b5-Capture d'écran 2025-11-18 103552.png

    So, you can verify that, by default, the two options Fill Find Field with Selected Text and Select Word Under Caret when Nothing Selected are checked

    In this configuration, no problem at all regarding the Select and Find Next and Select and Find Previous commands which work as expected !

    Now, as soon as you unchecked the Fill Find Field with Selected Text option, note that it also unchecks, automatically the Select Word Under Caret when Nothing Selected option and the Max characters to Auto-Fill Find Field from Selection option, as well !

    With that new configuration :

    Double-clic on the first Add word of the text

    Open the Find dialog ( Ctrl + F )

    => The Find what zone should be empty ( logical, because of the settings ! )

    Note that the Wrap around option is checked by default and the search mode is set to normal

    Type the word Add in the Find what zone

    Click once on the Find next button to jump to the next occurrence of the Add word

    Close the Find what zone ( Esc )

    You can check that the F3 / Shift + F3 shortcuts ( Normal search ) or the Ctrl + Alt + F3 / Ctrl + Shift + Alt + F3 shortcuts ( Volatile search ) work as expected

    However, the Select and Find Next and Select and Find Previous commands do nothing. This is also logical because of the new settings !

    Now, just put the caret within any Add word. if you hit the F3 key, it does find the next Add word ! Don’t be mistaken : it found the Add word just because the Find what zone still contains the Add word as the Select Word Under Caret when Nothing Selected is uncheked

    To be convinced, simply put your caret within an other word Fix : hitting the F3 key still search the next occurrence of the Add word and not the Fix word !

    Now, double-click on any Fix word. The only possibility to search this new word is to use the Alt + Ctrl + F3 or Alt + Ctrl + Shift + F3 shortcuts. However, if you open the Find dialog, as this kind of search is volatile, the Find what zone will still contains the Add word !

    So, IMO, how to fix this issue :

    Forbid the Select And Find ... options when the Fill Find Field with Selected Text option, in settings, is unchecked. This seems logical as current selected text never fills the Find what zone !

    But, allow the Select Word Under Caret when Nothing Selected setting to be checked, independently of the Fill Find Field with Selected Text option. So, putting caret within any word, would still select this word and placed it in the Find what zone of the Find dialog for search !

    Best Regards,

    guy038

  • Technical discussion of building or contributing to Notepad++ or Plugin codebases

    1k Topics
    9k Posts
    sound-fxS

    The following code supports PythonScript 3.0.23 as well as earlier versions of PythonScript 3.x.

    #------------------------------------------------------------------------ # If the character specified in the current selection is a white space, # then prompt the user to enter the alignment character (or characters), # using this character as the initial default. #------------------------------------------------------------------------ default_align_char = ',' from enum import Enum class PaddingSide(Enum): LEFT = 0 RIGHT = 1 def align_selected_text(max_align_char_count = None, padding_side = PaddingSide.LEFT): """Insert padding into the lines in the selection, as needed, to align up to max_align_char_count instances of a specific character or string of characters The default is to align all instances of the specific character. At present, the alignment character is taken as the character at the top of the current selection. You can uncomment some code below to change this policy to instead take the alignment character from within the selection at whichever end has the cursor. Either way, if that character is white space, the user is prompted to type the character (or characters). If you really wish to align on a white space character, you can just click OK at the prompt. When prompted to type the alignment character, the user may enter a sequence of characters, e.g., "-->", in which case the alignment is on the instances of that entire character sequence. For example, if the user enters "-->" at the prompt, then instances of the "-" character get aligned only if they're followed immediately by the characters "->", while instances of, say, "-1" and "- " remain unaltered. If there is no current selection, then aligns all lines in the editor. If there is a current selection, then aligns only the lines that are at least partially included in the selection, and the selection is changed to the entire block of newly-padded lines. Parameters ---------- max_align_char_count : positive integer, optional The maximum number of instances to align of the specific character. For example, set to 1 to align only the first instance of the character on each line. The default is to align all instances of the specific character. """ from Npp import editor #---------------------------------------------------------------------------- # For the alignment character, take the character just inside the bounds of # the selection block (at either the start or the end, as determined below). #---------------------------------------------------------------------------- editor.targetFromSelection() selected_text = editor.getTargetText() # Use this code to get the align_char unconditionally from the start # of the selection. align_char = selected_text[0] # Optionally use this code to get the align_char from within the selection # at whichever end has the cursor. # (startByte, endByte) = editor.getUserCharSelection() # if startByte == editor.getCurrentPos(): # align_char = selected_text[0] # else: # align_char = selected_text[-1] # If the character from the selection seems implausible as the # align_char, then prompt the user for it. if align_char.isspace(): from Npp import notepad global default_align_char align_char = notepad.prompt('Align character:', 'Enter Alignment Character', default_align_char) if align_char is not None: default_align_char = align_char #---------------------------------------------------------------------------- #%% Get the lines of text within the selected alignment block #---------------------------------------------------------------------------- (startLine, endLine) = editor.getUserLineSelection() startPos = editor.positionFromLine(startLine) endPos = editor.getLineEndPosition(endLine) text_lines = editor.getTextRangeFull(startPos, endPos).splitlines(True) #---------------------------------------------------------------------------- # Remember whether there is a user-selected block, so we can restore a # corresponding selection after aligning the text. #---------------------------------------------------------------------------- restore_selection = editor.getSelectionStart() != editor.getSelectionEnd() #---------------------------------------------------------------------------- # Align all instances of align_char within the lines of text #---------------------------------------------------------------------------- if align_char is not None: # Enable the following to save the align_char, however it was determined, # to be the default_align_char when prompting for it next time. # default_align_char = align_char padding_side_offset = padding_side.value * len(align_char) if max_align_char_count is None: align_char_count = max(line.count(align_char) for line in text_lines) else: align_char_count = max_align_char_count start = 0 for instance in range(align_char_count): # Set the target column using the index of the align_char, ignoring # immediately preceding space, or the length of the line tgt_char_col = max(len(line[:line.find(align_char, start)].rstrip()) for line in text_lines) for (idx,line) in enumerate(text_lines): align_char_col = line.find(align_char, start) if align_char_col >= 0: text_lines[idx] = line[:align_char_col+padding_side_offset].rstrip().ljust(tgt_char_col) \ + line[align_char_col+padding_side_offset:] start = tgt_char_col + len(align_char) editor.setTarget(startPos, endPos) editor.replaceTarget(''.join(text_lines)) if restore_selection: startPos = editor.positionFromLine(startLine) endPos = editor.getLineEndPosition(endLine) editor.setSelectionStart(startPos) editor.setSelectionEnd(endPos) if __name__ == '__main__': align_selected_text()
  • Security shouldn't be the privilege of rich people
    62 Topics
    293 Posts
    donhoD

    @soft-parsley
    Could you provide your gup.xml file from C:\Program Files\Notepad++\updater\ directory?

  • All the issues (publications/questions) about binary translation
  • Say fuck to Notepad++ here, and only here
    91 Topics
    522 Posts
    James Burke 0J

    @Maurizio-Scian The real problem is that most Americans don’t know left from right. True right wingers wear BLUE ball hats. American right wingers wear RED ball hats. Now is that fucked-up or what? And what’s more, real communists restore old American cars and put diesel engines in them without catalytic converters. America communists ride electric bicycles and believe in climate change. Lets try to keep this in mind when discussing politics.

  • No support request and bug report here, only unconditional praise and worship

    1 Topics
    4 Posts
    Aubin HeroutA

    salut les petits gwerrrr

  • Share personal tips and cool uses for Notepad++, and similar

    59 Topics
    219 Posts
    guy038G

    Hello, All,

    In summary, a wedding is :

    Lots of preparation the day before

    Lots of celebrations in the evening and the night

    Lots of cleaning up the next day

    We were extremely fortunate to have beautiful weather and pleasant temperatures for the season.!

    My daughter, being a schoolteacher, had naturally chosen the All Saints’ Day school holidays.

    The wedding took place in the Chartreuse Mountains (1,000 m), near Grenoble.

    At the Town Hall :

    0aed2d1e-a6d0-48da-92f1-94fac8620ac7-20251018_19_C.jpg

    In Chartreuse :

    6af1599e-5a7a-4063-912e-389b35bf06c4-20251019_99_C.jpg

    Best Regards,

    guy038

  • Computer/Programming Jokes are welcome here

    56 Topics
    179 Posts
    Lycan ThropeL

    @donho ,
    I’m not sure this is humor for it’s own sake, or a veiled attempt at sarcasm. Either way, I don’t want govenment, especially the UN in anything, period. :-)