Search within comments

There was a question on the programming reddit today about finding text within comments only. There’s no way to do this from the UI in Programmer’s Notepad, but it’s easy in PyPN:

[sourcecode language=”python”]d = pn.CurrentDoc() s = scintilla.Scintilla(d)

searchopts = pn.GetUserSearchOptions()

while not pn.CurrentDoc().FindNext(searchopts) == -1: # s.GetStyleAt(s.TargetStart) will work in the next PyPN release style = d.SendMessage(2010, s.TargetStart, 0) # pn.AddOutput(str(style)) - find the current style if d.SendMessage(2010, s.TargetStart, 0) == 2: break[/sourcecode]

That small bit of code will find whatever is in the current user’s search options only where the style is 2 – that’s the C++ comment style number. Sadly these numbers are not uniform across schemes, so we’d need to do a bit more work to do this properly across anything. To turn that small snippet of code into a script that can be run from a keyboard shortcut is also easy:

[sourcecode language=”python”]import pn, scintilla

@script(“Find In C++ Comments”) def FindInCComments(): d = pn.CurrentDoc() s = scintilla.Scintilla(d)

searchopts = pn.GetUserSearchOptions()

while not pn.CurrentDoc().FindNext(searchopts) == -1:
    style = d.SendMessage(2010, s.TargetStart, 0)
    if d.SendMessage(2010, s.TargetStart, 0) == 2:
    break[/sourcecode]

Just save that into your scripts directory and you’re good to go!