• 0 Votes
    2 Posts
    37 Views
    PeterJonesP

    @Doctor-Rashir said in How to Print Pretty with missing close tags.:

    I am looking at a Quicken QFX log file that is in a sort of XML type format. The format has many missing End tags so this causes the XML Tools - Pretty Print to indent nearly forever.

    Is there a way to align the Start and End tags that are present?

    XML Tools is designed to work with well-formed XML. If it’s not well-formed (ie, unclosed tags), it’s just too much of an edge case. It’s doubtful there’s any toolmaker out there who could figure out a way to “pretty print” a seemingly-random mixture of closed and unclosed tags in any meaningful way.

    If you were to unindent everything (Ctrl+A, then Shift+TAB until it’s gone, or search for ^\h+ and replace with nothing), then if you knew in advance which tags (like <SONRQ>) had closing pairs, you could use the zone-of-text regex forumula from our FAQ, as:

    FIND = (?-si:<SONRQ\b|(?!\A)\G)(?s-i:(?!</SONRQ\b).)*?\K(?-si:^(?!\h*</SONRQ))
    REPLACE = \t
    REPLACE ALL

    If I do three steps: unindent, formula(SONRQ) and formula(SIGNONMSGSRQV1), then with your example data, I get

    <OFX> <SIGNONMSGSRQV1> <SONRQ> <DTCLIENT>20250520104016.123[-7:MST] <USERID>anonymous00000000000000000000000 <USERPASS>X <GENUSERKEY>N <LANGUAGE>ENG <APPID>QWIN <APPVER>2700 </SONRQ> </SIGNONMSGSRQV1> <INTU.BRANDMSGSRQV1> <INTU.BRANDTRNRQ> <TRNUID>19FFC8F0-7EF9-1000-BC8D-909811990026 <INTU.BRANDRQ>

    I don’t know how many other closed tags there are in your file, so I don’t know whether that’s practical for you or not. But it’s the best I can come up with for now, without invoking a full-on programming language (at which point, it could be done in the contents of the Notepad++ window using a plugin like PythonScript, or it could just be done at the command-line with whatever programming language you wanted to use, without needing the file to be open in Notepad++, and thus make it off-topic here)

    I did try to make use of a numbered or named capture group in the BSR section and use a backreference to make the BSR and FR invoke those (see the FAQ for the meaning of BSR / ESR / FR), rather than having to know in advance the names of all the tags… but I couldn’t get those backreference versions to work.

  • 0 Votes
    4 Posts
    40 Views
    PeterJonesP

    @Doctor-Rashir said in Edited Post content was flagged as spam:

    @Terry-R
    PeterJones
    Aug 13, 2020, 6:55 AM

    @Myvh ,

    The Akismet filter is sometimes overly aggressive. What I do when I see that warning is I cut out a portion of my post, submit the post, then edit and paste back in and re-submit, and it generally works.

    specifically, you were referencing this post, where I suggested that.

    But, as I tried to indicate with “generally”, that doesn’t always work.

    But usually, Akismet only triggers if you’re super-long, or have URLs, and I haven’t seen it trigger much in the last few years, especially now that we have the post-queue.

    If you have additional information you want to add, can you just include it in a reply, without trying to edit the original?

  • 0 Votes
    11 Posts
    194 Views
    N

    @PeterJones

    i have to hand it to you this worked, thank you :-)

    I couldnt find this description elsewhere, i tested all the 3 thirdparty apps, wthy didnt work though

    I seems to have missed the reg addition of defaulticon should be in the string sith notepad++

    best Nolan

  • Notepad++ 8.8.8 release

    Pinned Announcements
    10
    1 Votes
    10 Posts
    1k Views
    donhoD

    @SwordReign8 said in Notepad++ 8.8.8 release:

    Notepad++ v8.8.8 installed without a hitch. Double-clicking to initiate the installer first required deleting the self-signed certificates that were in place, to avoid Windows’ UAC (User Account Control) warning with the “Don’t Run” button. Also, this might be a bit late, but congratulations on acquiring an official digital certificate

    I suppose that you’re talking about Notepad++ EXE installer. Double signed installer works fine to me, and Notepad++ root certificate has been already removed from my laptop.

    Is there anyone here has encountered the same problem?

  • 0 Votes
    9 Posts
    326 Views
    Alan KilbornA

    When the Fill Find Field with Selected Text option, in settings, is unchecked, and the user invokes Select And Find …, perhaps the program should (simply) run the code for the “volatile” version of the command.

    (I should have said this in my previous post.)

  • 0 Votes
    5 Posts
    206 Views
    László BotkaL

    @Rick-Kosters

    You can try the free Agent Ransack utility from https://www.mythicsoft.com
    It works with .doc, .docx and .pdf files too.

  • sha512 certificate cannot be validated

    General Discussion
    4
    0 Votes
    4 Posts
    184 Views
    PeterJonesP

    @bvklaveren said in sha512 certificate cannot be validated:

    I have seen the instructions, but installing the self-signed certificate on all computers in the organization is not a practical solution.

    Okay. Then ignore the self-signed, since there’s a commercially-signed alternative that can give you confidence that the binary is being distributed by the one who it claims to be.

    It only takes one certificate to give the confidence, but it also means that you can ignore any other certificate on the same file, because having two certificates (one self-signed that you choose to distrust and the other commerically-signed which you choose to trust) gives you exactly the same amount of confidence that the binary is valid as does having just the commercially-signed certificate with none others. Whereas for someone who does trust the self-signed, they can choose to trust that self-signed and ignore the commercially-signed as being tainted by money.

    Also, why would you include a self-signed certificate if you also have “real” one that can be validated without extra steps?

    The “why’s and wherefore’s” are all available in the public, in various discussions on this forum (search for certificate) and the relevant section of the User Manual and in the various announcement pages in the official website. But I’ll sum it up, from my outside perspective:

    Because for months, there wasn’t a commercial certificate available, because the corporations behind the certificates are set up to make things difficult to open source projects. And once he did get the new globalsign cert, he didn’t feel it was worth it to undo all the effort he had put into creating the self-signed certificate.

    Lastly, it is not in the msi, so why is it in the exe?

    apples and oranges?

    The MSI is a container, which can be signed, and is signed separately from any EXE or DLL that might be contined therein. So the developer apparently chose to only sign that MSI with the commercially-derived – probably because his system was already setup to sign the EXE with both (because it was setup to sign with just the self-signed, then he added the globalsign cert on top of that once it was available), whereas the MSI didn’t come until a month or two after the globalsign was available, so he probably didn’t think it was worth the extra effort to figure out how to sign the MSI with the self-signed as well.

  • Making a new release...

    Humour
    6
    5 Votes
    6 Posts
    200 Views
    xomxX

    @donho
    Good attempt, just for surety, why not ;-)

    And I’ve to admit that I used to “abuse” churches too - in the summer it was nice and cool there and, most importantly, quiet, so I could study there and prepare for my exams :-)

    @Terry-R @Lycan-Thrope

    Otherwise on topic - there are IMO no complete atheists (in the sense of believing in something that is beyond my reach or ordinary understanding), everyone has their own faith. But while someone believes e.g. that gravity will still work tomorrow when they wake up, someone else believes in the virgin conception of the Virgin Mary, when the Holy Spirit entered her. For me, religion just parasites on and shackles the natural human need to believe in something better/bigger, something that gives human existence true meaning and a greater dimension.

  • autoupdater and connection temp.sh

    Security
    9
    0 Votes
    9 Posts
    2k Views
    donhoD

    @John-Smith-4

    I see in v8.8.8 release there was an issue addressed with WinGup. Could you elaborate what caused this behavior?

    Unfortunately I can’t provide more facts than what we already know.
    We are not aware of any confirmed exploitation of this vulnerability in the wild.
    The fix in v8.8.8 is the best I could do to address the issue of WinGUp being hijacked.

  • 0 Votes
    5 Posts
    437 Views
    C

    after a look at jn-npp-plugin on github it seems Win32 API is not available in win x64 and i didn’t find other way to use openfiledialog…
    i am looking at python plugin now .

    thanks for your help

  • Scripts to align text

    Notepad++ & Plugin Development
    4
    4 Votes
    4 Posts
    2k Views
    sound-fxS

    The following code supports PythonScript 3.0.23 as well as earlier versions of PythonScript 3.x.

    #------------------------------------------------------------------------ # If the character specified in the current selection is a white space, # then prompt the user to enter the alignment character (or characters), # using this character as the initial default. #------------------------------------------------------------------------ default_align_char = ',' from enum import Enum class PaddingSide(Enum): LEFT = 0 RIGHT = 1 def align_selected_text(max_align_char_count = None, padding_side = PaddingSide.LEFT): """Insert padding into the lines in the selection, as needed, to align up to max_align_char_count instances of a specific character or string of characters The default is to align all instances of the specific character. At present, the alignment character is taken as the character at the top of the current selection. You can uncomment some code below to change this policy to instead take the alignment character from within the selection at whichever end has the cursor. Either way, if that character is white space, the user is prompted to type the character (or characters). If you really wish to align on a white space character, you can just click OK at the prompt. When prompted to type the alignment character, the user may enter a sequence of characters, e.g., "-->", in which case the alignment is on the instances of that entire character sequence. For example, if the user enters "-->" at the prompt, then instances of the "-" character get aligned only if they're followed immediately by the characters "->", while instances of, say, "-1" and "- " remain unaltered. If there is no current selection, then aligns all lines in the editor. If there is a current selection, then aligns only the lines that are at least partially included in the selection, and the selection is changed to the entire block of newly-padded lines. Parameters ---------- max_align_char_count : positive integer, optional The maximum number of instances to align of the specific character. For example, set to 1 to align only the first instance of the character on each line. The default is to align all instances of the specific character. """ from Npp import editor #---------------------------------------------------------------------------- # For the alignment character, take the character just inside the bounds of # the selection block (at either the start or the end, as determined below). #---------------------------------------------------------------------------- editor.targetFromSelection() selected_text = editor.getTargetText() # Use this code to get the align_char unconditionally from the start # of the selection. align_char = selected_text[0] # Optionally use this code to get the align_char from within the selection # at whichever end has the cursor. # (startByte, endByte) = editor.getUserCharSelection() # if startByte == editor.getCurrentPos(): # align_char = selected_text[0] # else: # align_char = selected_text[-1] # If the character from the selection seems implausible as the # align_char, then prompt the user for it. if align_char.isspace(): from Npp import notepad global default_align_char align_char = notepad.prompt('Align character:', 'Enter Alignment Character', default_align_char) if align_char is not None: default_align_char = align_char #---------------------------------------------------------------------------- #%% Get the lines of text within the selected alignment block #---------------------------------------------------------------------------- (startLine, endLine) = editor.getUserLineSelection() startPos = editor.positionFromLine(startLine) endPos = editor.getLineEndPosition(endLine) text_lines = editor.getTextRangeFull(startPos, endPos).splitlines(True) #---------------------------------------------------------------------------- # Remember whether there is a user-selected block, so we can restore a # corresponding selection after aligning the text. #---------------------------------------------------------------------------- restore_selection = editor.getSelectionStart() != editor.getSelectionEnd() #---------------------------------------------------------------------------- # Align all instances of align_char within the lines of text #---------------------------------------------------------------------------- if align_char is not None: # Enable the following to save the align_char, however it was determined, # to be the default_align_char when prompting for it next time. # default_align_char = align_char padding_side_offset = padding_side.value * len(align_char) if max_align_char_count is None: align_char_count = max(line.count(align_char) for line in text_lines) else: align_char_count = max_align_char_count start = 0 for instance in range(align_char_count): # Set the target column using the index of the align_char, ignoring # immediately preceding space, or the length of the line tgt_char_col = max(len(line[:line.find(align_char, start)].rstrip()) for line in text_lines) for (idx,line) in enumerate(text_lines): align_char_col = line.find(align_char, start) if align_char_col >= 0: text_lines[idx] = line[:align_char_col+padding_side_offset].rstrip().ljust(tgt_char_col) \ + line[align_char_col+padding_side_offset:] start = tgt_char_col + len(align_char) editor.setTarget(startPos, endPos) editor.replaceTarget(''.join(text_lines)) if restore_selection: startPos = editor.positionFromLine(startLine) endPos = editor.getLineEndPosition(endLine) editor.setSelectionStart(startPos) editor.setSelectionEnd(endPos) if __name__ == '__main__': align_selected_text()
  • 0 Votes
    3 Posts
    73 Views
    Alan KilbornA

    @me

    I printed out a cookie recipe in NP++ and LO Writer

    Try to be more explicit. I actually use LibreOffice and, until @PeterJones explicitly stated it in his response, I had no idea what you were talking about when you said “LO”.

  • Save and Restore Change History Markers

    General Discussion
    10
    1 Votes
    10 Posts
    574 Views
    Vince AmanV

    @mpheath ,

    Thanks again for you reply! I plan to test your BufferRestore script after my next “break” in my current project(s). After looking closer at your post and web page, this looks to be a good option for me to use until NP++ has a built in tool…

    I do own a rack of servers and plan to spin up a couple extra VMs once I release my own platform/environment for my apps (within the next couple months). The challenge with one of the (main) current platforms which I’m using is, while I pay annually to be a developer for them, their licensing does not allow me to run on more than 1 PC at a time, so it requires me to log out/in each time I switch between PCs or VMs. I can’t maintain the variable “state” if forced to log out.

    There are many additional issues with Windows Rebooting… When the current test environments get “killed”, all the opened files are now locked and all the variables are flushed. So it requires unlocking the files, and recreating the previous workflow to recreate the variable “state”. Using a log file doesn’t work well in this environment, because it typically goes back beyond the last save… and could only be applied if the saved file was in the exact state as when the log file was started… not sure if that makes sense?

  • 0 Votes
    3 Posts
    55 Views
    PeterJonesP

    @JuergenBelle ,

    Further to what @h-jangra said, since N++ v8.8.6, you can just paste your multi-line text into the Replace, and use the Search @h-jangra suggested, and you don’t need the plugin at all…

    If your replacement has parentheses () or dollar signs $, it might not work as you expect, so you might have to escape them, as described in the user manual (https://npp-user-manual.org/docs/searching/#substitutions)

  • 3 Votes
    1 Posts
    81 Views
    No one has replied
  • Move Line Up

    Help wanted · · · – – – · · ·
    6
    1 Votes
    6 Posts
    302 Views
    Barry LortB

    @guy038

    More good information. Thank you!

    Barry

  • Notepad++ 8.8.8 release candidate

    Announcements
    2
    7 Votes
    2 Posts
    981 Views
    donhoD

    FYI, v8.8.8 RC has updated to RC2 to enhance the security of auto-update.

  • Notepad++ VERY slow to open

    Help wanted · · · – – – · · ·
    16
    0 Votes
    16 Posts
    11k Views
    MarcosM

    Hello!

    I’m having a similar problem with NPP being slow to open, and I believe it’s related to the fact that I have several “draft” (unsaved) files saved, since I have the options enabled: backup and remember last session.
    This has already been reported in another post:

    https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14000

    In my case, I have an SSD and it takes about 20 seconds to load about 200 files. So it spends about 0.1 seconds per file.

    I did some tests using Process Monitor, as shown in the image below.

    notepad.png

    In this case, it seems that NPP keeps trying to create files in the “Program Files” folder, but it gives a “NAME NOT FOUND” error.
    After that, it goes to the “AppData/Roaming…” folder where the backup files are located.

    In short, based on this result, does anyone have any idea how to try to solve this delay, perhaps caused by failures or repeated attempts to read/write the backup files?

  • 0 Votes
    4 Posts
    330 Views
    h-jangraH

    Thanks @Coises & @rdipardo
    I tried this and its working but still not better. You can suggest anything if I can add more styling.

    10f9d4ce-57f8-4d4c-a375-a9f4450b524e-image.png

    h-jangra/BetterMarkdown/releases/tag/0.1

  • New Vim modal editing plugin release

    General Discussion
    6
    1 Votes
    6 Posts
    4k Views
    h-jangraH

    @PeterJones @guy038 @W-H @Ava-Thompson and everyone

    Thanks a lot for checking out NppVim and for all the support. Really appreciate the feedback and the nice words.

    Quick updates:

    Repo here: https://github.com/h-jangra/NppVim I’m still actively working on the plugin, adding more motions, fixing bugs and making things feel closer to real Vim. More text objects, better repeat for t/f etc all in progress.

    I’m glad to hear interest in supporting the project. I’ll set up GitHub Sponsors soon and will update this thread.

    Thanks again for trying it out and giving feedback, it motivates me to keep improving it.
    Please feel free to open issues on GitHub for any bugs or features you want prioritized.