• 0 Votes
    2 Posts
    48 Views
    PeterJonesP

    Do not read this if you don’t want a critique of your ideas.

    Currently, Notepad++ manages plugin configurations by storing all plugin-related configuration files in a shared, common “Config” directory into the main N++ > Plugin dir.

    Notepad++ plugins manage their own configurations, most using the suggested plugins\Config\ directory or a subdirectory thereof.

    Leftover Files & Conflicts: Sometimes, uninstalling plugins leaves residual files, which may cause clutter or other issues.

    Alas, clutter is the bane of uninstallations.

    Difficulty in Transfer & Customization: Moving individual plugins between different Notepad++ versions or portable setups is cumbersome, as it involves manually managing the shared Config directory and if the user doesn’t know what are the files related to that specific plugin is not always easy to transfer the customization done from the source to the destination.

    If the user doesn’t choose to learn the configuration structure, that could be difficult.

    Risk of Overwrites: Multiple plugins may use files with identical names (e.g., Config.ini), risking overwrites and configuration corruption or incompatibilities due to overlapping configuration files names.

    I obviously don’t know all plugins, but could you actually name any plugins that use any naming scheme as horrific as config.ini without also including their own subdirectory? Or any two plugins that actually have conflicting names without using their own subdirectories? Or is this just a hypothetical problem that doesn’t exist in the real world?

    Complex File Management: Finding specific plugin settings within the shared Config directory is challenging, especially when troubleshooting or modifying settings.

    Most plugins name their config files after the plugin (or an abbreviation thereof), and any plugin worth its salt should document the name of the configuration file(s), at least if it’s not patently obvious. (The worst offender I’ve seen is NppExec, which uses names like NppExec.ini and npec_cmdhistory.txt and npes_last.txt.)

    Each plugin should have its own dedicated directory structure, for example:

    Plugins/ └── PluginName/ └── Config/ └── Plugin configuration files

    The best plugins already use their own subdirectory of the Config directory, so Plugins\Config\PluginName\____.xyz

    It makes more sense to me for PluginName to be a subdirectory of Config than the other way around.

    Cleaner Uninstallations: Removing a plugin involves just deleting its entire directory, ensuring no clutter due to leftovers will happen.

    And most plugins involve just deleting their one config file, or their Config\PluginName directory (again, NppExec being the worst offender in this regard)

    Reduced config files Overwrite Risks: Separate Config sub-directories prevents configuration files from different plugins overwriting each other.

    Again, in my experience, the risk is 0, after more than a decade of plugin use. YMMV.

    Support for Selective Transfers: Users can copy/transfer specific plugins and their settings without affecting others.

    Irrelevant, as the same is true today.

    Config Preservation on Uninstall: Incorporating an option in the Plugin Admin/Manager

    Why mention the ancient and incompatible Plugin Manager. It’s irrelevant to today’s Notepad++.

    to retain configuration files during uninstallation of one or more plugin

    That’s literally what happens now.

    for example in case of plugin dll file corruption, will allow quick reinstallation with previous settings completely intact

    delete the DLL; install again.

    Granular Transfer & Backup: at the moment it is possible to import just the dll file (one at a time) with the import plugin function, but no config or customization files are imported

    I wish Don had removed that useless menu command when he added the builtin Plugins Admin. The only reason it existed was for people who didn’t have the old Plugins Manager plugin installed to manage their plugins in the pre-v7.6-era. And now, and even then, it was only useful, as you say, for DLL-only plugins.

    With Plugins Admin, there is no reason for that old “import” command.

    So this will also facilitates transferring individual plugins between computers,

    You keep using this phrase. i can understand copying config files between computers, but I would always prefer installing plugins through the Plugins Admin,

    And you do understand that for most people (those who install Notepad++), the plugin DLL goes in the hierarchy of the executable, whereas the plugin configs go in the AppData hierarchy – so it’s two separate hierarchies that you’re dealing with, so not as easy as you are implying.

    Improved Directory Structure: Implementing this as standard philosophy,

    As a philosophy, with the caveat that the order should be config\PluginName\, I am fine with it. Your post implies much more than a philosophy.

    would be a significant step forward in plugin management,

    hehehehe

    reducing conflicts among plugins

    again, name one

    There’s my point-by-point analysis.

    And then, of course comes the technical aspects that you’ve ignored:

    Notepad++ gives easy access to %AppData%\Notepad++\Plugins\Config\ (or that installations’s equiavlent) as the root directory that it suggests for plugins to use by providing a message NPPM_GETPLUGINSCONFIGDIR… But whether or not a plugin uses that is not up to Notepad+++. Notepad++ does not and cannnot enforce where plugins put their configs. It is completely and totally and 100% impossible for Notepad++ to enforce that: Plugins can write files (config or otherwise) in any directory that has write permission, and there is nothing Notepad++ can do to stop that. If Notepad++ were to change what that message returned (for example, returning %AppData%\Notepad++\Plugins\Config\PluginName\ for a normal installation), it could break existing plugins (whether they are currently using that message for getting access to their own , or abusing that message to find a directory that’s relative to Notepad++'s configuration directory, since Notepad++ doesn’t provide a message for that one) – and breaking existing plugins, especially in such a drastic way, should only be done with exceedingly good reason.

    Every time Don has broken backward compatibility, it has created months or years of difficulties with plugins, and headaches for all the regulars who help people here and in GitHub. I sincerely hope you are never able to convince someone to put in that feature request into GitHub for you, and that Don never gets the idea in his head to change the behavior of the existing message.

    If, on the other hand, you wanted to suggest to plugin authors that they voluntarily use NPPM_GETPLUGINSCONFIGDIR\PluginName\ to house their plugin’s config files, I am all for it. (I would especially appreciate if someone can convince NppExec to move all its config files to a dedicated subdirectory).

    (And if nothing else comes of it, you reminded me that I preferred that hiearchical structure, so I have given myself a TODO to move my ConfigUpdater plugin’s configuration and log files to a subdirectory, rather than just relying on the ConfigUpdater prefix in the names to help keep things clean.)

    update: caveat: this is just my opinion; I don’t speak for everyone or even anyone here, nor for the Developer. I am just expressing my own vehement disagreement with the “forcing” that was strongly implied by the original post, and making it clear that I will argue against any breaking change with regards to this directory for existing plugins making use of the NPPM_GETPLUGINSCONFIGDIR in the intended manner

  • Question(s)

    General Discussion
    23
    0 Votes
    23 Posts
    4k Views
    CoisesC

    @mkupper said in Question(s):

    I verified that at least for my current setup that the zoom level seems to have no affect on the printed results.

    Same here. Perhaps I was unclear.

    If I leave the zoom at default and adjust the font size for Default Style to be large enough for me to read easily on my monitor, I would set a font size of 14 or 16 points with Liberation Mono. (14 is bit smaller than I like, 16 is too big, 15 isn’t an option.) Those are too large for printing, though.

    If I set Default Style to 12 points, printing is reasonable. If I then zoom in 3 steps, I’m just about where I want to be to read easily on the screen — without affecting printing.

    The question I was answering was, “Why not just change your default font size?” Because that does affect printing (and, though I hadn’t remembered until I tried just now, also isn’t as fine-grained as zoom).

  • NppMenuSearch version 0.9.7 available

    Notepad++ & Plugin Development
    13
    3 Votes
    13 Posts
    383 Views
    Vitalii DovganV

    Here is a funny scenario:

    type “menu” in the Search textbox; select Plugins -> NppMenuSearch -> Menu Search… press Enter.
    As the result, the Search textbox does not have a focus!

    Well, I know this is a strange use-case: call itself, but anyway :)

  • [New Plugin] MultiReplace

    Notepad++ & Plugin Development
    69
    3 Votes
    69 Posts
    28k Views
    wonkawillyW

    IMHO the features of this plugin should be implemented directly into N++, maybe adding a further tab page to the current Search and Replace dialog to include the features of this plugin and its future evolution.

  • 1 Votes
    11 Posts
    615 Views
    Jonathan JohansenJ

    Update: when I inspect the WndProc messages that come through $"{m.Msg} {m.WParam} {m.LParam}", I note these (mostly tangential, but I’d like to document them):

    Pressing ‘normal’ keys (e.g. a-z, arrows, 0-9, punctuation) does not send a message to the ElementHostEx, but instead (after I turned the volume up on my laptop), it somehow triggers a bell sound. Mouse click comes through with 528 513 36634781 and 33 723656 33619969 Switching to another program sends 8 0 0, and switching back to NPP sends 1024 0 0 Pasting into the TextBox works, but does not trigger any messages. Similarly for copying, deleting and backspacing. Opening the WPF About window sent 8 1116900 0

    I’d like to convert the msg id to a string, I’m not familiar with their values. But there still aren’t that many messages, so perhaps I haven’t set up the dock panel correctly. I’ll try the same thing in the existing Forms version and see what comes up for comparison.

  • Notetab++ novice questions

    Help wanted · · · – – – · · ·
    2
    0 Votes
    2 Posts
    69 Views
    PeterJonesP

    @mapsonx said in Notetab++ novice questions:

    Notetab++

    I think you mean “Notepad++”

    I’ll answer your last one, first, because it’s not related to the others:

    If I add content to a new file, I am not prompted to save/dismiss, but when i open notepad++, that content is still there?? Is there a filw created. I’ve never experienced that type that of behavior before.

    That’s Settings > Preferences > Backup > ☑ Enable session snapshot and periodic backup option being turned on: as described in the backup settings in the User Manual, in that mode, Notepad++ will periodically take a snapshot of any edited files, and even remember those unsaved changes the next time you restart Notepad++. I, personally, am not a fan, because it lulls people into foolish behavior (like never saving/naming a file). However, that has been Notepad++'s default behavior for years… and it’s been there long enough that Microsoft took a page from Notepad++'s book (because in the “app” version of MS notepad that gets shipped with Windows 11 – the version that also now has tabbed editing, not the old win10-and-earlier one-window-per-file – now also keeps your unsaved changes from run to run).

    If you don’t want to keep unsaved changes, and you want to be prompted before exiting Notepad++, you can turn off that option: congratulations for wanting to control your data. To better understand this feature, and other backup-related issues, I highly recommend reading the backup settings in the User Manual and this forum’s backup FAQ, just to get a better handle on what’s going on.

    Now to your first question:

    1 I have both portable versions, from here and portableapps.

    Downloading from the official website is great. Downloading the portableapps version is a bad idea, because they edit the binary without saying what they change (in violation of the open-source license, IMO); we cannot guarantee that the portableapps version behaves in any way, shape, or form like the official Notepad++ release. Use portableapps at your own risk (or better, don’t use it, ever).

    How do I update the version form this site and maintain tre current settings. I tried to keep the current .xml files bu that did not help.

    It helped, but you might not have kept all the right files. The official Online User Manual for Notepad++ has a section devoted to upgrading the portable edition: https://npp-user-manual.org/docs/upgrading/#upgrading-a-portable-edition

    Toolbar size and labels. I want the larger toolbar, and if possible, button labels., but aI like the fancier icons I don’t know why the toolbars look different.

    For builtin icons, the “large” icons only come in the new “Fluent UI” look, hence the names in the Settings > Preferences > Toolbar section (was a sub-section of the General tab, before v8.8.0) are “Fluent UI: large” and “Filled Fluent UI: large”. If you have one portable set to “standard icons (small)” and another to “Fluent UI: large”, of course your toolbars are going to look different.

    Also, this is strange. Upon opening this sites version after I trying to update it, both toolbars were now identical to portableapps, and it had the same content as the portableapps version.

    When you updated your portable copies, you presumably overwrote all your config files, including your choice of which toolbar icon set you were using, so they went back to the same. (Though I’m surprised they went back to the “Fluent UI: large”, which your screenshot appears to be showing, because

    Are they cloud connected? Yes, I know, doesn’t make sense.

    No. (Well, not unless you had set the Cloud settings in the preferences dialog, and set them both to the same cloud folder.)

    For builtin toolbar icons, your only choices are big/small and hollow/filled versions of the Fluent UI icons, or the old small-only standard icons. (That “standard icon” set has not, as far as I can remember, been published in a large-icon version. In Notepad++ 7.9.5 and earlier, before there were the “Fluent UI” icons, there were the ancient “small icons” and “big icons” and the “standard icons” (which were small, even then); I just double-checked v6.5 from 2013, the oldest copy I have downloaded right now, and the “standard” ones were only small, even then.)

    You can customize the icons, if you don’t like any of the four Fluent options or the “standard icon” set. The Toolbar Customization section of the User Manual explains how to do that, and even provides a link to a zipfile with a copy of the ancient “big icons”, which are now called the “legacy” icons. But that download doesn’t come with big versions of the “standard icons”, either… so if that’s what you wanted, you’d still be out-of-luck. It might be possible to use image editor software and grab the “standard icons” out of the Notepad++ source code, and scale them from 16x16 .ico files to 32x32 .ico files – but I don’t know of anyone who has done that and made them public.

  • Note++ file location

    General Discussion
    3
    0 Votes
    3 Posts
    94 Views
    JE RamirezJ

    @PeterJones, thanks. Of course, it’s Notepad++, a little too fast with the typing and posting of the question.

    Thanks for the paths.

  • System Requirements

    Help wanted · · · – – – · · ·
    3
    1 Votes
    3 Posts
    79 Views
    S

    @PeterJones
    Ok thanks for your help. Probably will just use the last known supported version. Nice to know though that there may be a way to use a newer version.

  • Sorting data

    Locked Help wanted · · · – – – · · ·
    7
    0 Votes
    7 Posts
    87k Views
    Robert PickeringR

    @Makwana-Prahlad
    Thank you genius!

  • 3 Votes
    15 Posts
    1k Views
    CoisesC

    @Vitalii-Dovgan said in Announcement: NPPM_GETOPENFILENAMES and related are being deprecated in v8.8.2:

    My last question was rather related to NPPM_GETFULLCURRENTPATH, NPPM_GETCURRENTDIRECTORY and the other messages from the same family. These messages:

    are internally limited by MAX_PATH; do not provide ability to request/retrieve the length required for the returned path/name.

    See the first part of this comment and the first part of the reply by the maintainer of Notepad++.

    The MAX_PATH limitation is present in the file handling routines of Notepad++, not just the interface for these messages. As I read that reply, Don has rejected (for now, at least) consideration that the MAX_PATH constraint might someday be removed. If you know MAX_PATH is enough, there’s no need to request the actual length ahead of time.

    I agree that there is some inconsistency in what is considered appropriate for deprecation, but I return to the observation that it will always be possible to screw up calling a C interface, and there were and are compelling reasons to keep the plugin interface as a pure C interface. (If we could pass a std::wstring or a std::vector<std::wstring> the whole problem would go away.) It’s a judgement call what is “too error-prone.” Not worth all that much debate.

  • 0 Votes
    9 Posts
    448 Views
    PeterJonesP

    @Coises said in C++ DarkMode dialogs -- not all controls inherit the mode:

    is an oversight? Would it be worth a feature request issue?

    Probably.

    I just did an experimental build of N++, calling subclassTabControl from an "if WC_TABCONTROL, and it seems to work – in that, whether or not my plugin subclasses on its end, if I have that call in N++, it makes the tab control properly follow N++ DarkMode settings.

    I’ll create an Issue (complete with making a branch of my plugin where I don’t manually subclass, so there can be easy steps-to-reproduce), and then submit a proposed PR to fix it.

    update:

    Issue: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/16668 PR: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/16669
  • 1 Votes
    27 Posts
    7k Views
    Liam WrightL

    @guy038 said in Maintain Indent While Pasting Multiple Lines:
    This thread is a bit dated, the setting is now under
    Settings > Preferences > Indentation
    Everything else is as @guy038 said.

  • 0 Votes
    4 Posts
    196 Views
    Mark OlsonM

    If you know the hex code for a symbol, I prefer to use the HTMLTag plugin to automatically convert XML character encodings into their corresponding characters (e.g., &#10; will automaticaly convert to the LF character after you hit SPACE).

  • How to highlight text?

    General Discussion
    12
    0 Votes
    12 Posts
    147k Views
    PeterJonesP

    @Farhan-Yazid said in How to highlight text?:

    Hi, any shotcut button to assign the highlight funtion?

    By default, the Style One Token / Style All Occurrences of Token commands do not have keyboard shortcuts.

    But if you use Settings > Shortcut Mapper, set Filter = style, you can choose any of them and use Modify to set a keyboard shortcut for that token-highlight style.
    1ccdb944-484d-4a28-9bc6-c301a59b0478-image.png

    (In case it’s not clear: Style all using Nth style in that dialog corresponds to Search > Style All Occurrences of Token > Using Nth Style [or the right-click context menu equivalent]; Style one using Nth style corresponds to Search > Style One Token > Using Nth Style [or the right-click context menu equivalent]. And for further clarification: the Search > Mark All that @Alan-Kilborn mentioned 6 years ago is the same as what’s now known as Search > Style All Occurrences of Token)

  • 0 Votes
    6 Posts
    705 Views
    gerdb42G

    @Berend-Engelbrecht
    Would you mind sharing your graphics adapter information (Brand/model/Driver Version etc.) in this thread? If we can collect as many infos as possible about Graphic adapters affected by the DirectWrite problem, it might show a pattern allowing clues about the cause.

  • 2 Votes
    17 Posts
    2k Views
    mkupperM

    @guy038, @Alan-Kilborn, and others

    Congratulations on discovering that Ctrl+F3 trick to bypass the 1024 character selection to the Find-what field limit.

    That prompted me to do a test.

    I created a 5000 character long ruler line with ________10________20________30 … ______4980______4990______5000. I duplicated that line a few times. I put the caret on one of the lines and did Ctrl+F3. Notepad++ immediately jumped to the next line and there’s a bunch of text selected. I did Ctrl+C to load the selected text into the copy/paste buffer, and pasted to a blank line in the area below my list of 5000 character rulers. I saw that the new line is 2047 characters long and runs from ________10________20________30 … ______2030______2040______2

    My first thought was, “wait, I thought the search limit was 2046 characters. Apparently the quick search thing using Ctrl+F3 will search for up to 2047 character patterns.”

    I verified that a reverse quick search using Ctrl+Shift+F3 also allows or up to 2047 character patterns.

    I moved the caret to a blank line (it can be any blank area) and did Ctrl+F to activate the normal find dialog. I see that Find what is populated and that it has 2027 characters in the Find what field. I click [Find Next] which selects some stuff, Esc to close the dialog, Ctrl+C to load the text I found into the copy/paste buffer, and paste that to a new line.

    The search using [Find Next] matched the first 2046 characters that were in the Find-what field.

    Anyway, that’s excellent that we can have regular expressions that are up to 2046 characters long and to get them into the Find-what field without using copy/paste. The procedure will be to:

    Select the long regexp Crtl+F3 or Shift+Crtl+F3 Move the caret to a blank area so that the caret is not within nor touching a word. Crtl+F and the Find-what field will be populated.

    This will be handy as something I frequently do is to load the replacement string into the copy/paste buffer, select the search pattern, Ctrl+H, tab down to the Replace with field, and Ctrl+V to fill in the replacement pattern.

    That works for search patterns for up to 1024 characters and now with @guy038’s Ctrl+F3 trick I can get around the 1024 character limit and don’t need to use the copy/paste buffer to do that.

    A few weeks ago I took a look at the Notepad++ source code to better understand the 1024 and 2046 character limits.

    The 1024 character limit comes from the default value for the Minimum size for auto-checking in-selection setting. It’s a Notepad++ bug as that setting is unrelated to the the limit for auto-loading the selection into the Find what field. Unfortunately, the fix is not easy as the internal constant that has the 1024 is used in several different way.

    The 2046 character limit seems to be either a different Notepad++ bug or a Scintilla limit or bug. The buffers that hold search and replace patters are 2028 16-bit characters long. The pattern is NUL terminated meaning we should be able to have up to 2047 character long patterns. The code has an extra subtraction somewhere that causes 2047 to be 2046. The extra subtract seems to be buried in the Notepad++ logic that’s dealing with Scintilla.

    While looking at the 2046 character issue I saw that the pattern buffer uses 16-bit wide characters. I verified that you can search for up to 2046 16-bit characters such as ⛱⛱⛱...⛱⛱⛱ (U+26F1). If you search for an extended Unicode character such as 🦎🦎🦎...🦎🦎🦎 (U+1F98E or the surrogate pair \x{D83E}\x{DD8E} ) then you will be limited to 1023 characters.

    I did discover some weirdness with Ctrl+F3.

    Using Ctrl+F3 when the caret is within a short string such as ⛱⛱⛱⛱⛱⛱⛱⛱ seems to do nothing. The text is not loaded into the Find what field. I suspect that ⛱ is not a word character. ❽ (U+277D) is a word character but Ctrl+F3 gets confused by ❽❽❽...❽❽❽ as it seems to be selecting and searching for the entire line. I was able to do 5000 character search matches using long strings of ❽❽❽...❽❽❽. As I knew the buffers are 2024 words long I suspected there was a buffer overflow.
  • Fighting Malicious Ads on Download Pages

    Pinned Security
    22
    3 Votes
    22 Posts
    4k Views
    Mark OlsonM

    @donho
    v8.8.1 looks good to me!

    b4ca5135-c6fa-4b98-9223-374ae6b5204a-image.png

  • 1 Votes
    34 Posts
    10k Views
    EkopalypseE

    @Denis-Rionnet

    This usually works quite reliably as long as the underlying file system supports it.
    Where are these files stored and which file system is used?

  • 0 Votes
    2 Posts
    121 Views
    EkopalypseE

    @Steve-Lawther

    I think that the EnhanceAnyLexer plugin and a corresponding regex, e.g. Item\d+\w+ would be easiest here.

  • Notepad++ funciona en linux?

    General Discussion
    5
    0 Votes
    5 Posts
    618 Views
    EkopalypseE

    @ANDRES-MARIANO-MARTINEZ-PEÑA

    Yo sólo utilizo versiones portables, es decir, versiones que no necesitan ser instaladas, sino que simplemente se copian en un directorio.
    Para instalar un paquete de instalación sin entrada, hay que pasar el parámetro /S a setup.exe. https://npp-user-manual.org/docs/command-prompt/#installer-options.

    I only use portable versions, i.e. versions that do not need to be installed, but simply copied to a directory.
    To install an installation package without input, you have to pass the /S parameter to setup.exe. https://npp-user-manual.org/docs/command-prompt/#installer-options.