• Login
Community
  • Login

Location navigate plugin + Python editor.markerAdd() colors

Scheduled Pinned Locked Moved General Discussion
9 Posts 5 Posters 404 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.
  • A
    Anthony Blinco
    last edited by Anthony Blinco Jun 6, 2021, 9:10 PM Jun 6, 2021, 9:09 PM

    When i set the colors of a python marker and add a mark, the location navigate plugin will override those colors if i have modified a line. Is there anyway around this?

    P 1 Reply Last reply Jun 6, 2021, 9:33 PM Reply Quote 0
    • P
      PeterJones @Anthony Blinco
      last edited by Jun 6, 2021, 9:33 PM

      @Anthony-Blinco ,

      Perhaps try to choose a marker ID that Location Navigate doesn’t use. There are only 32 marker numbers (0…31) and 25…31 are used by Scintilla, and 21-24 appear to also be defined by Notepad++. I doubt that Location Navigate uses all of 0…20, so you could keep trying until you found one that LN doesn’t use (or check LN’s source code).

      I checked for which ones were already defined on my setup using the PythonScript console:

      >>> for mn in range(0,32):
      ...     console.write("symbol#{} => {:02x}\n".format(mn, editor.markerSymbolDefined(mn)))
      ... 
      

      You could probably do something similar on yours… maybe make sure that LN has marked changed lines before running that, in case it doesn’t add in its markers until it finds changed lines for the first time.

      Good luck.

      M 1 Reply Last reply Jun 6, 2021, 10:40 PM Reply Quote 0
      • M
        Michael Vincent @PeterJones
        last edited by Jun 6, 2021, 10:40 PM

        @PeterJones said in Location navigate plugin + Python editor.markerAdd() colors:

        doubt that Location Navigate uses all of 0…20

        IIRC, Location Navigate uses 10 and 11 for saved and changed.

        Cheers.

        1 Reply Last reply Reply Quote 1
        • A
          Anthony Blinco
          last edited by Jun 6, 2021, 11:01 PM

          I am using 16, i have tried 8 as well and it still apears to override my colors.
          In the end i set Location navigate to use a mark in the margin rather than highlighting the line.
          I would much prefer the highlight though.
          Thanks for the info, very handy as usual

          M 1 Reply Last reply Jun 7, 2021, 1:33 PM Reply Quote 0
          • A
            Anthony Blinco
            last edited by Jun 6, 2021, 11:27 PM

            On an issue related to this.
            I am leaving markers in the text file to indicate which lines have been marked.
            I use a startup script callback BUFFERACTIVATED to pre-process the file and set the markers , if any.
            Is there a way i can set some flag on a per buffer basis to say that i have already processed this file?

            E 1 Reply Last reply Jun 7, 2021, 10:05 AM Reply Quote 0
            • E
              Ekopalypse @Anthony Blinco
              last edited by Jun 7, 2021, 10:05 AM

              @Anthony-Blinco

              There are several ways to accomplish this, my preferred way when I need flags is to use the setProperty and getProperty methods

              >>> help(editor.setProperty)
              Help on method setProperty:
              
              setProperty(...) method of Npp.Editor instance
                  setProperty( (Editor)arg1, (object)key, (object)value) -> None :
                      Set up a value that may be used by a lexer for some optional feature.
              
              
              >>> help(editor.getProperty)
              Help on method getProperty:
              
              getProperty(...) method of Npp.Editor instance
                  getProperty( (Editor)arg1, (object)key) -> str :
                      Retrieve a "property" value previously set with SetProperty.
                      Result is NUL-terminated.
              

              so with something like

              editor.setProperty('initialized', '1')
              editor.getProperty('initialized')
              
              1 Reply Last reply Reply Quote 4
              • A
                Alan Kilborn
                last edited by Alan Kilborn Jun 7, 2021, 12:42 PM Jun 7, 2021, 12:41 PM

                @Ekopalypse go this far, so I’ll add this:

                If you .setProperty(), that property value string gets attached to the active file document.
                If you switch documents and do a .getProperty() for the same property argument, you’ll get an empty string returned.
                If you switch back to the original doc and do a .getProperty() on the property argument, you’ll get your original value returned.

                Maybe obvious, but perhaps worth explicitly stating.

                1 Reply Last reply Reply Quote 2
                • M
                  Michael Vincent @Anthony Blinco
                  last edited by Jun 7, 2021, 1:33 PM

                  @Anthony-Blinco said in Location navigate plugin + Python editor.markerAdd() colors:

                  I am using 16, i have tried 8 as well and it still apears to override my colors.

                  If you haven’t already, it’s worth giving Markers section of Scintilla docs a read. You define a marker and map it to a type - defined colors for it and then it is applied cumulatively to a line. Marker numbers are just powers of 2 (0-31) to fill in a bitmap to tell which marker values are enabled for each line.

                  For example, using Location Navigate and a Notepad++ bookmark all on the same line, the marker value is:

                  DEC: 16778240
                  BIN: 0000 0001 0000 0000 0000 0100 0000 0000
                  

                  After saving, the value is:

                  DEC: 16779264
                  BIN: 0000 0001 0000 0000 0000 1000 0000 0000
                  

                  154023b1-095f-4f1b-9ba9-fff72f01ca61-image.png

                  Notice, the most significant 1 in the marker value doesn’t change - that’s the Notepad++ bookmark marker value 24. The least significant 1 in both numbers does change - that’s LocNav using 10 for a change marker and 11 for a saved marker. In both instances, the actual “marker” number for the line is the “total” of all markers on that line.

                  Hope this helps.

                  Cheers.

                  1 Reply Last reply Reply Quote 5
                  • A
                    Anthony Blinco
                    last edited by Jun 8, 2021, 1:00 AM

                    Thanks for the very detailed responses.
                    Properties look like they might do the trick for me.
                    I will definitely read the Scintilla docs as i’m sure i haven’t implemented them properly.

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