4 - should we allow *.ext.schelp to add to related:: and categories:: ?
6 - clean up old-help compatibility, do we really need it in both HelpBrowser-goTo and SCDoc.findHelpFile?
8 - HelpBrowser: clean up openNewWindows setting. only have a single class variable?
10 - how to merge methods docs for overwritten methods? replace the whole method doc, or add to it?
13 should we warn if the method signature is not the same as the target method, if any?
14 what to do with method argstring when copying from non-class/instance to class/instance and vice versa?
15 should we cache last used parse tree in the common case of copying many methods from the same source?
17 - Additional triggers for dest-doc should update:
18 - implementing class changed
19 if(doc.redirect.notNil and: {doc.implKlass != doc.klass.tryPerform(doc.redirect.asSymbol)})
20 but this only works if doc.implKlass was the *old* implementing class..
21 so in this case we actually need to store stuff on disk.
22 - another docs metadata changed (for link:: titles)
23 not sure what to do about that.. actually it must be solved by a dependency system.
24 docs that links to other docs has those as dependencies.
25 - class hier changed (for classtree:: tag)
26 this means we need to know if a doc uses classtree::, could be marked in the SCDocMapEntry.
27 also we need to store last class hier on disk, or just always re-render docs that use classtree:: (once per session)
29 - SCDoc.cpp: replace node->children with a linked list (node->next and node->tail)
30 instead of realloc'ing? same for text strings instead of using strmerge?
33 - also write the arg string and the first line of each method description to a methods.js,
36 - private:: now counts as a subsection (like method:: and copymethod::)
37 this means it is a section that can't have any text in it, meaning it needs
38 to come after any section text.
39 an alternative would be to use the syntax: class/instancemethods optprivate subsections
40 but that would mean it *must* come right after the class/instancemethods section header.
41 This would be a lot better actually, since we can then collect all private methodnames
42 easier instead of having to scan the whole section!
44 - deprecate keyword:: and introduce a keywords:: in header only?
45 one could then optionally use anchor::kw_word:: to set kw locations in the doc.
46 the idea is that it would speed up metadata parsing, but I'm not sure it would.
48 - error lines are not always correct, probably because many tags eat trailing newlines.
49 but if we eat newlines before a tag, it will break EOL termination detection..
51 - move inherit-mets from JS to renderer. get rid of docmap.js loading in docs.
52 Export those lists locally for each class doc instead.
53 OTOH, that means that we write the whole Object method list into *each* class doc!
54 Not so nice.. so keep it like this for the moment!
56 (then, do we really need the subclasses/superclasses in docmap.js?
57 yes, maybe for method search results ("class A inherited by B, etc..")
58 but then, at least only write it to docmap.js, no need to store it in SCDocMapEntry.)
60 * Adjust or deprecate all old classes and methods related to help:
74 *Platform, Platform : helpDir - deprecate in favor of SCDoc.helpTargetDir ?
75 PathName : helpFilesDo
76 Help, *Help : findHelpFile - Used by SCDoc to get old help, fix this when all old help is converted
77 Help : findHelpFileOrElse
78 Class, Method : hasHelpFile - in SCDoc all classes has a helpfile - even if it's an autogenerated stub
81 AutoClassHelper, ClassHelper, *Help, TopicHelper, UGenHelper : makeHelp
83 TopicHelper : initTopicHelper
84 UGenHelper : initUGenHelper
85 *Quarks, Quarks : help
88 AutoClassHelper, ClassHelper : initClassHelper
90 Methods done but could be improved:
91 // Class : helpFileForMethod - FIXME: should jump to method anchor
92 // Method : help - FIXME: should jump to method anchor
94 Also deprecate class.categories since this is now in the helpfiles instead?
95 (categories can still be reached run-time from SCDoc.documents[path])
98 IDEAS AND IMPROVEMENTS
99 ----------------------
100 * description for categories? HelpSource/category_descriptions, example:
101 Server>Abstractions: Client-side classes representing server-side stuff
102 show in header and category browser/overview..
103 extensions should be able to add such descriptions too, but not overwrite existing descriptions?
105 * comments (* like this? *)
107 * shortcuts for links to method in class? mlink::Node-set:: -> link::Classes/Node#-set::
108 or clink::Node#-set:: -> link::Classes/Node#-set:: ?
110 * render binary op methods differently? like ArrayedCollections ++
111 we don't want it to display as "++ (aCollection)" do we? rather "++ aCollection" or "this ++ that" or something..
112 binary ops only uses chars from this list: !@%&*-+=|<>?/
117 - make a new renderer also in C??
118 integrated with sclang that can access the introspection data (classtree and methods).
119 it could use the docnode tree directly from the parser instead of going through sclang objects
121 - or, let both parser and renderer be standalone.
122 * introspection data could be provided by a machine-readable file written by sclang
123 - class tree, their methods, the filenameSymbol for each class and method.
140 but then we need also an output mode that generates sclang code for docmap construction.
142 - even make the whole scdoc thing in C?
143 * find all helpsource files and render if newer than html target
144 * copy any other files as is
145 * write docmap.json and/or docmap.scd for sclang interface, needed by find-help-for-string, etc.
147 * docmap is also needed internally by scdoc renderer:
148 - document title for links
149 - class summary for classtree::
150 We could have a mode to only parse the header, and run this first to create the initial docmap.
151 then when we parse all docs fully, the other metadata would be filled in (documented methods, keywords, etc)
153 * it should be fast enough to render all updated files at startup
154 * the process can run in background with .unixCmd, with an action to set helpAvailable=true