Marker number
-
@Paul-Wormer said in Marker number:
BTW, how about your promise of a few day ago?
See HERE for “status”.
:-) -
@Paul-Wormer said in Marker number:
print(notepad.allocateMarker(25))
None
print(notepad.allocateMarker(0))
NoneWhat 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) -
@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.
-
@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)
-
@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. -
@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. -
@Alan-Kilborn Very good. Will Bruderstein listen, what is your experience?
-
@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.
-
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
, and16
are…? -
@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.
-
@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.