Categories

  • Announcements regarding our community

    337 Topics
    5k Posts
    andrecool-68A
    The text direction switching for Hebrew and Arabic does not work Notepad++ v8.9.8.1 (32-bit) Build time: Sep 24 2026 - 15:33:17 Scintilla/Lexilla included: 5.6.6/5.5.3 Boost Regex included: 1_90 pugixml included: 1.16 nlohmann JSON included: 3.12.0 Path: E:\allTools\Editors\Texts\Notepad++\BAK++\npp.zip\npp.8.9.8.1.portable\notepad++.exe Command Line: Admin mode: ON Local Conf mode: ON Cloud Config: OFF WinGUp: present disableNppAutoUpdate.xml: present Periodic Backup: ON Placeholders: OFF Scintilla Rendering Mode: SC_TECHNOLOGY_DIRECTWRITE (1) Multi-instance Mode: monoInst asNotepad: OFF File Status Auto-Detection: cdEnabledNew (for current file/tab only) Dark Mode: OFF Display Info: primary monitor: 1920x1080, scaling 100% visible monitors count: 2 installed Display Class adapters: 0000: Description - Intel(R) HD Graphics 4000 0000: DriverVersion - 10.18.10.3345 0001: Description - Стандартный VGA графический адаптер 0001: DriverVersion - 6.1.7600.16385 0002: Description - NVIDIA Quadro FX 580 (Microsoft Corporation - WDDM v1.1) 0002: DriverVersion - 8.15.11.8593 OS Name: Windows 7 Home Premium (64-bit) OS Build: 7601.0 Current ANSI codepage: 1251 Plugins: ColorPicker (2.3) ComparePlugin (2.0.2) DSpellCheck (1.5) Explorer (1.9.9) HexEditor (0.9.14) HTMLTag_unicode (1.6.1) HugeFiles (0.4.1) ImgTag (2.0.1) JSMinNPP (25.11.16) mimeTools (3.1) NppConverter (4.7) NppExec (0.8.10) NppExport (0.4) NppMarkdownPanel (0.9.3) NppMenuSearch (0.9.7) NppQCP (2) NppSnippets (1.7.1) NppUISpy (1.2) PreviewHTML (1.4.7) RegexTrainer (1.2) ShtirlitzNppPlugin (1.1.2) WebEdit (2.8.1.2) _CustomizeToolbar (5.3)
  • Frequently Asked Questions and Guides (about Notepad++ and this Forum)

    38 Topics
    64 Posts
    PeterJonesP
    Corrupted Session Starting in Notepad++ v8.6.5, it will store session.xml.inCaseOfCorruption.bak next to session.xml, and will automatically use that if session.xml is corrupted. However, if you ever find that you open Notepad++ (especially after an update or a system crash) and find that the files opened weren’t in the same state as when you let them, you can try this procedure: Exit Notepad++ Windows Explorer, go to %AppData%\Notepad++ (or in your appropriate config-file location if you aren’t using AppData for config) Rename session.xml to session.xml--keep Copy session.xml.inCaseOfCorruption.bak to session.xml Run Notepad++ → If it’s now showing the right copy of your files, great! If not, exit Notepad++, delete session.xml, and rename session.xml--keep back to session.xml .
  • Notepad++ discussions that don’t fit in other Categories

    4k Topics
    23k Posts
    guy038G
    Hello, All, Quite by chance, I came across a summary of the features of the old TextFX plugin, and among them, I took another look at the Rewrap feature. First, note that the rewrap feature is generally VERY difficult to simulate as it heavily depends on current text : How do we manage tables, sections, lists with bullets or numbers and possible leading indentation of the folded lines ? Or do we need to join all lines of a text in a single very looooooooong line FIRST, before the wrapping process ? This topic has been discussed many times. see, for example, the following posts below : https://community.notepad-plus-plus.org/post/62750, from @peterjones https://community.notepad-plus-plus.org/post/54147 from mine, where I proposed a generic regex https://community.notepad-plus-plus.org/post/78262 from @ekopalypse, where he proposed a Python script, created with the @peterjones’s help https://community.notepad-plus-plus.org/post/58881 from @michael-vincent, where he proposed a NppExec script If we look at it from the perspective of the old TextFX plugin, it would primarily handle text encoded in ANSI. in other words, text where one char = one byte, for EACH character of the selected text ! So, before the wrapping action, we need to : Use the Edit > Blank Operations > TAB to Space option, in order to replace any tabulation with the corresponding amount of space chars Use the Edit > EOL Conversion > Unix (LF) option. However, I don’t think that a single line-ending is really necessary Use the Encoding > Convert to ANSI option to get an ANSI text Note that the conversion to ANSI could be a problem if it contains some UNICODE characters, absent from the present ANSI encoding. Luckily, the main characters are both present in the different ANSI encodings and in the Unicode encodings, like UTF-8 ! Anyway, all the few non-decoded characters are generally shown as an interrogation mark, within your converted ANSI text ! Now, you may use the Edit > Line Operations > Join Lines option, first, ONLY IF you would like a strict wraping process throughout all the selected text Then, you run the wrapping process which can be, either, regex replacement(s) or a Python , Lua or NppExec script So, I created an ANSI file composed of the license.txt, followed with the change.log file of the N++ v8.9.8 release, named ORG_LF_ANSI.txt Then I copied this file in some new tabs to test the different scenarios ! In this post https://community.notepad-plus-plus.org/post/54147, I proposed this generic regex replacement : SEARCH (?-s)^(?=.{C})(?:.{1,C-3}\x20|.{C-1})\K REPLACE \r\n    ( or \n if Unix files ) Which mimics the Edit > Line Operations > Split Lines option However, it happens that, in last N++ releases, this regex replacement should be, rather : SEARCH (?-s)^(?=.{C})(?:.{1,C-2}\x20|.{C-1})\K REPLACE \r\n    ( or \n if Unix files ) If I choose the value 78 in the Settings > Preferences > Margins/Boder/Edge > Vertical Edge settings dialog, select all the text and use the Ctrl + I shortcut, the file is strictly identical to the other file using the regex (?-s)^(?=.{78})(?:.{1,76}\x20|.{77})\K with \n as replacement ( Verified with ComparePlus v3.00 ) Now, it seemed that in these identical files, in many lines the wrapping process is done before the column 78, even considering a correct wrapping at end of a word ! So, I imagined this new regex replacement, below : SEARCH (?-s)^(.{1,C})(?:[\x20\r\n]*\z|\x20*\R|\x20+) ( with C = 78 in our case ) REPLACE \1\r\n if Windows file   \1\n if Unix file   \1\r if Mac file Finally, run an Edit > Blank Operations > Trim Trailing Space operation ( or SEARCH \x20+$ and REPLACE with Nothing ) And indeed, the New_LF_ANSI.txt file better respects the 78 limit than the Old_LF_ANSI.txt , as shown below : BEFORE : [image: 1792953195290-6b0ae826-a50a-419a-8a21-329f9224e35a-image.jpeg] And [image: 1792953215711-c0580d90-481b-4bac-b261-7cb5ea3b7fe4-image.jpeg] AFTER : [image: 1792953231073-7f5f2cad-1f0c-4706-8465-92c7e99d469e-image.jpeg] And [image: 1792953243107-bcdc3a1f-ec28-4bb2-8628-1480a38906ac-image.jpeg] I also created a New_CRLF_UTF-8.txt file, using the last (?-s)^(.{1,78})(?:[\x20\r\n]*\z|\x20*\R|\x20+) regex and the only differences with the New_LF_ANSI.txt file are : [image: 1792953266356-a0b14962-d8f6-42f7-9635-726c0b814edf-image.jpeg] Because the two chars “ and ” are coded with one byte ( 93 and 94 ) in the ANSI text and coded with three bytes ( E2 80 9C and E2 80 9D ) in the UTF-8 text Now, the wrapping process of both the TextFX plugin and the Python script are quite different : Here is, successively, a screenshot from the TextFX_ANSI.txt file and from the PythonCRLF_UTF-8.txt file : [image: 1792953314340-ab4e772c-e491-444a-9b50-4139e8a8bfcf-image.jpeg] [image: 1792953332013-e42ce4e9-dd27-4de5-af34-d9d60e2b66b3-image.jpeg] You can see, in the change.log section, that lines regarding, obviously, different points are badly concatened in a single line ! Now, if I compare these two files, ignoring all spaces and line-endings, ComparePlus v3.00 returns the picture, below, with differences mostly at end of the license.txt section and in the change.log section ! [image: 1792953374856-40d4c827-f326-4b00-9ad0-8f92fd772b00-image.jpeg] Finally, I created the NEW_LF_ANSI_Strict.txt file : I did, first, an Edit > Line Operations > Join Lines operation which changed all text in a very long line ( 37,410 chars ) Then, I applied the following regex replacement against this file SEARCH (?-s)^(.{1,78})(?:[\x20\r\n]*\z|\x20*\R|\x20+) REPLACE \1\n Here is a screenshot of the resulting file, showing the end of the license.txt section and the beginning of the change.log section [image: 1792954812589-e8139c64-2ec0-45b9-bae7-2a8022451759-image.jpeg] As you can verify, the reading of this text is rather painful :-(( Best Regards, guy038
  • 10k Topics
    55k Posts
    V
    Hi All - I see that Apex Language is missing under language tab
  • Technical discussion of building or contributing to Notepad++ or Plugin codebases

    1k Topics
    9k Posts
    CoisesC
    @rdipardo said: I would point only out that the documented return value of NPPM_GETCURRENTSCINTILLA is not supported by the actual implementation; the FALSE-returning code path contradicts the statement that this API “Returns always True [sic]”. Technically so, though the FALSE value only happens when the caller sends an invalid parameter (LPARAM null, when it should be a pointer to an int). There’s also the additional result value of -1, which is documented, but which a comment in the code says “cannot happen”; the equivalent doesn’t exist in NPPM_GETCURRENTVIEW. What troubled me, though, was that the two calls base their responses on different things. I made some attempt to search the code. As best I could tell, the connection between Notepad_plus::_pEditView and Notepad_plus::_activeView is… haphazard. Even though they sound like they represent the same information in different forms (an integer that represents the main or secondary view as 0 or 1, and a pointer to one of two ScintillaEditView structures that represent the main and secondary views), I can’t “prove” that they always change together. So I cannot be certain that they do not represent different information, used for different purposes. If NPPM_GETCURRENTVIEW were meant merely to supersede the older, clumsier-to-use NPPM_GETCURRENTSCINTILLA, one would expect it to have been based on the same code (if for no other reason, for clarity). I couldn’t find any explanation of why this call was created or what problem it was meant to solve. So I was hoping perhaps someone would know and remember the rationale for the newer call and/or the purposes of the two different variables on which the calls are based, and could tell me either “they’re the same thing, use whichever you like” or “here is the situation in which they can return different results.”
  • Security shouldn’t be the privilege of rich people

    76 Topics
    377 Posts
    PeterJonesP
    same user also posted similar in this issue in comment in #17480
  • All the issues (publications/questions) about binary translation

    76 Topics
    480 Posts
    U
    @xomx Thank you very much for the work you have done, which will lead to improvements in Notepad++ in the future. I am very grateful to you.
  • Say fuck to Notepad++ here, and only here

    98 Topics
    568 Posts
    Michel ChasseyM
    Re: You’ve a lot of reasons to hate Notepad++
  • No support request and bug report here, only unconditional praise and worship

    3 Topics
    9 Posts
    F
    @Maddox-Armstrong said: @FreeMeow I goon to Notepad++ :P 666还有蜥蜴人
  • Share personal tips and cool uses for Notepad++, and similar

    63 Topics
    243 Posts
    David Brigden52D
    Seems they decided that it they couldn’t be the heroes, rhat they would be the villains.
  • Computer/Programming Jokes are welcome here

    59 Topics
    190 Posts
    Lycan ThropeL
    @xomx , Dave Bowman: "Open the pod bay doors, HAL. " HAL: “I’m sorry, Dave. I’m afraid I can’t do that.” [image: 488a3017b34fe587.png]