How to get breakpoint list ?
-
@Michael-Vincent Thank you for the code, what I don’t understand is how to turn that in c++, the functino is ::SendMessage(getCurrScintilla(), <MESSAGE>, wParam, lParam)), then I need to put pos, mask and the result in wparam and lparam, 3 parameters into 2 ?
-
@Gregory-D said in How to get breakpoint list ?:
long line = 0;
int marker = 0;
::SendMessage(curScintilla, SCI_MARKERGET, line, (LPARAM)&marker);This is :
long line = 0; int marker=::SendMessage(curScintilla, SCI_MARKERGET, line, 0);
Right ?
-
I think maybe you’re not connecting the dots. The Scintilla docs @Alan-Kilborn linked are crucial since the Notepad++ editing component is based on Scintilla. As for “translating” my NppExec script to C++:
[...] HWND getCurScintilla() { int which = -1; ::SendMessage( nppData._nppHandle, NPPM_GETCURRENTSCINTILLA, 0, ( LPARAM )&which ); return ( which == 0 ) ? nppData._scintillaMainHandle : nppData._scintillaSecondHandle; } [...] int line = 0; int mask = 1<<24; SendMessage(getCurScintilla(), SCI_MARKERNEXT, line, mask);
That should get you the first bookmark since N++ uses 24 as the bookmark marker and thus bitshitfted 24 is the mask the Scintilla call requires. You’ll need to put your own C++ code / logic around that to determine if you’ve found them all and how to find the next one, but again, my NppExec “pseudo” code should help you with that - as will the Scintilla docs.
Cheers.
-
@Michael-Vincent said in How to get breakpoint list ?:
SendMessage(getCurScintilla(), SCI_MARKERNEXT, line, mask);
sorry:
int markerAtLine = ::SendMessage(getCurScintilla(), SCI_MARKERNEXT, line, mask);
Cheers.
-
@Michael-Vincent said in How to get breakpoint list ?:
The Scintilla docs @Alan-Kilborn linked are crucial since the Notepad++ editing component is based on Scintilla. As for “translating” my NppExec script to C++:
I’m sure about that, but what Alan Kilborn doesn’t understand is that my problem is not about Scintilla api that is documented but with the c++ conversion.
Then right code is:long line = 1; int mask = (1 << 24); int result=::SendMessage(curScintilla, SCI_MARKERNEXT, line, mask);
You helped me, thanks.
-
@Gregory-D said in How to get breakpoint list ?:
Then right code is:
Yup - methinks that’s correct.
Cheers.
-
Tangential to the topic, but not quite off-topic:
I started working with an older version of Visual Studio recently, due to what is used for certain projects at work.
I notice that its breakpointing symbol is VERY similar to Notepad’s bookmark image, the main difference being coloring:
In the past I’ve had a passing thought of “where did the design for the N++ bookmark come from?” as it isn’t a stock Scintilla indicator symbol like those shown HERE (with a little “scrolldown” from where that link goes).
Perhaps this “red” older-Visual-Studio BP symbol (shown above) was the origin of the N++ bookmark symbol.
The obvious stock Scintilla choice (had it been used) would have been:
BTW, current VS (2019) BP symboling is much less “fancy”; appears rather flat:
-
@Alan-Kilborn said in How to get breakpoint list ?:
The obvious stock Scintilla choice (had it been used) would have been:
Do you have NppExec (or Python Script) that allows a script to run at startup?
SCI_SENDMSG SCI_MARKERDEFINE 24 SC_MARK_BOOKMARK SCI_SENDMSG SCI_MARKERSETFORE 24 255 SCI_SENDMSG SCI_MARKERSETBACK 24 255
(Python Scrip implementation will vary ;-)
Cheers.
-
Yes, that is good information.
The Pythonscript implementation is very similar and straightforward.BTW, I wasn’t complaining about Notepad++'s default bookmark symbol image in any way. Just wondering/commenting on its possible origins. It hadn’t occurred to me that the origins might be with an earlier VS version.
-
@Alan-Kilborn said in How to get breakpoint list ?:
BTW, I wasn’t complaining about Notepad++'s default bookmark symbol image in any way
Didn’t think you were :-) it was more of an exercise to see if I could do it. I have an NppExec ‘marker’ script that adds different colored “bookmarks” by placing normal bookmarks and then converting them. So I though it’d be possible to just change the default symbol / color.
Cheers.