Community
    • Login

    Marker number

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    19 Posts 3 Posters 1.1k 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.
    • Alan KilbornA
      Alan Kilborn @Paul Wormer
      last edited by Alan Kilborn

      @Paul-Wormer said in Marker number:

      print(notepad.allocateMarker(25))
      None
      print(notepad.allocateMarker(0))
      None

      What does that mean?

      So the argument is numberRequested.

      In the first case you are asking for 25, presumably contiguous, markers to be allocated. That’s way too many; that many aren’t going to be found.

      In the second case you are asking for 0 markers to be allocated. That’s also pretty nonsensical.

      If you want one marker, try notepad.allocateMarker(1). Each time you call that, you should get a new number returned.

      (It appears you are thinking that you tell it which marker ID you want, at least from your usage of 25 – that isn’t how it works)

      Paul WormerP 1 Reply Last reply Reply Quote 2
      • Paul WormerP
        Paul Wormer @Alan Kilborn
        last edited by

        @Alan-Kilborn I expected a boolean upon return: if true markerNr is allocated; if false markerNr is free. That is not how it works apparently.

        Alan KilbornA 1 Reply Last reply Reply Quote 0
        • Alan KilbornA
          Alan Kilborn @Paul Wormer
          last edited by Alan Kilborn

          @Paul-Wormer said in Marker number:

          I expected a boolean upon return: if true markerNr is allocated; if false markerNr is free. That is not how it works apparently.

          No, it isn’t, but…why do you care what the actual number is?
          In your code, go with:

          my_marker_id = notepad.allocateMarker(1)

          and then wherever you were using a hard-coded-magic-number for a marker number, use my_marker_id instead:

              my_marker_id = notepad.allocateMarker(1)
              editor.markerDefine(my_marker_id, MARKERSYMBOL.CIRCLEPLUS)  
              nSymbol =  editor.markerSymbolDefined(my_marker_id)    
              editor.setMarginWidthN(marginNr, 16)               
              editor.setMarginTypeN(marginNr,  MARGINTYPE.SYMBOL)
              editor.setMarginMaskN(marginNr, 1<<my_marker_id )      
              editor.markerAdd(line-1,my_marker_id) 
          

          Note that this kind of code will allocate a new number each time you run the script. So, as you’re working on the script, you’ll probably find you’ll be out of markers fairly quickly. :-(

          To solve that, you could do:

          try:                                              # <-- important change!
              my_marker_id                                  # <-- important change!
          except NameError:                                 # <-- important change!
              my_marker_id = notepad.allocateMarker(1)      # <-- important change!
          editor.markerDefine(my_marker_id, MARKERSYMBOL.CIRCLEPLUS)  
          nSymbol =  editor.markerSymbolDefined(my_marker_id)    
          editor.setMarginWidthN(marginNr, 16)               
          editor.setMarginTypeN(marginNr,  MARGINTYPE.SYMBOL)
          editor.setMarginMaskN(marginNr, 1<<my_marker_id )      
          editor.markerAdd(line-1,my_marker_id)  
          
          Paul WormerP 1 Reply Last reply Reply Quote 2
          • Paul WormerP
            Paul Wormer @Alan Kilborn
            last edited by

            @Alan-Kilborn Yes, of course. It seems that the description of notepad.allocateMarker is wrong by stating --> bool. Instead it should state --> int. That put me off.

            Alan KilbornA 1 Reply Last reply Reply Quote 0
            • Alan KilbornA
              Alan Kilborn @Paul Wormer
              last edited by Alan Kilborn

              @Paul-Wormer said in Marker number:

              It seems that the description of notepad.allocateMarker is wrong by stating --> bool. Instead it should state --> int. That put me off.

              Good catch!
              See HERE.

              Paul WormerP 1 Reply Last reply Reply Quote 0
              • Paul WormerP
                Paul Wormer @Alan Kilborn
                last edited by

                @Alan-Kilborn Very good. Will Bruderstein listen, what is your experience?

                Alan KilbornA 1 Reply Last reply Reply Quote 0
                • Alan KilbornA
                  Alan Kilborn @Paul Wormer
                  last edited by

                  @Paul-Wormer said in Marker number:

                  Will Bruderstein listen, what is your experience?

                  Dave Bruderstein and @chcg (Christian) are active on the PythonScript project; maybe not “super” active, but active.

                  I’d think they’d listen, it’s just an easy documentation error.

                  1 Reply Last reply Reply Quote 0
                  • Alan KilbornA
                    Alan Kilborn
                    last edited by

                    I wrote some test code:

                    for j in range(100):
                        my_marker_id = notepad.allocateMarker(1)
                        print(my_marker_id)
                        if my_marker_id is None: break
                    

                    and obtained as output:

                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                    10
                    11
                    12
                    13
                    14
                    None
                    

                    Not sure where 0, 15, and 16 are…?

                    Paul WormerP 1 Reply Last reply Reply Quote 1
                    • Paul WormerP
                      Paul Wormer @Alan Kilborn
                      last edited by Paul Wormer

                      @Alan-Kilborn When I run my original script with markerNr (is marker_id) = 0 or 15, all is OK. The circleplus appears where you would expect it.

                      When I run your little script I get:

                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      None
                      

                      So during my session I claimed 0 thru 6 and 15. You probably claimed only 0 and 15. Apparently 16 and higher are taken by some plugins.

                      Alan KilbornA 1 Reply Last reply Reply Quote 0
                      • Alan KilbornA
                        Alan Kilborn @Paul Wormer
                        last edited by

                        @Paul-Wormer said in Marker number:

                        You probably claimed only 0 and 15. Apparently 16 and higher are taken by some plugins.

                        I ran on a virgin system with only the PythonScript plugin (aside from the plugins that come with Notepad++). I’m fairly confident (as I hinted before) that PS doesn’t claim any itself.

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