Re: Edita help window
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Apr 12, 2007
- 522 views
CChris wrote: <snip> >I'm quite puzzled. <snip> >A gallant try, but... imho the design has some serious flaws. The help system in Edita has several detractors... Perhaps if I outline the so-called design it currently has: 1) Requirements/examples [existing functionality] 1.a Pressing F1 while on "repeat" gives the builtin definition. Pressing Reference Manual opens lib_X_X.htm#<builtin> (if found) accordingly. 1.b Pressing F1 while on "getFileExtension" in edita.exw shows the definition of that function in eamisc.ew. Pressing Examine Code opens eamisc.ew at that routine. This uses information previously stored (automagically) in edita.edb and sets the window title to eg "C:\Program Files\Edita\eamisc.ew" and correctly identifies say the 0.2.7 version actually being called even when edita.edb "knows" about a same-name function elsewhere, eg in a copy of 0.2.6 still lying around. 1.c Pressing F1 while on a call to the non-global "cut_line()" in misc.e shows a window similar to that in 1.b entitled "Locally defined in this source". Note that this parses the file for local routine definitions not in edita.edb 1.d Pressing F1 while on "all_ascii" in misc.e shows 8 lines it found that in. Note that this searches the file for instances (of local variables and constants) in a naieve fashion, .txt files as well and within comments and strings, and sets the result window title to "Local definition/uses of all_ascii in this source". 1.e A Keyboard Help button is given on all the above, which is shown immediately if it cannot find any other help about the word under the cursor. If you were looking for keyboard help, but something else shows, you can just press Alt K [see 2.d]. 2) Bugs and Wishes 2.a In 1.d cursoring to the 6th instance and pressing return should jump to the line. 2.b Pressing F1 on "it", "the", "at", etc can produce strange/silly results. (shrug) 2.c When displaying say the getFileExtension example above, it should display the code up to end procedure/function/type as well. I think it used to do that once. 2.d A separate key (Ctrl F1) for Keyboard Help is a good idea, will do that. 2.e Incorporating other help systems, eg Juergen's command_line html searcher, or F1 jockey. However this does *NOT* mean that all of 1 can be thrown in the bin. In the past I have had trouble passing eg "open" or "repeat" to these things, and to cut a very long story short have pretty much given up trying, and developed a bit of a sensitive "why did I bother making it open source?" attitude along with a not insignificant despair at any readiness to ditch 1, and 1.b in particular. Perhaps these things could be added in the form of user defined tools. 2.f CChris wants a filter for C++ ifdefs and pragmas. If you let/wait for me to do it, I will probably just get it all wrong anyway ) 2.g Pressing F1 on a routine definition somewhat pointlessly shows the routine as per 1.c, though I generally consider this as only the most minor of annoyances. 2.h After "Examine Code", I would like to "Go Back" to the previous source/line. (This may not technically be Help per se, but that button furthers need.) 2.i Global variables and constants are not currently stored in edita.edb and hence are not found when F1 is pressed in a different source. However in order to correctly handle say global user defined types, the background processing would have to be completely rewritten and about ten times bigger than it is now, basically a full-blown compiler front end, no less. At the moment, globalCache is a plain table which it uses find() on - it will most certainly need to become a hash table if loaded with global constants and variables as well as routines. Any others? Testing note: when inserting/deleting/renaming globals, you should perhaps wait for the red triangle on the toolbar to return to grey, indicating that the "automagic" update of edita.edb has completed after a file save, before testing F1. In some cases a restart of Edita may be needed (let me know), particularly when cutting and pasting global routine definitions and include statements between files, in order to flush some global items cached in memory. In extreme cases, you may even need to run Tools/Verify edita.edb, again let me know if you can reproduce. Actually, I know one easy way to cause this last point: physically deleting or renaming a file. Your "nw" example should be reviewed in light of 1.d and 2.b >3/ Staggered constant declarations don't display, namely the platform() > return values in misc.e. Not really sure what you mean or expect there. Perhaps you want to edit the lang/ealng_en.exh file and send me some updates. Generalising this is another matter, for example pressing F1 on some call to db_select(), without modifying database.e, I cannot imagine how it might list DB_OK etc, which is how I am hopefully wrongly interpreting the statement/suggestion just made. Or, (not sure I would agree with this as "Examine Code" should be used when this much detail is needed), are you saying that F1 on DB_OK should also show DB_OPEN_FAIL etc [2.i notwithstanding] as well? >I'm using what I think is the latest release - it has refolding and IDs as > 23/12/05. The About box should really display the version number somewhere. The version number should be just left of the 23/12/05, in the window title. I am still slowly making progress on a new release, but don't hold your breath. Regards, Pete