• Read This First

    Pinned Locked
    1
    5 Votes
    1 Posts
    2k Views
    No one has replied
  • New API to fix eventual regression regarding SCN_MODIFIED for some plugins

    Pinned
    32
    2 Votes
    32 Posts
    8k Views
    ThosRTannerT

    Just a quick question - when will the plugintemplate repo be updated to include the new message?

    Thanks

  • Announcement: NPPM_GETOPENFILENAMES and related are being deprecated in v8.8.2

    Pinned until 6/30/25, 3:12 PM
    11
    3 Votes
    11 Posts
    633 Views
    CoisesC

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

    What about the backward compatibility?
    Let’s imagine:

    One makes these changes to a plugin. Right after that, this updated version of the plugin requires at least Notepad++ 8.8.2 and will not work with previous versions of Notepad++.
    Alternatively, each plugin developer must still keep NPPM_GETOPENFILENAMES for earlier versions of Notepad++ and also add the new code for Notepad++ 8.8.2 and above.

    A valid concern, but it doesn’t apply in this case. The reason for that lies in the details:

    Existing plugins will continue to work as the message is only being deprecated, not removed; binary compatibility is not affected.

    New plugins will still work with older versions of Notepad++, as the recommended replacement for this message is a code sequence using messages that were already available; no new functions are being added. The NPPM_GETOPENFILENAMES* messages were a way to get open file names with less code, and that’s what’s being deprecated. The “long way” hasn’t changed; it’s just been decided that the increased risk of error when using the “short way” isn’t justified to save a few lines of plugin code, so new development should not use it.

    What will be affected is the backward compatibility of source when updating to the new header files. If you have a working plugin that uses NPPM_GETOPENFILENAMES, NPPM_GETOPENFILENAMESPRIMARY and/or NPPM_GETOPENFILENAMESSECOND and you update the Notepad_plus_msgs.h header, the constants for those message identifiers will no longer be defined. (They are, instead, defined for the same identifiers with the suffix _DEPRECATED.)

    So only plugin authors who need to update the list of messages (which would be only if they are using a new feature, which of course would not be backward compatible) will be affected at all; and they can either work around it by adding the _DEPRECATED suffix or by replacing the code that uses those messages with the recommended alternative.

  • Hi and I'm working on a WPF fork of NppCSharpPluginPack

    1
    0 Votes
    1 Posts
    5 Views
    No one has replied
  • How to create a C# plugin?

    29
    0 Votes
    29 Posts
    2k Views
    EkopalypseE

    @scampsd

    Although the registry is actually the Windows standard, I would personally avoid it and rather use the plugin config directory. Can be determined via NPPM_GETPLUGINSCONFIGDIR.
    However, I would create a subdirectory with the plugin name and add a json, xml, toml … file there.

  • Script To Fix ASCII->Hex Byte Limit

    5
    0 Votes
    5 Posts
    325 Views
    Mark OlsonM

    It occurs to me that I could implement a feature in HugeFiles that would load a chunk of a file, run a plugin command on that chunk, append it to a new file, and repeat for each chunk.

    Such a feature would AFAICT eliminate the need for scripts like the one posted above.

    If this post gets at least 4 upvotes, I will consider implementing this feature. I expect it would be a lot of work but potentially useful.

  • Hash errors installing Analyse plugin

    2
    0 Votes
    2 Posts
    116 Views
    mkupperM

    @D-V, please post your Notepad++ debug info. I tested installing the Analyse plugin and it installed without any errors on Notepad++ v8.8.1 (64-bit) and also Notepad++ v8.8.1 (32-bit).

    You get the debug info from Notepad++'s ? / Debug Info ... menu.

    To post your debug info here in the community forums use </> on the forum’s menu bar and then replace the code_text that </> generates with the debug info.

  • [New Plugin] MultiReplace

    68
    3 Votes
    68 Posts
    19k Views
    Thomas KnoefelT

    Version 4.3.0.26 has been relased and will be included in the next Notepad++ update. This update is mostly about performance improvements.

    Implemented updates:

    Replace matches: Allows targeted replacements using match indexes like 1, 1,3 or 2-5.

    List Statistics: Displays counts for active, total, current, and selected entries below the list.
    (Disabled by default – enable via ListStatistics=1 in the INI file.)

    Use Variables Performance: Significantly faster execution of replacements using the “Use Variables” option.

    Docs and Language: Minor documentation and wording refinements.

  • 2 Votes
    1 Posts
    93 Views
    No one has replied
  • Display markdown outline view through Functionlist

    15
    2 Votes
    15 Posts
    4k Views
    A

    @MAPJe71 I like your solution. Unfortunately I get all comment lines from my (python) code fences into the function list. I tried some things without success, it seems that my skills in regex are limited.

  • 0 Votes
    4 Posts
    407 Views
    rdipardoR

    @martin-honnen said in Any idea why self compiled plugin works on "normal" Windows 11 but doesn't in Windows Sandbox?:

    [T]he used software needs the Visual C++ runtime …

    Runtime DLLs are not needed if you link them statically, i.e., use the /MT linker option or put the
    <RuntimeLibrary>MultiThreaded</RuntimeLibrary> property under <ClCompile> in the *.vcxproj file.

    See https://learn.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library

  • XMLTools with XSLT 3.0 support

    1
    3 Votes
    1 Posts
    93 Views
    No one has replied
  • New polls have arrived, hurry, only while stocks last.

    1
    2 Votes
    1 Posts
    97 Views
    No one has replied
  • [New Plugin] NppOpenAI

    45
    8 Votes
    45 Posts
    34k Views
    Richárd StockingerR

    Hi everyone,

    @andrea-tomassi’s PR was really helpful, and it was accepted of course, moreover this gave the project a great shake-up! Of course, the update has also been added to the nppPluginList repository and was recently accepted.

    If someone doesn’t want to wait, manual installation is available as usual with the v0.5 release (unzip the appropriate ZIP file to the plugins/NppOpenAI folder):
    https://github.com/Krazal/nppopenai/releases/tag/v0.5.0

    The last few months have been very stressful for me (there was a nationwide update in the Hungarian .HU domain name registry, which also affected our developments too), but now things are starting to calm down and I hope to have more time for the plugin. ✨

    Once again, thank you to those of you who are trying out the plugin, and I am very grateful for all the contributions!

  • Opened files fully expanded

    3
    0 Votes
    3 Posts
    284 Views
    mpheathM

    @Christian-Hoffmann

    Tested v8.8.1 being quite a new and clean portable and reopens new 1 folded

    Set as Python language folded at if on line 1. Programmatically regarded as line 0.

    new 1:

    if a: b

    session.xml:

    <?xml version="1.0" encoding="UTF-8" ?> <NotepadPlus> <Session activeView="0"> <mainView activeIndex="0"> <File firstVisibleLine="0" xOffset="0" scrollWidth="39" ... snipped ...> <Fold line="0" /> </File> </mainView> <subView activeIndex="0" /> </Session> </NotepadPlus>

    See the xml tag Fold. Folding is saved and restored.

    More details might be needed to solve your issue, like version being used … as ? -> Debug info... shows.

  • AndroidLogger.v1.4.3.1 added super features welcome your tests!

    6
    0 Votes
    6 Posts
    487 Views
    Alan KilbornA

    @glandon said:

    i try to get users clear

    This six-word thing is by far the most important thing you could do.

  • Workspace with Monospaced Fonts

    2
    0 Votes
    2 Posts
    200 Views
    EkopalypseE

    @ptrstack

    How difficult is it to make the folder tree …

    depends on how complex you want your solution to be.
    I would probably just change the font in the resource file and use the WM_SETFONT call in WM_INITDIALOG after initializing the treeview component. Depending on the size, you may also need to call TVM_SETITEMHEIGHT. So this would be 3 lines of code, I guess.

  • Plugin; irregularities with inplace editors closure

    13
    0 Votes
    13 Posts
    771 Views
    K

    @PeterJones Peter, oh sorry - i hadn’t realized it this morning in the hurry, my bad!

  • Feature Request: Insert Current Date and Time Like Excel

    2
    0 Votes
    2 Posts
    147 Views
    PeterJonesP

    @أحمد-حمدي-حمدين said in Feature Request: Insert Current Date and Time Like Excel:

    Hi Notepad++ Team,

    I’d like to request a simple yet useful feature:

    Feature already exists. No request needed. (If a request were needed, this isn’t the right place, as our FAQ makes clear)

    Currently, Notepad++ does not appear to have a built-in shortcut or menu option for this (the old “Edit → Time & Date (F5)” seems to be missing in newer versions).

    Edit > Insert > Date/Time (…) exists. It doesn’t default to any keystroke, but Shortcut Mapper can remedy that.

    User Manual:

    https://npp-user-manual.org/docs/editing/#edit-menu https://npp-user-manual.org/docs/preferences/#multi-instance-and-date

    By the way, you claimed,

    the old “Edit → Time & Date (F5)”

    That never existed in Notepad++. MS notepad.exe used that menu name and hotkey, but never Notepad++. Don’t believe everything that hallucinating AI tells you

  • Shortcut mappings are transferred to a plugin's activity

    10
    0 Votes
    10 Posts
    537 Views
    K

    @Coises : My thoughts about the topics:

    “IsDialogMessage” (“standard Windows way of separating messages that are directed to a non-modal dialog or any of its child controls from the normal flow through the message loop”) and “WM_GETDLGCODE” (“If keyboard focus is in a control, that control will decide which keys it wants and which keys should be processed as container navigation”):

    Basically the Lazarus component library (LCL) acts as a fully qualified message loop system that is able to react on nearly each message and notification within a windows message loop, nearly all WM_, eg. WM_KEY(down,press;up;…) can be detected and processed (*).
    Normally it’s hard to detect any lacks here imo. However i initially looked into that hierarchy, as here, like everywhere else in the programming world, some business rules might have been come into play for to negate a message (like eg. an app can do when it nulls out an Enter Key for to suppress a beep; Key := #0).

    (*) At least in the win32 “widgetset” as one within all those platforms: all-interfaces win32-interface
    It depends a bit on whether someone compiles “cross-platform” or for an OS-specific build, ie. “win32”):

    But - right, maybe that is it what matches your pointing! - there is no explicit call of “IsDialogMessage” itself within the LCL hierarchy (i grepped here)!
    But it is a function that is known and predefined in the free pascal compiler system (FPC) though. And, so, there really low-level based apps can be written (and do exist) without the LCL, using basic TranslateMessage, DispatchMessage etc. which are calling “IsDialogMessage” explicitely.
    “Matches your point” in so far as it makes understandable why without NPPM_MODELESSDIALOG (which calls “IsDialogMessage”) “most shortcut keys will be intercepted by Notepad++” - with other words, let NPP act as a gate-keeper for messages here.

    In sum, with your explanations it’s much more understandable now for me what’s going on (hope so).
    And why “RegisterForm” (-> the NPPM_MODELESSDIALOG-Send) in the docking formcreate now lets work again F2 (and Ctrl-c, Ctrl-v & co.) by the plugin. Otherwise the NPP gate-keeper would decide itself and won’t pass messages to the plugin that it claims for own usage, e.g as defined in the shortcut mapper.

    I hope I’m somehow on the right track here :-)
    I’d use this solution, it does indeed remove the issue :-)
    (i have to sort out a few subsequent flaws now, but those are assumingly outside the current thread)