+1
Can you consider the idea of a PragmaHelpBuilder as an extension to your system?
I can define a method like this on some class:
helpForThisPartOfTheSystem <helpTopic: 'Title goes here'>
^'Contents goes here. foo bar wibble'
And then I can find all of these pragmas:
| pragmas topics | pragmas := ((SystemNavigation default allMethodsSelect: [:each | each pragmas notEmpty]) select: [:each | each compiledMethod pragmas allSatisfy: [:eachPragma | eachPragma keyword = #helpTopic:]]) collect: [:each | each compiledMethod pragmaAt: #helpTopic:]. topics := pragmas collect: [:each | HelpTopic title: (each argumentAt: 1) contents: (each method valueWithReceiver: nil arguments: #())]
With a bit more annotation we could build classes just like the simple subclass case of CustomHelp where you only have a few methods on the class side. i.e just like your metacello example. Then there is no dependency on CustomHelp, and help comments can go anywhere in our various package structures for e.g pharo core, dev image. We would just need to decide on a set of annotations.
I would love to do something like testXXX <helpTopic: 'Collection' subcategory: 'adding'> or something like that Stef