Categories

  • Announcements regarding our community
    267 Topics
    5k Posts
    donhoD

    Due to regression of UDL syntax highlighting in v8.7.7, l’auto-update has been reverted back to v8.7.5.

  • 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
    PeterJonesP

    @tony-he said in chinese character problem:

    what are default Chinese font library in notepad++ 8.7.7?

    Notepad++ doesn’t have its own font library. It uses whatever fonts are installed on your computer, and will try to use your chosen Settings > Style Configurator > Language: Global styles > Style: Default Style’s chosen font (which you’ve indicated is Consolas for you).

    If that chosen font (Consolas) doesn’t have a glyph for a given codepoint, Notepad++ can ask the OS to recommend a different font which will have a glyph for that codepoint; the Settings > Preferences > MISC > Use DirectWrite option affects how Notepad++ interacts with the OS for choosing/displaying those glyphs. If you don’t like the results, you can try changing that setting, restarting Notepad++, and seeing if the other option works better for you. (It is looking like there will hopefully be more options for the DirectWrite setting in the future – whether in the GUI or in a power-user setting – which might give more choices to influence such results.)

    As @Alan-Kilborn recommends, picking a font that you like that has all the glyphs you want will help Notepad++ display it the way you like.

    Also, there are other posts in the Forum dealing with the CompositeFont concept, which is the way that Windows handles this, so you might be able to learn some more about what the operating system does for Notepad++ behind-the-scenes. But basically, windows has some tables about what fonts it looks for when it doesn’t find a glyph in a certain range of codepoints; doing more searching about the web on CompositeFont may help you learn how to encourage Windows to pick from a “better” font for a given glyph, if you can understand the results (I have only a surface-level understanding of such things, since mathy glyphs are the only “extra” glyphs that I tend to look for when using Notepad++ for my purposes)

  • 10k Topics
    52k Posts
    Tobias LindT

    I think I’ve found some more info on this issue.
    When DirectWrite is enabled, I can only use the base version of the font. Any other variant will default to some fallback font.

    E.g. “Bahnschrift” works, but none of its varians: “Bahnschrift Condensed”, “Bahnschrift Light”, etc.
    “Ariel” works, but not “Ariel Black”, “Ariel Narrow”, “Ariel Rounded MT Bold”.

    I’d like to use “Fira Code Medium”, but I’ll have to use “Fira Code”…

    (I don’t want to turn off DirectWrite, because some chars won’t render properly without it)

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

    1k Topics
    8k Posts
    CoisesC

    @guy038 said in Columns++: Where regex meets Unicode (Here there be dragons!):

    I’ve been testing

    Thank you so much for helping with this! I really appreciate it.

    I’m working now on better case insensitive matching (I think it can’t be working outside the BMP in 1.1.5.2, but I’m a bit out of my depth since I know nothing about non-Latin alphabets, outside of knowing Greek lower-case sigma has a different form when it’s at the end of a word), better “equivalence” ([[=x=]]) outside the BMP (as far as I can tell, that is locale dependent, which again leaves me with no idea how to tell if it’s working correctly — I’m just a dumb American), and speed.

  • 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
  • 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