Community
    • Login

    How to setup UDL keyword style overwrites?

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    syntaxudllanguagehighlightinghelp
    7 Posts 2 Posters 1.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Hanna ShipwayH
      Hanna Shipway
      last edited by Hanna Shipway

      Hello
      I am creating a UDL for a niche script, and trying to highlight ‘Parent’ as a keyword in such a way that it will only be highlighted if followed immediately by a ‘(’ , or following immediately after a '= ’ :

      DATA
      {
      	type = CelestialBody
      	targetBody1 = HomeWorld().Parent()
      }
      
      DATA
      {
      	type = Parent
      }
      

      but not when it’s on its own:

      DATA
      {
      	synopsis = Place a relay on a Parent celestial body.
      }
      

      It doesn’t seem as though I can override it using another keywords group or with the Folding in Code/Comment styles.
      Is there any way to do this? With delimiters perhaps?

      Meta ChuhM 1 Reply Last reply Reply Quote 0
      • Meta ChuhM
        Meta Chuh moderator @Hanna Shipway
        last edited by Meta Chuh

        welcome to the notepad++ community, @Adam-Shipway

        i won’t say impossible, but this one is gonna be tricky 😉

        i’ve played around a bit using delimiters instead of keywords, as they were suggested by @Eko-palypse a couple of weeks ago, but in your case, i’m a bit stuck on a few things that might be ugly (as seen at the screenshot below):

        • i get parentto correctly highlight if succeeded by a ( or preceeded by a =, but only if there’s no space in between prefix/suffix and the word parent

        • one thing that i couldn’t get fixed, is that the highlighting of parent(void) also highlights everything within the () brackets.

        anyways, here’s the screenshot in hope that you can use any of those settings for some of your needs.

        Imgur

        please keep us informed of any success you had, as well as any further problems you might encounter.

        ps: @PeterJones “exhumed” this old but very good udl documentation for us, just in case you don’t have it yet:
        https://ivan-radic.github.io/udl-documentation/comments/

        1 Reply Last reply Reply Quote 2
        • Hanna ShipwayH
          Hanna Shipway
          last edited by Hanna Shipway

          Thanks for the effort to help. It’s disappointing that languages requiring spaces sometimes don’t work well with the UDL system.

          I’m wondering if, since comments ignore spaces in their styling, they could be incorporated. I’m also wondering if nesting can be used to have anything inside the brackets be styled differently.

          ---- I did some messing around and I was able to get this result, where I believe the only problem is that the ‘=’ sign isn’t highlighted properly:
          https://i.imgur.com/H5nGnZ2.jpg (Edit: look at that quality from the new Win10 Snip tool! Eugh!)

          Using these settings (which I’ve listed, as screenshots would take an excessive amount of room):

          Keyword Group 1 (Blue, Prefix Off): Parent Random LAN

          Comment style (Black, Not Line):
          Open: =
          Close: ((EOL))
          Nesting: Delimiter 1, All KW Groups, Comment Line, All Operators, Numbers

          Delimiter 1 (Blue):
          Open: Random( Parent( LAN(
          Close: ) ((EOL)) ((EOL)) ((EOL))
          Nesting: All KW Groups, Comment & Comment Line, All Operators, Numbers

          Delimiter 2 (Black):
          Open: Random Parent LAN
          Close: ((EOL)) ((EOL)) ((EOL))
          Nesting: Numbers

          The entire UDL .xml file as it is currently (I have only ported 3 keywords to use the setup as of now): https://www.dropbox.com/s/od8sku0wkpceh79/contractcfg.xml?dl=0
          A file for use with the language (tests at bottom): https://www.dropbox.com/s/mi1caxm5hsnvg9q/wd_lKard.cfg?dl=0

          Any help with getting ‘=’ to highlight differently, as well as any ways to clean up my messy UDL setup, would be greatly appreciated.

          Meta ChuhM 1 Reply Last reply Reply Quote 2
          • Hanna ShipwayH
            Hanna Shipway
            last edited by

            Updated link for results in case the previous one fails or is unclear: https://i.imgur.com/DMPUBmH.png

            1 Reply Last reply Reply Quote 1
            • Meta ChuhM
              Meta Chuh moderator @Hanna Shipway
              last edited by

              @Adam-Shipway

              nice work, thanks for exporting and sharing. 👍

              Any help with getting ‘=’ to highlight differently, as well as any ways to clean up my messy UDL setup, would be greatly appreciated.

              i’ve made one single modification that delivers following result with caveats:

              Imgur

              changes:
              i’ve removed the = to ((EOL)) of the nesting comment line and added = to operators 1

              pro: HomeWorld() is highlighted correctly as keyword (before, with the nesting =comment style, it was black)

              con: at test = LAN LAN does not get highlighted anymore due to the space.

              1 Reply Last reply Reply Quote 2
              • Hanna ShipwayH
                Hanna Shipway
                last edited by

                Thank you for the information :)

                I added the rest of the keywords to the .xml and uploaded it (same link as before). This fixes HomeWorld() because it wasn’t part of the list before. They’re now separated into two delimiters (1&2, former 2 has now moved to 3) as one of the keyword groups I wanted to apply this to is a different colour. I also checked D2’s nesting in the comment style options to support this separation.

                It did break highlighting for numbers inside brackets, but checking D1 and D2 nesting inside of D3’s options seems to fix it.

                The ‘=’ situation is a little complicated however. I originally put it in the comment style as it would allow it to ignore any spaces after it, hence why when moved to Operators 1 it won’t highlight keywords after a ‘=’ anymore (such as the case you found with LAN). I guess this is personal preference, but I kept it in comments, even if the equal sign stays black.

                1 Reply Last reply Reply Quote 1
                • Hanna ShipwayH
                  Hanna Shipway
                  last edited by Hanna Shipway

                  I’ve realised that some of the { } brackets aren’t coloured properly anymore, but only after instances of DATA or PARAMETER, and for some reason // comments after instances of PARAMETER don’t highlight either. Well, this is perplexing.

                  1 Reply Last reply Reply Quote 1
                  • First post
                    Last post
                  The Community of users of the Notepad++ text editor.
                  Powered by NodeBB | Contributors