[Lazarus] lHelp improvements

Marco van de Voort fpc at pascalprogramming.org
Mon Dec 28 21:05:00 CET 2020

Op 12/28/2020 om 4:03 PM schreef Andrey Sobol via lazarus:
>> Afaik most of the binary indexes (index, FTS) can be mergesorted 
>> together rather cheaply and then stored on disk. Using these rather 
>> than converting everything to text and then parse that again would 
>> make it very fast. This is what HH does.
>> Even faster is caching the result of the merge on disk (which HH also 
>> does, but only in case of "merged" chm files, which doesn't work with 
>> FPC generated CHM files yet), these are then stored as CHW.
>> But to invalidate the cache, it should be stored which CHMs were used 
>> to generate it. So that the cache can be invalided.
>> I'll look into the various fpdoc and chm stuff from tomorrow, when I 
>> get home again
> I agree with you that need to do a storing on disk or to produce CHW. 
> And I will do this later.

It is wise to bring this up early, because it might require changes to 
the general Lazarus  help system, since lhelp needs to get a list of 
registered help files at once (so it can manage the combined index 
together) rather than individually.

This is also the reason the CHM package does not support it yet, because it

> Creating a new chm package additions also requires a lot of time.

True, but sometimes new is simply needed to not program yourself into 
the corner

> But now I  have not any documentation on chm format,  I have found 
> only dribs and drabs.

Search for "CHMSPEC", but there as many holes as bits that are 
documented. Specially the process of folding the input data into the 
datastructure is badly described. Actually the most complete bit is the 
sources of the chm package and chmls/chmcmd.

> The situation is such that the documentation seems an existing, but it 
> is very difficult to use for many reasons.
> Actual version of lHelp has to work rightly and then I can do next 
> version. First start 1.5-2 sec I think it is well for loading entire 
> packet of chms and indexes.

As for the CHW bit, I would not try to make the saved index in CHW, just 
in some own format.   Increasing CHM compatibility is hard and difficult 
work. The main missing problem is that for some unknown reason, hh.exe 
doesn't FPC generated "merged" chms. Neither slave nor master chm.

More information about the lazarus mailing list