Categories

  • Announcements regarding our community
    272 Topics
    5k Posts
    Lycan ThropeL

    @donho ,
    That fixed that issue, thanks.

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

    36 Topics
    59 Posts
    PeterJonesP
    SubFAQ: Using Plugin Commands in Macros

    Plugin commands (even for the default plugins, like MIME Tools) are not macro-recordable. However, with a bit of effort on your part, they can be macro-playable (with some limitations).

    The reason that they aren’t macro-recordable is that macros make use of the menu command ID for storing which command to use. For built-in menu commands, those commands all have a fixed ID, so from one run of Notepad++ to the next, they will always keep the same menu command ID. Since the plugins available and taking up menu space can be different from run-to-run in Notepad++, the application actually assigns the menu command IDs for each plugin dynamically. Thus, if you install or upgrade a plugin such that the number of plugin menu commands change, the next time you run Notepad++, other plugins will possibly get different command IDs compared to the previous run (depending on what order Notepad++ processes each of the plugins).

    Due to this dynamic menu command ID, Notepad++ would not be able to guarantee that a command ID it records for the macro would work for the same command the next time Notepad++ is run, and thus does not record macro commands.

    There are two workarounds:

    Use a scripting plugin (like PythonScript) instead of Macros to do your automation (because scripting plugins usually have helper commands that can search through the menu to be able to run even plugin menu commands). This adds overhead, and you might have to learn a new programming language, but it gives you a lot more power.

    Cheat the macro system. This will be described below, but has the downside that you have to manually edit the macro XML, and you might have to tweak it if you install or upgrade plugins.

    How to Cheat the Macro System

    As I said earlier, the macros are dynamic, depending on the order that Notepad++ processes the plugins and how many menu commands each plugin uses. However, for any stretch of time where you don’t install any new plugins or upgrade existing plugins, Notepad++ will process your plugins in the same order, so they will get the menu command IDs for each run.

    So to cheat the macro, you can snoop to find the current menu command ID for each action, then manually edit the macro’s XML, then restart Notepad++, and the macro should work until the next time you install or update a plugin.

    Let’s assume that you want to have a macro that will Select All, then Plugins > MIME Tools > Base64 Encode with Padding, then Select All, then Copy the results to the clipboard. (inspired by this discussion). Record this sequence and save it as RecordedMacro with no assigned keyboard shortcut. (Just for this example; the names and shortcuts are obviously up to you for your real task.)

    To snoop the menu command ID, I recommend the NppUISpy plugin. So install that plugin, then run it’s Spy! command (either from its menu or toolbar icon).

    For example, with my current plugins, Spy! tells me that Base64 Encode with Padding is Command Id = 22064

    Open %AppData%\Notepad++\shortcuts.xml and edit your recorded macro.

    It would start out as something like this:<Macro name="RecordedMacro" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="0" message="2013" wParam="0" lParam="0" sParam="" /> <Action type="0" message="2013" wParam="0" lParam="0" sParam="" /> <Action type="0" message="2178" wParam="0" lParam="0" sParam="" /> </Macro> That is the Select All command twice and the copy (skipping the plugin command between the two Select All. You would need to edit it to be like:<Macro name="RecordedMacro" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="0" message="2013" wParam="0" lParam="0" sParam="" /> <Action type="2" message="0" wParam="22064" lParam="0" sParam="0" /> <Action type="0" message="2013" wParam="0" lParam="0" sParam="" /> <Action type="0" message="2178" wParam="0" lParam="0" sParam="" /> </Macro> which puts the 22064 that I found with NppUISpy in between the two Select All instances. Please note that many recorded editor commands (like copy, paste, home, etc) will be type="0" with the scintilla command in the message="..." field; whereas menu commands like the plugin command will be type="2" and put the menuCommandID into the wParam="###" field. See the user manual’s <Macro><Action> details for more. Save the shortcuts.xml and restart Notepad++.

    At this point, running your macro should do the select all, the conversion, the select all, and the copy.

    The next time you installed or upgraded a plugin, you would need to re-run Spy!, and check whether the command ID has changed; if it has, edit shortcuts.xml again, and replace the example 22064 with the new number.

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

    4k Topics
    21k Posts
    Altair ManuelA

    i fixed it!!! I just made the notpad++ folder be able to be manipulated, and session.xml too!!! :D yay!

  • 10k Topics
    52k Posts
    Alan KilbornA

    @Max-Alekseyev

    The captions on those buttons are controlled by Windows instelf, not Notepad++.

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

    1k Topics
    8k Posts
    Mark OlsonM

    @Terry-R said in XML-Tools - Validation problem:

    It may contain something you/we cannot see.

    @Thorsten-Kreutz

    Yeah, my first thought was that maybe one of the strings contains a non-printing character that’s causing the issue. Turning on the Show Non-Printing characters or Show All Characters setting would reveal whether this is the case.

  • Security shouldn't be the privilege of rich people
    49 Topics
    195 Posts
    dinkumoilD

    @Emmanuel-Meekers
    AFAIK there is no technical means to limit the number of plugins a user is able to install. You can only remove the capability to install plugins at all.

    You could do a survey which plugins your employees need. There can be different needs, e.g. technical staff likely needs other plugins than employees that ar more involved in administrative tasks. Then you can install these plugins on the employee’s machines.

    After that you need to rename or delete <install-directory>\updater\GUP.exe to prevent users from installing any other plugins. As long as your employees don’t have admin access to Notepad++'s install directory, they are not able to revert these changes.

    The disadvantage is that your users neither will be able to update Notepad++ itself nor the installed plugins. This is something your ICT department has to do.

  • All the issues (publications/questions) about binary translation
    72 Topics
    457 Posts
    Richárd StockingerR

    Hi!

    I’ve updated the Hungarian language file to be compatible with the latest version (8.7.1) of Notepad++.

    This is a major, complete and up-to-date re-translation of this file, including:

    Translating the missing terms Adding missing accelerator letters (also for dialogs) Correcting the previous spelling errors (e.g. capitalization) Re-translating the inaccurate expressions more accurate Re-translating the outdated terms

    Pull request: #15824

  • Say fuck to Notepad++ here, and only here
    83 Topics
    514 Posts
    Mark OlsonM

    @Franklin-Márquez
    Since you don’t appear to be writing a pointless angry tirade against Don Ho or Notepad++, I would recommend that you file questions like this under a different heading, rather than “Boycott Notepad++”.

    As far as retaining Style Tokens, I’m pretty sure it would be extremely difficult for Notepad++ to do this, because the styles are just temporarily held in memory by the Scintilla editor component; they’re not incorporated into the file that’s stored on disk, unlike in a Microsoft Word document. In short, Notepad++ is a text editor, not a word processor.

    That said, I imagine you could create a macro to automatically highlight certain words/phrases/regex matches. Then you could just use a keyboard shortcut to highlight all the stuff you want as soon as you open a file. You could even use a scripting plugin to add a callback function that does this automatically when a file of a certain type is opened.

    If you give us a little more information on your use case, somebody might be able to give you more help. Look on npp-user-manual {dot} org for more relevant documentation. Can’t link right now because at work and pressed for time.

  • Blog posts from individual members
    56 Topics
    211 Posts
    barisusakliB

    Should be fixed now, thanks for reporting!

  • Computer/Programming Jokes are welcome here

    46 Topics
    141 Posts
    Terry RT

    my-code-doesnt-work-lets-change-nothing-and-runit-again.png

    9999.jpeg