Commit graph

10 commits

Author SHA1 Message Date
Gabor Melis 2be4173812 various documentation changes
Some checks are pending
CL-host / ecl (push) Waiting to run
CL-host / clisp (push) Waiting to run
CL-host / ccl (push) Waiting to run
CL-host / cmucl (push) Waiting to run
CL-host / sbcl (push) Waiting to run
CL-host / compare-xc-host-fasls (ccl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (clisp, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (cmucl, false) (push) Blocked by required conditions
CL-host / compare-xc-host-fasls (self, false) (push) Blocked by required conditions
Linux arm / build (push) Waiting to run
Linux arm64 / build () (push) Waiting to run
Linux qemu / build (ppc64le) (push) Waiting to run
Linux qemu / build (riscv64) (push) Waiting to run
Linux / build (x86, --without-sb-unicode, ) (push) Waiting to run
Linux / build (x86, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Linux / build (x86-64, --with-sb-fasteval --without-sb-eval --with-nonstop-foreign-call, fasteval) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread --with-nonstop-foreign-call, sse4) (push) Waiting to run
Linux / build (x86-64, --with-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-thread, ) (push) Waiting to run
Linux / build (x86-64, --without-sb-unicode, ) (push) Waiting to run
Mac / build (arm64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (arm64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-mark-region-gc --with-nonstop-foreign-call) (push) Waiting to run
Mac / build (x86-64, --with-sb-thread --with-nonstop-foreign-call) (push) Waiting to run
Windows arm64 / build (arm64, clang-aarch64, clangarm64) (push) Waiting to run
Windows / build (x86-64, ucrt-x86_64, ucrt64) (push) Waiting to run
- make bug reporting instructions more consistent

- add DOCUMENTATION file

- deduplicate Texinfo @cindex lines

- fix typos and URLs

- update obsolete references to Texinfo

- standardize the spelling of HyperSpec
2026-07-02 14:47:25 +02:00
Gabor Melis 34dda2dde1 Don't canonicalize whitespace in Texinfo files
Almost all of them are generated.

Also, fix some comments.
2026-07-01 15:14:58 +02:00
Gabor Melis 2c524ff00b Reduce core size impact of docstring normalization
- Conditionalize it on #+sb-doc.

- Drop Markdown blockquote support (it's not needed by any docstring
  currently).

- Make the code more compact.

Without :SB-DOC, the core size impact is thus zero. With :SB-DOC, the
core size is increased by ~0.05% (~10kB).
2026-07-01 15:14:37 +02:00
Gabor Melis 27621b01ca Make DOCUMENTATION strip markup from SBCL definitions
... and normalize the indentation of their docstrings, too.

Doing this lazily in DOCUMENTATION allows interactive work on
docstrings (e.g. change a docstring, recompile its definition,
generate documentation from the image). I don't think the overhead in
DOCUMENTATION is a factor.
2026-06-30 16:59:49 +02:00
Gabor Melis 40658bfd6a sb-manual: implement concept indexing 2026-06-29 14:01:32 +02:00
Gabor Melis 61e352d105 sb-manual: add support for [label](uri) and [label][id] 2026-06-29 14:01:31 +02:00
Gabor Melis 4499dc6430 sb-manual: automatically USE-PAX
Put a magic marker on the value of the variable holding the dummy
section. Variables with these markers are recognized by PAX (from
v0.4.12) as lazy sections. So, (DREF @FAKE 'SECTION) works. Then,
whenever such a reference is RESOLVEd, the function following the
magic marker is called. That function is USE-PAX in this case.

The net effect of this hack is that PAX:DOCUMENTing a fake section
will unfake it.

Export USE-PAX for the remaining cases.
2026-06-29 14:01:31 +02:00
Gabor Melis 98d37dc3e3 sb-manual: USE-PAX automatically if PAX is already loaded
... when sb-manual is loaded.

SWITCH-TO-PAX was renamed to USE-PAX.
2026-06-29 14:01:31 +02:00
Gabor Melis f319e996d1 sb-manual: make GENERATE-TEXINFO unaffected by SWITCH-TO-PAX 2026-06-29 14:01:31 +02:00
Gabor Melis 4271a2f375 doc: PAXlike docs
Summary
-------

Implement of a subset of PAX so that we can write PAX:DEFSECTIONlike
forms that supports the same restricted Markdown that we use for
docstrings and generate doc/manual/*.texinfo files from them.

Without PAX
-----------

There is no hard dependency on PAX. When the new SB-MANUAL contrib is
loaded, one can M-. around in documentation (sections are variables),
and function docstrings can now link to sections.

The generated Texinfo files are quite close to the originals, with
some loss of "semantic" markup: e.g. Markdown has `FOO` but no
@var{FOO} and @code{FOO}. We didn't derive much practical benefit from
that distinction.

With PAX
--------

(SB-MANUAL::SWITCH-TO-PAX) ensures that PAX is loaded and patches things
up, as if everything had been defined with PAX to begin with. Now, we
get PAX::@BROWSING-LIVE-DOCUMENTATION for low-latency, interactive
documentation work and PAX::@GENERATING-DOCUMENTATION for auto-linked
documentation.

Notable features:

- auto-generated links within the manual: if SB-EXT:EXIT is mentioned,
  then it's linked to its documentation.

- auto-generated links to the CLHS (these links are red in PDF)

- locatives (e.g. the "[function]" in "- [function] SB-EXT:EXIT" are
  also links and they go to the sources on GitHub (in live browsing,
  they tell Slime to open the definition)

Details
-------

- Factor out the Markdown-to-Texinfo code into a new SB-MANUAL
  contrib.

- Convert doc/manual/*.texinfo files to PAXlike DEFSECTION format and
  add each chapter as a contrib/sb-manual/doc/<chapter>.lisp file.

- Fix a *lot* of small issues during the conversion.

- Make doc/make-doc.sh regenerate the all .texinfo files except
  sbcl.texinfo and backmatter.texinfo.

- Fix docstrings of Lisp definitions used in the manual to conform to
  the supported Markdown syntax.

- Retain the Texinfo function, variable and type indicies but drop the
  concept index. There is no obvious way to support that in Markdown,
  and it was used rather sporadically rather incomplete.

- Even with  the new features, the  amount of Lisp code  didn't change
  significantly.

- See contrib/sb-manual/README for the Todo list
2026-06-29 14:01:31 +02:00