[Lazarus] Help on FCL?
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Fri Jan 20 14:01:49 CET 2012
Mattias Gaertner schrieb:
> The IDE registers fpdoc help for some FPC directories (rtl,
> fcl-base/src;fcl-db/src;fcl-extra/src;fcl-process/src;fcl-web/src;paszlib/src)
> and simply opens the URL
> http://lazarus-ccr.sourceforge.net/docs/<fpdoc
> path>.
Would it help to add a dummy package (or project?) with all (relevant)
FCL units?
Then an help author can add more units to that package, when adding docs
on further FCL units?
> The chmhelppkg package extends/overrides some of these settings.
> Maybe the chm authors can give some clues about the chm parts.
Existing chm files seem to work off-the-shelf, I see no need for special
updates there. The critical points are how F1 finds the (CHM/HTML) file
for a unit, and how FPDoc Editor finds the XML file.
>> [...]
>>> > Please explain how the LCL documentation is organized. The Lazarus
>>> > 0.9.30 LCL was one synthetic package, covered by a corresponding lcl.chm
>>> > file. But now (trunk) the package LCL contains the widgetsets, while the
>>> > common code resides in packages LCLBase and LazUtils. I would like to
>>> > have a single document (chm) for these 3 packages as well.
>>>
>>> Why?
>> Why what? In the last release a single CHM contains the LCL
>> documentation. Breaking it up into multiple packages requires to provide
>> different help files for every Lazarus version :-(
>
> Well, the binaries do that anyway. But I see your point that you want to
> use thew newest docs for an older version too.
The problems started when I wanted to add documentation for FCL units,
which are not recognized by the FPDoc Editor. Even if these docs will be
added to FPC, Lazarus must be able to find the related docs. This is not
related to Lazarus versions.
Lazarus adds further problems with the new package structure, which
become obvious only when somebody tries to build the docs for Lazarus trunk.
> This is a general problem for any long living package. Maybe we can add
> now some features that make it possible that the current version
> can use the next version. Ideas?
As already suggested: add synthetic packages or projects, to which the
contained units can be added freely. Then make the help system use these
projects to find the applicable doc and XML file for these units.
Or make the help system use FPDoc project files, instead of Lazarus
package files, which contain lists of all contained (documented) units
(<inputs>) and related docs (<descriptions>). The <descriptions> deserve
no special handling, as long as every $unit.pas is documented in
$unit.xml, and the xml files reside in the same directory - as is.
The project files have been introduced in fpdoc 2.7, to simplify
building the docs. Using them will also eliminate the need for
build_lcl_docs or similar scripts, when only the equivalent fpdoc
project is supplied. The FPDocManager (in examples) can create fpdoc
projects from/for existing Lazarus packages or projects.
>> [...]
>>> The fpdoc editor has to find the xml file for a package, not the other
>>> way round. So for the fpdoc editor it does not matter what module is in
>>> the xml file.
>>>
>>> But for fpdoc the module should be the Lazarus package name. The xml
>>> files needs to be updated.
>> IMO we should virtualize the direct relationship between Lazarus and
>> documentation packages. When every Lazarus package is assigned an FPDoc
>> package name, too, the LCL documentation could e.g. span the packages
>> LazUtils, LCLBase, LCL and (Lazarus) FCL, not hiding the FPC FCL any more.
>
> I think it would be confusing if the fpdoc page says package 'LCL', but
> the unit is in the package 'LazUtils'.
Slowly you seem to get it ;-)
It *is* already confusing, when the fpdoc page says package 'LCL', but
the unit is in the package 'LCLBase' :-(
A user will *not* be confused much, when all Lazarus supplied units are
documented in 'LCL' (e.g. lcl.chm), regardless of Lazarus-added
arbitrary subdivisions. He also will not be confused when FPDoc Editor
simply can put a description into wherever it is expected by the help
system.
>>> > Should the LazUtils units documentation use the same hack?
>>>
>>> What hack?
>> A documentation package name *different* from the Lazarus package name.
>
> Hack (computer science): "an inelegant but effective solution to a computing problem"
You forgot to add: a *fragile* solution, which may be broken by changes
somewhere else in the code or compiler.
> I think that is not the right word for a forgotten entry.
>
> Should I update the xml files or need something be updated first?
We have to find a working solution, before any attempt to make
descriptions (in)accessible in the new docs :-]
>> [...]
>>> The chm help
>>> format has the ability to combine multiple fpdoc files into one.
>> But only when these files are part of the same documentation package.
>
> Is this a limitation of the fpdoc chm writer?
It's a limitation of fpdoc in general. It can generate documentation
only for single *packages* (--package=xyz). This does not matter much
when building HTML help, residing in a bunch of related HTML files, but
it matters with every linear (monolithic) document, be CHM, PDF etc.
That's why I suggest a single (fpdoc) package 'LCL', instead of
cluttering the docs and indices(!) into LCL, LCLBase, LazUtils etc. IMO
a user will be confused when he *thinks* that he is using the LCL, but
has to search for help on it in LCLBase.chm, where up to the last
release *everything* LCL-related was documented in LCL.chm.
>>> It is
>>> useful to combine all xml files of a package into one chm. But of course
>>> it is also possible to combine multiple packages into a single chm file.
>> How that???
>
> If you really want a single chm file then you can for example use a
> simple search and replace to change all package names and links and
> feed the new xml files into the chm creator.
Please check such a "solution" yourself, and find out how it breaks
FPDoc Editor and Hints :-(
All I wanted to point out are *Lazarus generated* problems, not problems
of fpdoc.
> The fcl.lpk package does not need fpdoc help.
That's why I wonder why it is *named* 'fcl', when this name already is
in use for the FPC FCL. Rename it into LazFCL, and everything is fine again.
DoDi
More information about the Lazarus
mailing list