Community
    • Login
    1. Home
    2. Popular
    Log in to post
    • All Time
    • Day
    • Week
    • Month
    • All Topics
    • New Topics
    • Watched Topics
    • Unreplied Topics

    • All categories
    • donhoD

      Notepad++ release 8.9.5

      Watching Ignoring Scheduled Pinned Locked Moved Announcements
      13
      1 Votes
      13 Posts
      2k Views
      xomxX
      @donho said: Are you talking always about the 32-bits installer? Yes, only about this 32-bit installer test in my 32-bit Windows VM. I had to launch there the uninstaller manually (due to the test for @markusbodensee), so it happened I noticed the NppShell leftover file after the N++ uninstallation. It was unexpected, as I did not use the N++ shell context menu at all, so it shouldn’t be loaded into Explorer. Still, it couldn’t be deleted, even right after the Win restart. I had to launch an advanced task manager, manually unload the NppShell.dll module from the Explorer shell process and only then I was able to delete the file. Even with your latest test-installer, the NppShell leftover is still there after the N++ uninstallation and (normally) undeletable even after Win restart. I don’t see any such problem on my usual x64 Win11 with x64 N++.
    • Robk BlueR

      Issues with the Preview HTML plugin

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      11
      0 Votes
      11 Posts
      375 Views
      Robk BlueR
      @PeterJones OK, I didn’t know that. .8.9.4 and .5 both broke my PreviewHTML plugin, installing back to 8,9,3 fixed it. So, there you go.
    • balancedcircularB

      Find/replace

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      9
      0 Votes
      9 Posts
      326 Views
      guy038G
      Hello, @balancedcircular, @terry-r, @coises and All, I suppose that the following regex S/R should be close to what you want ! I consider the entire line because you may have other lines with attributes Name and/or Comments FIND (?-si)^(<RectangularPart Version=.+ Name=")\d\d\d (.+/.).+?(\d")(.+ Comments=").+(?=>) REPLACE $1$2$3$4$2$3 As @coises said, try this global replacement on a copy of your file ! If everything works as expected, I’ll explain you, next time, how all the regex syntax means ! Best Regards, guy038 I almost forgot the last line of your post. To simultaneously search for any of the three words Rafter, C.Tie and Web, simply use the regex (?-i)Rafter|C\.Tie|Web
    • baberzamanB

      Notepad ++ Should have intellisense plugin Like VS Code.

      Watching Ignoring Scheduled Pinned Locked Moved Boycott Notepad++
      3
      0 Votes
      3 Posts
      212 Views
      pnedevP
      @baberzaman , You can also check NppGTags plugin from Notepad++'s Plugin Manager (this is its project URL: https://github.com/pnedev/nppgtags) - it uses Global GTags to index your code-base and then you can look-up identifiers and do greps. P.S. You love Notepad++, “Boycott Notepad++” is probably not the proper place for your thread. It is more suitable for general discussion or plugins sections as a question and/or suggestion for Notepad++ improvement. BR
    • RWieber79R

      NotePad++ crashes using compare plus immediately after clicking compare

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      3
      0 Votes
      3 Posts
      309 Views
      pnedevP
      Hi @rwieber79 , @peterjones , I’m just seeing this issue, thank you Peter for pinging me. @rwieber79 , just as a side note - please write directly to https://github.com/pnedev/comparePlus/issues in the future if you encounbter problems with ComparePlus - this way I’ll be notified more quickly about the issue. As to the issue itself - please try setting your Notepad++ rendering mode to GDI for the moment. You can do that from Notepad++ Settings - MISC. section (there is a drop-down menu there selecting the rendering which is DirectWrite by default). Then after restarting Notepad++ try again your crashing compare and please write back here if crash is still present. I am in a middle of a large ComparePlus code portions rework and some time in the near future I will release a new version which should not have problems with DirectWrite rendering. BR
    • sound-fxS

      Scripts to align text

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      5
      4 Votes
      5 Posts
      5k Views
      sound-fxS
      I’ve added an option to pad to the right side of the selected character. This preserves the character’s position and instead aligns the non-space text to the right of the character. The default pads to the left side, so the character itself gets aligned. A complementary set of scripts, align_text_right.py and align_text_right_1.py, use this new option. Here’s the complete set of scripts. align_text.py: #------------------------------------------------------------------------ # 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. padding_side : instance of PaddingSide, optional Indicates which side of the character gets the padding. The default is PaddingSide.LEFT, so the character itself gets aligned. Set to PaddingSide.RIGHT to preserve the character's position and instead align the non-space text to the right of the 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. If there is no selection, use the character at the # current cursor position; if that is unavailable, fall through to the # prompt below by treating the alignment character as whitespace. #---------------------------------------------------------------------------- if selected_text: align_char = selected_text[0] else: current_pos = editor.getCurrentPos() align_char = editor.getTextRangeFull(current_pos, current_pos + 1) if not align_char: align_char = ' ' #---------------------------------------------------------------------------- # Optionally use this code to get the align_char from within the selection # at whichever end has the cursor. #---------------------------------------------------------------------------- # if selected_text: # (startByte, endByte) = editor.getUserCharSelection() # if startByte == editor.getCurrentPos(): # align_char = selected_text[0] # else: # align_char = selected_text[-1] # else: # current_pos = editor.getCurrentPos() # align_char = editor.getTextRangeFull(current_pos, current_pos + 1) # if not align_char: # align_char = ' ' # 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 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 align_char_cols = [line.find(align_char, start) for line in text_lines] # Only lines that contain this instance participate in this pass. # A failed find() returns -1, and using that as a slice index would # make lines without this instance incorrectly affect the target. lines_with_instance = [(line, col) for (line, col) in zip(text_lines, align_char_cols) if col >= 0] if not lines_with_instance: break if padding_side == PaddingSide.LEFT: # Align the alignment character itself, removing any spaces # immediately to its left before inserting the required padding. target_col = max(len(line[:col].rstrip()) for (line, col) in lines_with_instance) for (idx, line) in enumerate(text_lines): align_char_col = align_char_cols[idx] if align_char_col >= 0: text_lines[idx] = line[:align_char_col].rstrip().ljust(target_col) \ + line[align_char_col:] start = target_col + len(align_char) elif padding_side == PaddingSide.RIGHT: # Align the non-space text after the alignment character. # Preserve the alignment character itself, but # replace any existing spaces after it with the required # padding. suffix_starts = [] for (line, col) in lines_with_instance: suffix_start = col + len(align_char) while suffix_start < len(line) and line[suffix_start] == ' ': suffix_start += 1 suffix_starts.append(suffix_start) target_col = max(suffix_starts) for (idx, line) in enumerate(text_lines): align_char_col = align_char_cols[idx] if align_char_col >= 0: suffix_start = align_char_col + len(align_char) while suffix_start < len(line) and line[suffix_start] == ' ': suffix_start += 1 text_lines[idx] = line[:align_char_col + len(align_char)].ljust(target_col) \ + line[suffix_start:] start = target_col else: raise ValueError('Unsupported padding_side: {}'.format(padding_side)) 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() align_text_1.py: from align_text import align_selected_text align_selected_text(max_align_char_count = 1) align_text_right.py: from align_text import align_selected_text, PaddingSide align_selected_text(padding_side = PaddingSide.RIGHT) align_text_right_1.py: from align_text import align_selected_text, PaddingSide align_selected_text(max_align_char_count = 1, padding_side = PaddingSide.RIGHT)
    • guy038G

      New displaying of the "Search Results" panel

      Watching Ignoring Scheduled Pinned Locked Moved General Discussion
      1
      1
      0 Votes
      1 Posts
      62 Views
      No one has replied
    • donhoD

      v8.9.6 RC will be available in about 3 days

      Watching Ignoring Scheduled Pinned Locked Moved Announcements
      1
      2 Votes
      1 Posts
      77 Views
      No one has replied
    • JWJ

      AI Plugin

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      3
      1 Votes
      3 Posts
      707 Views
      BlueSea KuoB
      @jw I suggest adding an option to select the AI module.
    • arnaud deretteA

      nppgzipfileviewer - improvements request

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      2
      0 Votes
      2 Posts
      193 Views
      PeterJonesP
      @arnaud-derette , I have never used that plugin. But when I went to their homepage (https://github.com/Pascal-Krenckel/NppGZipFileViewer), they say, “This plugin is deprecated, please switch to CompressedFileViewer.” Once an author deprecates a plugin, there won’t be support for requests. I have put in a request to ask that the author remove the deprecated plugin from the Plugins Admin list (and, if they want, to add the replacement plugin into the list). But you should try their replacement plugin. And if it doesn’t improve your experience, you can go to the CompressedFileViewer’s issue tracker (https://github.com/Pascal-Krenckel/CompressedFileViewer/issues), and make your request(s) there.
    • I

      Hopefully Notepad++ can display correctly ...

      Watching Ignoring Scheduled Pinned Locked Moved General Discussion
      7
      -3 Votes
      7 Posts
      663 Views
      Athen CarlosA
      @ioc2e3 said: ioc2e3 Apr 29, 2026, 4:16 PM Hopefully Notepad++ can display correctly … More types of language archives … notepad++ has been holding it down for like 20 years now. underrated.
    • guy038G

      Is a filename legal?

      Watching Ignoring Scheduled Pinned Locked Moved General Discussion
      2
      1 Votes
      2 Posts
      187 Views
      guy038G
      Hi, All, I did additional tests, especially regarding characters allowed with or without quotes ! Although practically any character can be put within a file name when using the rename option of the Explorer, it happens that, under DOS, it is safer to surround the filename with double quotes when you insert most of the allowed symboles So, here is an updated version of my information part : Syntaxes / Chars ALWAYS forbidden : \x00-\x1F " * / : < > ? \ | \x7F : . at the END of file name : SPACE at the END of file name : ALL DOTS file name : PRN AUX NUL : COM1 COM2 com3 COM4 COM5 COM6 COM7 COM8 COM9 COM¹ COM² COM³ : com1 com2 com3 com4 com5 com6 com7 com8 com9 com¹ com² com³ : LPT1 LPT2 LPT3 LPT4 LPT5 lpt6 LPT7 LPT8 LPT9 LPT¹ LPT² LPT³ : lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9 lpt¹ lpt² lpt³ Chars allowed WITHIN double quotes : ! % & ' ( ) + , ; = [ ] ^ ` { } ~ : SPACE when at BEGINNING of file name Chars allowed WITHOUT double quotes : # $ - @ _ : . if NOT at END of file name : SPACE if NOT at BEGINNING or END of file name You’ll note that my regex, described in my previous post, allows most of the symbols, even without quotes, as they, generally, can be inserted when using the Explorer ! BR guy038