Community
    • Login

    Question about styles for themes

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    7 Posts 4 Posters 1.4k 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.
    • AjayKMehtaA
      AjayKMehta
      last edited by

      Hi,

      I noticed that a lot of built-in themes are missing style settings for a few languages like PowerShell so I was hoping to submit some PRs to the GitHub source repository to fix this issue.

      I found the reply by @PeterJones in the thread theme keywords: “WORD”, “KEYWORD” and “TYPE WORD” etc. very helpful to get a better understanding of how themes/styles work. I have some follow-up questions:

      Q 1. Is each style (COMMENT) for a language (SQL) in a theme file supposed to have the same styleID as defined for that style in stylers.model.xml? Is it OK to have 2 styles for the same language in a theme with the same styleID?

      This is an excerpt for Python in Solarized.xml:

       <WordsStyle name="F STRING" styleID="17" fgColor="2AA198" bgColor="002B36" fontName="" fontStyle="0" fontSize="" />
       <WordsStyle name="F CHARACTER" styleID="17" fgColor="2AA198" bgColor="002B36" fontName="" fontStyle="0" fontSize="" />
      

      Here’s how the same styles are defined in stylers.model.xml:

       <WordsStyle name="F STRING" styleID="16" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
       <WordsStyle name="F CHARACTER" styleID="17" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
      

      Both styles in Solarized.xml have the same styleID (17). The styleID for F CHARACTER matches what is in stylers.model.xml but the styleID for F STRING is different: 16 in stylers.model.xml not 17.

      Q 2. Are all the styles that are defined for a given language listed in stylers.model.xml? Or are there any undocumented styles?

      A lot of themes (e.g. Bespin, Moonokai, etc.) show a STRINGEOL style for Python but there is no corresponding style for Python in stylers.model.xml. Similarly, khaki.xml has the following styles for SQL: COMMENT LINE DOC, DEFAULT, IDENTIFIER but they do not exist in stylers.model.xml.

      I would appreciate it if somebody knowledgeable in these matters could reply.

      Thanks,
      Ajay

      EkopalypseE PeterJonesP Michael VincentM 3 Replies Last reply Reply Quote 1
      • EkopalypseE
        Ekopalypse @AjayKMehta
        last edited by

        @AjayKMehta

        Themes are unfortunately treated stepmotherly, means the fewest, probably none, has all the information. Stylers.xml is the default theme of Npp and is maintained. If something is always different, I would trust the stylers.xml.

        No, the style ids have to be unique for each lexer.
        If a style ID is used often, the last one will probably overwrite the previous ones.

        In general this works like this.
        You have a document open and select the appropriate language in the Language Menu.
        What happens is that npp now passes the style information defined for this language to Scintilla and the respective lexer only says which area in the code should be colored with which style.

        Makes this sense?

        AjayKMehtaA 1 Reply Last reply Reply Quote 3
        • PeterJonesP
          PeterJones @AjayKMehta
          last edited by PeterJones

          @AjayKMehta ,

          Many of the themes are way out of date – they haven’t been updated in years. Since the underlying Scintilla component (which defines the language lexers) has been updated in that timeframe, some old styleIDs have been replaced with new ones.

          stylers.model.xml (from which stylers.xml is derived) is the canonical source for what is known available. I do not know of any “hidden” styleIDs for a given language.

          Two different styles (F STRING and F CHARACTER) require two different styleID, so if a theme lists the same ID for both, it is wrong.

          (I see that @Ekopalypse beat me to most of these points, but I’ll hit submit anyway. ;-))

          AjayKMehtaA 1 Reply Last reply Reply Quote 3
          • Michael VincentM
            Michael Vincent @AjayKMehta
            last edited by

            @AjayKMehta said in Question about styles for themes:

            would appreciate it if somebody knowledgeable in these matters could reply.

            I took my favorite style Obsidian.xml and added missing language and make the stlye IDs matchstylers.model.xml of course keeping with the color scheme of obsidian. It was a manual process as others described since themes are not updated with Notepad++ the way stylers.model.xml is.

            Cheers.

            AjayKMehtaA 1 Reply Last reply Reply Quote 3
            • AjayKMehtaA
              AjayKMehta @Ekopalypse
              last edited by

              @Ekopalypse

              Thanks for your reply. It helps clear things up: no duplicate style IDs and if I see the same style for the same lexer has different IDs across themes, I should trust that the style IDs that match the value in stylers.xml are correct.

              1 Reply Last reply Reply Quote 4
              • AjayKMehtaA
                AjayKMehta @PeterJones
                last edited by

                @PeterJones

                Thanks for your reply and your original post which was super-helpful. Yes, I noticed they are way out of date, e.g. last updated in 2006 for a theme I looked at today :)

                Glad I clarified these points before I set off to do any work on this.

                1 Reply Last reply Reply Quote 0
                • AjayKMehtaA
                  AjayKMehta @Michael Vincent
                  last edited by

                  @Michael-Vincent

                  Yes, I’ve done this in the past too but when you update NotePad++, then the install won’t overwrite existing themes and you might have to merge changes to your theme if the release also updated the theme.

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