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

      @Paul-Wormer said in Marker number:

      BTW, how about your promise of a few day ago?

      See HERE for “status”.
      :-)

      1 Reply Last reply Reply Quote 0
      • 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