Community
    • Login
    1. Home
    2. Popular
    Log in to post
    • All Time
    • Day
    • Week
    • Month
    • All Topics
    • New Topics
    • Watched Topics
    • Unreplied Topics
    • All categories
    • Troglo37T

      New Update Removed My Toolbar Icons. How Do I Get them Back?

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      22
      0 Votes
      22 Posts
      643 Views
      Troglo37T

      @PeterJones Great catch! Thanks Peter!! It works! I didn’t notice the double .XML.

      Just noticed your comment about the extensions. I keep it like that because I frequently use the search software Everything and several file conversion programs. I need to know what I’m dealing with while using them simultaneously.

      The other reason I keep it hidden is so I don’t accidentally screw up the extension and can’t find the file. It’s happened to me several times. The only way that can happen is when I use Everything, However, it nicely only highlights the file name and not the extension, making it harder to unintentionally change the extension.

    • fml2F

      Replace in Files / "Directory" field scrolls right when clicked

      Watching Ignoring Scheduled Pinned Locked Moved General Discussion
      16
      0 Votes
      16 Posts
      241 Views
      PeterJonesP

      @fml2 said in Replace in Files / "Directory" field scrolls right when clicked:

      My point exactly. This is the difference. To me, it would be more logical if no scrolling took place upon focus. Why should the field be scrolled on focus? This disrupts the mental user context IMO.

      There is no difference. You misunderstood what @Coises was trying to say: whichever combobox field you click in, that one highlights all the text and scrolls to the right; the other fields go back to their default state.

      Follow this sequence:

      STATE = nothing active/selected/focused: both Find What and Directory show the beginning of the value (“scrolled left”)
      a1f36bfd-ee45-4f68-b901-c55183d06b89-image.png STATE = click in Find What: Find What text shows the end (“scrolled right”), no change to Directory
      1a0936c3-5263-48ca-9c0d-499846b7761d-image.png STATE = click in Directory: Find What text deselects, and goes back to the beginning (“scrolled left”), and Directory selects all and shows the end (“scrolled right”)
      205ac65a-1a76-48f0-997f-90fe3dc84896-image.png STATE = click back in Find What: it goes back to the exact same thing as state 2

      They behave exactly the same: whichever one you click selects all and scrolls to the far right. There is no difference. This is standard Windows GUI behavior, and has been for at least two decades. This is not Notepad++ specific.

      update: for example, in Microsoft notepad.exe, using the Save As dialog, where the File name field uses a combobox (typeable box with pulldown arrow on right for accessing other values):

      STATE = nothing clicked/selected: the File name box is scrolled to the left, showing the beginning of the filename
      e8c1df76-cbe4-4a2a-8ff7-374f8b50b99e-image.png STATE = click in File name: it selects all and scrolls to the far right to show the end of the filename
      74fc3dd1-7ffa-4238-a410-db6d967adc02-image.png

      This is the exact same behavior as in the Notepad++ dialog box. This is standard Windows GUI behavior.

    • DrakyemD

      Replace multiple, alternate lines in a comparison of two files

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      15
      0 Votes
      15 Posts
      235 Views
      mpheathM

      @Drakyem

      Install PythonScript 2.1 from Plugin Admin or download and install PythonScript 3. Goto menu Plugins -> Python Script -> New Script. Save with filename PokemonIntlModifier.py. Paste the PythonScript code into the saved file.

      May need to restart Notepad++ to view the file entry in the menu.

      Setup left pane as source and right pane to be modified.

      These are minimal examples to test with.

      Left pane:

      # To localize this text for a particular language, please # translate every second line of this file. [Map0] ......\wt[5] ...... ......\wt[5] ...... Hello, \PN!\nI can see you calling me over there! Hello, \PN!\nI can see you calling me over there! <INSERTED> Come over and talk to me. Come over and talk to me. [map1] \c[2]Palmiro:</c> ¡Hemos terminado! \c[2]Palmiro:</c> ¡Hemos terminado! 0 ???????? ???????? 1 Bulbasaur Bulbasaur <INSERTED> 2 Ivysaur Ivysaur ¡Felicidades! Has completado {1}. ¡Felicidades! Has completado {1}. <INSERTED>

      Added <INSERTED> to 3 lines to create differences like a language difference make it different.

      Right pane:

      # To localize this text for a particular language, please # translate every second line of this file. [Map0] ......\wt[5] ...... ......\wt[5] ...... Hello, \PN!\nI can see you calling me over there! Hello, \PN!\nI can see you calling me over there! Come over and talk to me. Come over and talk to me. [map1] \c[2]Palmiro:</c> ¡Hemos terminado! \c[2]Palmiro:</c> ¡Hemos terminado! 0 ???????? ???????? 1 Bulbasaur Bulbasaur 2 Ivysaur Ivysaur ¡Felicidades! Has completado {1}. ¡Felicidades! Has completado {1}.

      PythonScript:

      # about: Modify intl.txt extracted from the Pokemon Essentials Editor # help: https://community.notepad-plus-plus.org/topic/23039/faq-desk-how-to-install-and-run-a-script-in-pythonscript # name: PokemonIntlModifier # require: Notepad++ with PythonScript >= 2 plugin # src: https://community.notepad-plus-plus.org/topic/26913 # important: Left pane as source and right pane to be modified. from Npp import editor1, editor2, notepad def main(): # Set to True if 2nd line is different and should be made empty. blank_if_different = False # Do not modify these lines. line_count = editor.getLineCount() line_next = True replaced = 0 editor2.beginUndoAction() # Process the buffers. for line in range(line_count): # Get lines from both editor panes. text1 = editor1.getLine(line).rstrip('\r\n') text2 = editor2.getLine(line).rstrip('\r\n') # Skip comment and section lines. if text1.startswith(('#', '[')): continue # Skip integer lines. if text1.isdigit(): continue # Allow the 2nd line only. line_next = not line_next if not line_next: continue # Replace 2nd line if different. if text1 != text2: if blank_if_different: text1 = '' editor2.replaceLine(line, text1) replaced += 1 editor2.endUndoAction() notepad.messageBox('Done {} lines'.format(replaced)) main()

      Result after running the script:

      img.png

      I enabled Change History to show in the lines and enabled End Of Lines to show to identify the affect of the modifications.

      If inspected as not OK then it can be undone with pressing Ctrl+Z on the right pane.

    • guy038G

      Bug with the "CRLF" end of line

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      13
      3 Votes
      13 Posts
      401 Views
      xomxX

      So it really was a Scintilla v5.5.6 bug, fix for its next version:
      https://sourceforge.net/p/scintilla/code/ci/0364bca4f6d3cb1e1aaffa3baae6a0dfe4b026f2/

    • K

      Plugin; irregularities with inplace editors closure

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      13
      0 Votes
      13 Posts
      360 Views
      K

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

    • ThosRTannerT

      When is there going to be a release of NPP plugintemplate with a definition of NPPM_ADDSCNMODIFIEDFLAGS

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      13
      0 Votes
      13 Posts
      410 Views
      rdipardoR

      @ThosRTanner said in When is there going to be a release of NPP plugintemplate with a definition of NPPM_ADDSCNMODIFIEDFLAGS:

      @rdipardo Wouldn’t a better place to put the action be in the notepad++ repo so when a new version was released it’d do the updates to the template repo automatically?

      You make a good point.

      The workflow steps would essentially be the same, but in the opposite direction (clone the template repo, update the file tree, validate the build and push if successful). The main difference would be the trigger; ideally you would want to watch for tagged Notepad++ releases, e.g.,

      on: push: tags: - 'v*'

      This way new template versions can be explicitly tied to a Notepad++ release, e.g.,

      # 'refs/tags/vX.Y.Z' -> 'vX.Y.Z' echo "NPP_RELEASE=${env:GITHUB_REF}.Split('/')[2]" >> $env:GITHUB_ENV # ... git tag -a "${{ env.NPP_RELEASE }}" '@' -m "plugintemplate-for-Npp-${{ env.NPP_RELEASE}}" git push --tags --repo=https://github.com/npp-plugins/plugintemplate

      But it would be a problem if incompatible changes were made to the template. A failed build would cause a red X to appear beside the tagged Notepad++ commit, giving the false impression the release was a botch.

      I think the separation of concerns principle is best observed if the template project looks after its own updates. A little extra churn won’t be a great inconvenience. The majority of plugin authors are still copy-pasting the template files into their source tree, as shown by how many have “C” as their detected primary language, since the template files contain no unique C++ syntax or standard headers, which GitHub relies on to classify header files, unless you manually override the heuristics.

    • guy038G

      Bug when a multi-lines regex is used in the 'Search', 'Replace' or 'Mark' dialog

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      12
      2 Votes
      12 Posts
      439 Views
      Alan KilbornA

      Instead of Excel, why not use a bit of PythonScript to generate the “ruler” lines?:

      accum = '' for j in range(1020, 1030 + 1): desired_len = j des_len_as_str = str(desired_len) s = des_len_as_str tens_count = 0 while True: if (len(s) + 1) % 10 == 0: if (tens_count + 2) * 10 <= desired_len: s += str((tens_count + 1) * 10) tens_count += 1 if len(s) >= desired_len: break s += '_' s = s[:-len(des_len_as_str)] + des_len_as_str accum += s + '\r\n' editor.copyText(accum)

      The example above generates ruler lines of length 1020 through 1030, inclusive. The ruler data ends up in the clipboard after the script runs.

      Note that mine might be different from the earlier ruler lines discussed – I chose that the intermediate numbers start in their indicated column, e.g. after you paste the output of the script into a new tab, if you put the caret just to the left of the 8 in 890, the status bar will indicate Col: 890.

      To select 890 characters from that same example line, put the caret between the 8 and the 9 and then press Shift+Home.

      Here’s some output from the script:

      1020_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010___1020 1021_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010____1021 1022_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010_____1022 1023_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010______1023 1024_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010_______1024 1025_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010________1025 1026_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010_________1026 1027_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010__________1027 1028_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010___________1028 1029_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010____________1029 1030_____10________20________30________40________50________60________70________80________90________100_______110_______120_______130_______140_______150_______160_______170_______180_______190_______200_______210_______220_______230_______240_______250_______260_______270_______280_______290_______300_______310_______320_______330_______340_______350_______360_______370_______380_______390_______400_______410_______420_______430_______440_______450_______460_______470_______480_______490_______500_______510_______520_______530_______540_______550_______560_______570_______580_______590_______600_______610_______620_______630_______640_______650_______660_______670_______680_______690_______700_______710_______720_______730_______740_______750_______760_______770_______780_______790_______800_______810_______820_______830_______840_______850_______860_______870_______880_______890_______900_______910_______920_______930_______940_______950_______960_______970_______980_______990_______1000______1010______1020___1030
    • Claudia SvensonC

      How to save new (!) documents always in D:\data\ ? (And not in most recent directory)

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      10
      0 Votes
      10 Posts
      286 Views
      Alan KilbornA

      The following is TL;DR…

      A bit ago, I had a need for a “directory chooser” standard dialog to appear in one of my PythonScripts. I shared this need with the guru of all things Python (@Ekopalypse , although he will shrug off that moniker) and he graciously pursued adding code to support that in his Little Dialog Wrapper project.

      Because a directory-chooser is really just a specialized “file open” standard dialog, Eko also provided that capability – great. So now the library had file-open and dir-chooser capability. But…the glaring omission to complete the set was a “file save” standard dialog. Well…of course I nudged Eko to write that part as well, but I think he simply saw no need for it and thus didn’t do it. And so of course I said I’d do it.

      But much time passed, and I didn’t do it, because I didn’t exactly have a burning need. I already had some script code I’d developed for file-save based on some ancient code called EasyDialogs. And wow, checking out that link right now, it is really ancient (circa 2007)! This approach worked, but the type of standard dialogs generated by EasyDialogs are really “old school”.

      So then along comes this thread (the one we’re talking in right now). The OP’s need is one that can be easily scripted…IF a nice file-save dialog could be generated.

      So, I got on the proverbial horse and added the file-save dialog code to Eko’s library (in the end not a big effort, since the earlier code provided a lot of inheritable stuff). It’s been ACCEPTED and now the library offers the full complement of file-open, file-save, and directory-chooser standard dialogs.

      Ok, so here’s a (PS3) script called FileSaveReplacement.py that meets the need proposed at the start of this thread. The script is run (somewhat obviously from its name) when you’d normally save a file (i.e., hint reassign Ctrl+s to run this script). If the tab being saved exists as a file in the file system, it’s simply saved as usual. But if the tab has never been saved, a file-save dialog appears and it is based in a fixed directory (as specified in the script by the dir_for_never_saved_files variable).

      # -*- coding: utf-8 -*- ######################################### # # FileSaveReplacement (FSR) # ######################################### # note: # This script was developed and tested under Python3 64-bit on unicode (non-ANSI) encoded data. # It may work as-is using Python2 and/or ANSI-encoded data and/or 32-bits, but that would be incidental. # references: # https://community.notepad-plus-plus.org/topic/26900/how-to-save-new-documents-always-in-d-data-and-not-in-most-recent-directory # for newbie info on PythonScripts, see https://community.notepad-plus-plus.org/topic/23039/faq-desk-how-to-install-and-run-a-script-in-pythonscript # for info on WinDialog (aka Little Dialog Wrapper), see # https://github.com/Ekopalypse/NppPythonScripts/tree/master/helper/WinDialog # https://community.notepad-plus-plus.org/topic/24389 #------------------------------------------------------------------------------- from Npp import * import os from WinDialog import * # "Little Dialog Wrapper" from WinDialog.com_dialogs import FOS #------------------------------------------------------------------------------- class FSR(object): def __init__(self): # config: dir_for_never_saved_files = r'd:\data' ext_for_never_saved_files = '.txt' # make this an empty string if the desire is to have no extension curr_filename = notepad.getCurrentFilename() if os.path.isfile(curr_filename) and ('\\' in curr_filename or '/' in curr_filename): notepad.menuCommand(MENUCOMMAND.FILE_SAVE) else: save_dlg = FileSaveDialog() save_dlg.setFolder(dir_for_never_saved_files) if '.' not in curr_filename: curr_filename += ext_for_never_saved_files save_dlg.setFileName(curr_filename) save_dlg.setFileTypes([['All files', '*.*'], ['Text Files', '*.txt']]) save_options = save_dlg.getOptions() save_options |= FOS.OVERWRITEPROMPT save_dlg.setOptions(save_options) result = save_dlg.show() if len(result) > 0: notepad.saveAs(result[0]) #------------------------------------------------------------------------------- if __name__ == '__main__': FSR()
    • K

      Shortcut mappings are transferred to a plugin's activity

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development
      10
      0 Votes
      10 Posts
      296 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)

    • S

      How to create a C# plugin?

      Watching Ignoring Scheduled Pinned Locked Moved Notepad++ & Plugin Development plugins
      9
      0 Votes
      9 Posts
      266 Views
      Mark OlsonM

      @scampsd
      Probably the easiest way to colorize text is with indicators. You can see an example of how JsonTools works with indicators in this file.

      A lexer is way better than indicators for dynamically restyling a document as the user edits it, but if you don’t need that capability, I would stick with indicators.

      EDIT: To clarify, indicators do resize and move when the user edits the document, a feature that JsonTools uses to improve performance. However, the algorithm Scintilla uses for dynamically resizing indicators is not suitable for syntax coloring.

    • M

      Please, don't tell me I've lost all my Notepadd++ docs!

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      9
      0 Votes
      9 Posts
      142 Views
      M

      @Terry-R

      Thank you!

    • P

      UDL: Folding with Alt-0 no longer works correctly

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      9
      1 Votes
      9 Posts
      347 Views
      PeterJonesP

      @peklei said in UDL: Folding with Alt-0 no longer works correctly:

      It would be interesting to know how this is implemented there and whether it can be recreated in a UDL definition.

      In a UDL definition? No. Each built-in lexer has dedicated code for deciding where to fold (if that lexer has folding). The source code for UDL has a separate set of code, that is purely keyword-based.
      From the “UDL definition” point of view, all you can do is set the open/middle/close keywords; you cannot change the logic from the UDL interface or config file. If you wanted to change the logic, it would require a change to the UDL source code, which requires a feature request

    • donhoD

      These were my f**king ChatGPT!

      Watching Ignoring Scheduled Pinned Locked Moved Humour
      8
      5 Votes
      8 Posts
      353 Views
      skinwalker009S

      Before I clean up, I’ll snap a pic of my “library”—three bookcases and a desk stacked with tech relics in a dim room, untouched by sunlight. It was my haven 26 years ago, my cockpit of cutting-edge gear. Now, it’s a tech museum I hope to revive. You’re right—those gadgets were our original ChatGPTs.

    • Рома СмирновР

      EDITING FILES

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      8
      0 Votes
      8 Posts
      155 Views
      PeterJonesP

      @Рома-Смирнов ,

      When I followed @mkupper’s suggestion of searching the internet for your filename, I was able to see that the name wallet.json is often used for the storing secrets or backups for things like banking apps or for backing up your blockchain wallets – and that the latter often have encryption mechanisms built into their apps for encoding/decoding (because you really don’t want your blockchain secret key to be visible to anyone with a text editor), so it wouldn’t surprise me if the former kind of app did something similar. You should read the documentation for whatever app/blockchain you are using, to see how to read/decrypt those files. But in general, it’s doubtful that the intention is for them to ever be human-readable. (And, IMO, they should not be abusing the JSON file extension by claiming their files are JSON if they are, in fact, encrypted and not plain-text JSON; but this parenthetical is just my opinion.)

      And if you are trying to get us to help you decrypt someone else’s online wallet, please understand: doing so, or us helping you do so, is highly illegal in all jurisdictions I have ever heard of, and immoral no matter what jurisdiction you are in. If instructions were ever posted here on how to help someone break into an encrypted wallet, they would be deleted/purged immediately, and the person posting those instructions would be banned permanently from this Forum.

    • PeterJonesP

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

      Watching Ignoring Scheduled Pinned until 6/30/25, 3:12 PM Locked Moved Notepad++ & Plugin Development
      8
      3 Votes
      8 Posts
      295 Views
      rdipardoR

      @PeterJones said in Announcement: NPPM_GETOPENFILENAMES and related are being deprecated in v8.8.2:

      Correct me if I’m wrong, but the “canonical C++ example” would be able to use TinyXML2 even if N++ itself is still using TinyXML, since the two are independent codebases. Right?

      Not much difference between them, except that version 2 is Unicode-aware. In fact HTML Tag is built with TinyXML2 in order to provide menu localization for pre-8.7 Notepad++ versions. It was even compatible with Windows XP, before I had to drop support for it in the 1.5.2 release.

    • Moutaz BakierM

      Notepad++ whitespace autocomplete define

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      21
      0 Votes
      21 Posts
      1k Views
      PeterJonesP

      @rinzwind5 said in Notepad++ whitespace autocomplete define:

      bgColor is hard-coded in each UDL and cannot be set to ‘inherit/default’ (as in use the NPP theme setting’s background).

      Nitpick: you said "Cannot be set … "; but the reality is that it would be better to say “can be set in exactly the same way as you do in the NPP theme setting’s background” – ie, by right clicking the color or toggling the checkbox for Transparent

      Here’s a screenshot of a UDL defined with keywords one two three in red-on-transparent (and that UDL’s “Default” styler set to black-on-transparent – not shown in screenshot), when originally set up in Default (stylers.xml):
      ef38e661-4a15-4182-94c0-b4ef82b6cddc-image.png

      And here, all I did was change the theme to Solarized - Light: the background changes with no change to the UDL:
      fe093247-e6bf-41d0-8ac6-2a345d36eaff-image.png

    • I

      .json format not recognized on load, not present in Style Configurator's Languages list

      Watching Ignoring Scheduled Pinned Locked Moved General Discussion
      8
      1 Votes
      8 Posts
      256 Views
      I

      “default style” is working fine for my purposes.

      I will propagate these configuration changes to any other old installations I may have.

      Thanks to all for the very effective help!

      -Phil

    • Neko_KaiohN

      Plugin/Script to clean up text noise?

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      7
      0 Votes
      7 Posts
      125 Views
      Lycan ThropeL

      @Neko_Kaioh said in Plugin/Script to clean up text noise?:

      Yeah, I used that one. Theres nothing on the file that I need to worry about, but it doesnt tell me anything I personally can use.

      "File Type: MSX Graph Saurus compressed image

      MIME Type: application/octet-stream;
      Suggested file extension(s): bin lha lzh exe class so dll img iso"

      So, if anyone reading this happens to know a program or two that I could try to view the file properly, I’d be very grateful.

      At best, you could use the Hex Editor plugin, however, from the information and this discussion so far, it is apparent that your abilities will be taxed, since you can’t tell when a file is binary or not, just by looking at it. If it’s like the file on the left that @PeterJones showed you, I noticed right away the first two letters in the file, PK, and to me that looks like a PKWare file, meaning it’s compressed at best, as matches your description of the file type that web site told you it was. That’s a compressed graphic file, meaning it’s encoded and at this point, I don’t see you having the skill set necessary to use a Hex Editor and be able to debug/decrypt a file.

      Your best bet it to use the file in an application that generated it, and you can do that on your own by using that ubiquitous tool, Google, and putting that file type in the search terms and follow all the links you can until you find a tool that you can use to open that file with so that it can be played, viewed or whatever it is that it is designed to do. As @Terry-R has suggested, we can’t help anymore than this.

    • Brent RiggsB

      Notepad++ open in new instance because I use multiple desktops

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      11
      0 Votes
      11 Posts
      8k Views
      notdodgeballN

      @PeterJones said:

      I concur. Has anyone ever asked for (specifically) not touching sessions.xml when -openSession/File > Load Session… is active?

      No, not really, its a shame.

    • Hank KH

      This is in regards to using "Find in Files" tab.

      Watching Ignoring Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
      7
      0 Votes
      7 Posts
      194 Views
      Hank KH

      @PeterJones

      An it was right above auto-detect encoding … lol

      Thx again