diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/METADATA b/METADATA
new file mode 100644
index 00000000..223aa001
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,2 @@
+languages: bash, css, json, lisp, markdown, plaintext, xml, yaml
+theme: atom-one-dark
diff --git a/changelog.xml b/changelog.xml
new file mode 100644
index 00000000..9aed536f
--- /dev/null
+++ b/changelog.xml
@@ -0,0 +1,248 @@
+
+
+
+ 40ants-doc-full ChangeLog
+ https://40ants.com/doc
+ xml-emitter
+ en-us
+
+ 0.17.3 (2024-05-15)
+ <ul><li><p>Update 2</p></li></ul>
+ Wed, 15 May 2024 00:00:00 +0000
+
+
+ 0.17.3 (2024-05-15)
+ <ul><li><p>Update 2</p></li></ul>
+ Wed, 15 May 2024 00:00:00 +0000
+
+
+ 0.17.2 (2024-05-15)
+ <ul><li><p>Another update.</p></li></ul>
+ Wed, 15 May 2024 00:00:00 +0000
+
+
+ 0.17.1 (2024-05-15)
+ <ul><li><p>Just a check if tag will be added automatically.</p></li></ul>
+ Wed, 15 May 2024 00:00:00 +0000
+
+
+ 0.17.0 (2024-05-13)
+ <h1 id="backward-incompatible">Backward incompatible</h1><ul><li><p>A plugin system was introduced.</p></li><li><p>Highlight.js and MathJax support were refactored into plugins and MathJax is turned off by default,
+ because it's assets too heavy and math is unnecessary in most Common Lisp libraries.</p></li><li><p>Generic-function <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FTHEMES-2FAPI-3AHIGHLIGHT-LANGUAGES-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FTHEMES-2FAPI-3AHIGHLIGHT-LANGUAGES-20GENERIC-FUNCTION-29"><code>40ants-doc-full/themes/api:highlight-languages</code></a> and generic-function <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FTHEMES-2FAPI-3AHIGHLIGHT-THEME-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FTHEMES-2FAPI-3AHIGHLIGHT-THEME-20GENERIC-FUNCTION-29"><code>40ants-doc-full/themes/api:highlight-theme</code></a>
+ are now deprecated. Pass options <code>:LANGUAGES</code> and <code>:THEME</code> arguments to <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FPLUGINS-2FHIGHLIGHTJS-3AHIGHLIGHTJS-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FPLUGINS-2FHIGHLIGHTJS-3AHIGHLIGHTJS-20FUNCTION-29"><code>40ants-doc-full/plugins/highlightjs:highlightjs</code></a> function
+ instead.</p></li></ul>
+ Mon, 13 May 2024 00:00:00 +0000
+
+
+ 0.16.0 (2024-05-04)
+ <ul><li><p>A generic-function <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FLOCATIVES-2FASDF-SYSTEM-3AASDF-SYSTEM-DOCUMENTATION-TITLE-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FLOCATIVES-2FASDF-SYSTEM-3AASDF-SYSTEM-DOCUMENTATION-TITLE-20GENERIC-FUNCTION-29"><code>40ants-doc/locatives/asdf-system:asdf-system-documentation-title</code></a> was added. It allows to override the text of a section showing an information about <code>ASDF</code> system.</p></li></ul>
+ Sat, 04 May 2024 00:00:00 +0000
+
+
+ 0.15.4 (2024-01-26)
+ <ul><li><p>Another fix to <code>URL</code>s on the search page. Now if <code>CLEAN-URLS</code> argument is true, search page will link to the pages ended with a backslash. Otherwise, it will link to the html pages.</p></li></ul>
+ Fri, 26 Jan 2024 00:00:00 +0000
+
+
+ 0.15.3 (2024-01-24)
+ <ul><li><p>Fixed <code>URL</code>s in the search index file when <code>CLEAN-URLS</code> argument is given. This should prevent redirection to index.html file from search page - now index.html will be stripped from the path.</p></li></ul>
+ Wed, 24 Jan 2024 00:00:00 +0000
+
+
+ 0.15.2 (2023-11-28)
+ <ul><li><p>Fixed stack exhausting when trying to collect dependencies for some <code>ASDF</code> systems.</p></li></ul>
+ Tue, 28 Nov 2023 00:00:00 +0000
+
+
+ 0.15.1 (2023-08-05)
+ <ul><li><p>Fixed issue with unpacking Highlight.js archive when it is having absolute pathnames.</p></li></ul><p>Also, a new download <code>API</code> is used now.</p>
+ Sat, 05 Aug 2023 00:00:00 +0000
+
+
+ 0.15.0 (2023-07-22)
+ <ul><li><p>Autodoc was fixed to not show packages without external symbols.</p></li><li><p>Also, now autodoc sorts packages alphabetically.</p></li></ul>
+ Sat, 22 Jul 2023 00:00:00 +0000
+
+
+ 0.14.0 (2023-06-04)
+ <ul><li><p>Added <a href="https://40ants.com/doc/#x-2840ANTS-DOC-3A-2ASYMBOLS-WITH-IGNORED-MISSING-LOCATIONS-2A-20-28VARIABLE-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3A-2ASYMBOLS-WITH-IGNORED-MISSING-LOCATIONS-2A-20-28VARIABLE-29-29"><code>40ants-doc:*symbols-with-ignored-missing-locations*</code></a> variable to ignore warnings on missing source location.</p></li></ul><p>This might be useful for autogenerated methods. For example, Mito does generate such reader methods
+<a href="https://github.com/fukamachi/mito/blob/6835d2c8120454e93c69d4f22cccb10d9ee24526/src/core/dao/mixin.lisp#L71">here</a>.</p>
+ Sun, 04 Jun 2023 00:00:00 +0000
+
+
+ 0.13.0 (2023-06-04)
+ <ul><li><p>Support for variables was added to autodoc subsystem.</p></li></ul>
+ Sun, 04 Jun 2023 00:00:00 +0000
+
+
+ 0.12.0 (2023-04-22)
+ <ul><li><p>Autodoc subsystem was added. It provides a <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FAUTODOC-3ADEFAUTODOC-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FAUTODOC-3ADEFAUTODOC-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc/autodoc:defautodoc</code></a> macro which can build an <code>API</code> reference for a given <code>ASDF</code> system.</p></li><li><p>Now we output a list of dependencies for an <code>ASDF</code> system description.</p></li></ul>
+ Sat, 22 Apr 2023 00:00:00 +0000
+
+
+ 0.11.2 (2022-12-05)
+ <ul><li><p>Script on the search page was fixed.</p></li></ul>
+ Mon, 05 Dec 2022 00:00:00 +0000
+
+
+ 0.11.1 (2022-11-26)
+ <ul><li><p>Fixed <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FLOCATIVES-2FBASE-3ALOCATIVE-TYPE-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FLOCATIVES-2FBASE-3ALOCATIVE-TYPE-20GENERIC-FUNCTION-29"><code>40ants-doc/locatives/base:locative-type</code></a> broken by previous refactoring. Now this function
+was transformed into generic-function as well as <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FLOCATIVES-2FBASE-3ALOCATIVE-ARGS-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FLOCATIVES-2FBASE-3ALOCATIVE-ARGS-20GENERIC-FUNCTION-29"><code>40ants-doc/locatives/base:locative-args</code></a>.</p></li></ul>
+ Sat, 26 Nov 2022 00:00:00 +0000
+
+
+ 0.11.0 (2022-11-16)
+ <ul><li><p>Large refactoring was introduced. All files related to the documentation builder were moved to <code>./full/</code> folder and corresponding packages was renamed to have <code>40ants-doc-full/</code> prefix.</p></li></ul>
+ Wed, 16 Nov 2022 00:00:00 +0000
+
+
+ 0.10.0 (2022-11-09)
+ <ul><li><p>Default theme was reworked and now uses divs and flex for rendering "bullets".
+Also, bullets were made more structured and now it is more convenient to change their design using <code>CSS</code>.</p></li></ul>
+ Wed, 09 Nov 2022 00:00:00 +0000
+
+
+ 0.9.2 (2022-10-26)
+ <ul><li><p>Fixed a few issues with <code>ASDF</code> and warnings from find-system generic-function:</p></li></ul><pre><code class="">Computing just-done stamp for action (ASDF/LISP-ACTION:COMPILE-OP
+ "40ants-asdf-system/changelog"), but dependency (ASDF/LISP-ACTION:COMPILE-OP
+ "40ants-asdf-system/changelog"
+ "file-type") wasn't done yet!</code></pre>
+ Wed, 26 Oct 2022 00:00:00 +0000
+
+
+ 0.9.1 (2022-10-19)
+ <ul><li><p>Fixed 40ants-doc asdf system dependency from the 40ants-doc/ignored-words. Because this module should be in the core system.</p></li></ul>
+ Wed, 19 Oct 2022 00:00:00 +0000
+
+
+ 0.9.0 (2022-02-21)
+ <ul><li><p>Now you can refer internal documentation section of other libraries.
+To do this, put the link to this library documentation to the
+<code>EXTERNAL-DOCS</code> argument of <a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc:defsection</code></a> macro and then
+mention other section like this: <code>40ANTS-CI::@CRITIC section</code>.</p></li></ul>
+ Mon, 21 Feb 2022 00:00:00 +0000
+
+
+ 0.8.0 (2022-02-14)
+ <ul><li><p>Now <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FCOMMONDOC-2FMAPPER-3AMAP-NODES-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FCOMMONDOC-2FMAPPER-3AMAP-NODES-20GENERIC-FUNCTION-29"><code>40ants-doc-full/commondoc/mapper:map-nodes</code></a> generic-function
+ supports any node type which defines a method for
+ generic-function <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FCOMMONDOC-2FMAPPER-3ANODE-SUPPORTS-CHILDREN-20GENERIC-FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FCOMMONDOC-2FMAPPER-3ANODE-SUPPORTS-CHILDREN-20GENERIC-FUNCTION-29"><code>40ants-doc-full/commondoc/mapper:node-supports-children</code></a>.</p></li><li><p>Default theme was fixed to work with latest Spinneret, which now
+ escapes single quotes inside <code>HTML</code> nodes.</p></li></ul>
+ Mon, 14 Feb 2022 00:00:00 +0000
+
+
+ 0.7.0 (2021-12-31)
+ <ul><li><p><a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FCHANGELOG-3ADEFCHANGELOG-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FCHANGELOG-3ADEFCHANGELOG-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants/changelog:defchangelog</code></a> now supports <code>EXTERNAL-LINKS</code> argument.</p></li><li><p>Automatic symbol extraction now ignores dates like 2021-12-31. Now
+ to make it work, the symbol should contain at least one alpha character.</p></li></ul>
+ Fri, 31 Dec 2021 00:00:00 +0000
+
+
+ 0.6.0 (2021-12-05)
+ <ul><li><p>Fixed the issue, when we tried to find uppercased xrefs inside inline code and links.</p></li><li><p>Added <code>EXTERNAL-LINKS</code> argument to <a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>defsection</code></a> macro. It can be useful, if you have a multiple
+ text sections having the same external link.</p></li><li><p>Now it is possible to use <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FIGNORED-WORDS-3AIGNORE-WORDS-IN-PACKAGE-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FIGNORED-WORDS-3AIGNORE-WORDS-IN-PACKAGE-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc/ignored-words:ignore-words-in-package</code></a>
+ to suppress warning on symbols which are exported but not documented.</p></li></ul>
+ Sun, 05 Dec 2021 00:00:00 +0000
+
+
+ 0.5.8 (2021-10-23)
+ <ul><li><p>Fixed the way of how a <code>TOC</code> is built. Previosly it incorrectly shown nested <code>COMMONDOC:SECTION</code> objects.</p></li></ul>
+ Sat, 23 Oct 2021 00:00:00 +0000
+
+
+ 0.5.7 (2021-10-21)
+ <ul><li><p><a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>defsection</code></a> macro now supports <code>EXTERNAL-DOCS</code> argument.</p></li></ul>
+ Thu, 21 Oct 2021 00:00:00 +0000
+
+
+ 0.5.6 (2021-10-21)
+ <ul><li><p>Blockquotes markup is supported now.</p></li><li><p>Now external references are rendered as code and downcased according to the settings.</p></li></ul>
+ Thu, 21 Oct 2021 00:00:00 +0000
+
+
+ 0.5.5 (2021-09-26)
+ <p>Warning messages like:</p><pre><code class="">Unable to find target for reference #<XREF 40ANTS-DOC/COMMONDOC/XREF:XREF> mentioned at ChangeLog / 0.5.3 (2021-09-08)</code></pre><p>were rewritten to be more actionable:</p><pre><code class="">Object referenced as #<XREF 40ANTS-DOC/COMMONDOC/XREF:XREF> in ChangeLog / 0.5.3 (2021-09-08) is not documented.</code></pre>
+ Sun, 26 Sep 2021 00:00:00 +0000
+
+
+ 0.5.4 (2021-09-11)
+ <ul><li><p>Included changelog.lisp into the <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29" data-document="https://40ants.com/doc/" data-node="x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> system.</p></li></ul>
+ Sat, 11 Sep 2021 00:00:00 +0000
+
+
+ 0.5.3 (2021-09-08)
+ <ul><li><p>Fixed locatives parsing in case if there are more than one <code>40ANTS-DOC/COMMONDOC/XREF:XREF</code> in the text.</p></li></ul>
+ Wed, 08 Sep 2021 00:00:00 +0000
+
+
+ 0.5.2 (2021-09-08)
+ <ul><li><p>Now default theme removes underline from images nested into the <code><a></code> <code>HTML</code> tag.</p></li><li><p>Fixed images collection for case when current directory is different from the
+ <code>ASDF</code> system's directory.</p></li></ul>
+ Wed, 08 Sep 2021 00:00:00 +0000
+
+
+ 0.5.1 (2021-09-07)
+ <ul><li><p>Fixed reference index generation and comparison of usual references with references where locative is a string.</p></li></ul>
+ Tue, 07 Sep 2021 00:00:00 +0000
+
+
+ 0.5.0 (2021-09-06)
+ <ul><li><p>Now <a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc:defsection</code></a> macro accepts <code>EXTERNAL-DOCS</code> argument.
+Together with <code>HTML</code> pages, <code>references.json</code> file is rendered, and you can
+provide a list of urls of external libraries' documentation to have an automatic
+cross-referencing between them.</p></li></ul>
+ Mon, 06 Sep 2021 00:00:00 +0000
+
+
+ 0.4.1 (2021-09-05)
+ <ul><li><p>Function <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3AGET-CURRENT-ASDF-SYSTEM-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3AGET-CURRENT-ASDF-SYSTEM-20FUNCTION-29"><code>40ants-doc-full/builder:get-current-asdf-system</code></a> was added. Now you can use it to do something interesting
+ like showing "Fork me on the GitHub" stripe <a href="https://github.com/40ants/40ants-doc-theme-40ants/commit/917a4c1e72b0379f509bdee4864531e641c9ec4e#diff-47d16baea2d4ef710747f19c24df8cf7ef4f6bbbfd1dbb0ade55f47457b1e8feR155-R161">as my own theme do</a>.</p></li><li><p>Markdown files now will have a footer saying that a file was generated by <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29" data-document="https://40ants.com/doc/" data-node="x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a>.</p></li><li><p>An <code>RSS</code> feed is generated for changelog. Also, changelog items can have a date now.</p></li></ul>
+ Sun, 05 Sep 2021 00:00:00 +0000
+
+
+ 0.4.0 (2021-09-05)
+ <ul><li><p><code>*DOCUMENT-NORMALIZE-PACKAGES*</code> variable was replaced with <code>FULL-PACKAGE-NAMES</code> argument
+of <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3ARENDER-TO-FILES-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3ARENDER-TO-FILES-20FUNCTION-29"><code>40ants-doc-full/builder:render-to-files</code></a> function.</p></li></ul>
+ Sun, 05 Sep 2021 00:00:00 +0000
+
+
+ 0.3.0 (2021-09-04)
+ <ul><li><p>Now images are copied to target folder together with <code>HTML</code> documentation
+ and links are adjusted accordingly.</p></li><li><p>Added a protocol to define new color themes and change page layout.
+ Three new themes are available out of the box.
+ Read more at <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FTHEMES-2FDOCS-3A-3A-40DEFINING-A-THEME-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FTHEMES-2FDOCS-3A-3A-40DEFINING-A-THEME-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"><code>Defining a Custom Theme</code></a> section.</p></li></ul>
+ Sat, 04 Sep 2021 00:00:00 +0000
+
+
+ 0.2.0 (2021-09-01)
+ <ul><li><p>Now defsection does not exports symbols by default</p></li><li><p>You can render documents in multiple formats in a single run having cross links.
+ For example shorter <code>README</code>.md could mention symbols and have correct
+ links to the full documentation</p></li><li><p>"Clean" <code>URL</code>s are supported out of the box.</p></li><li><p>Now defsection does not export nor mentioned symbols nor the name of the section
+ It is better to have explicit exports.</p></li><li><p><a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FLOCATIVES-3AINCLUDE-20-2840ANTS-DOC-2FLOCATIVES-3ALOCATIVE-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FLOCATIVES-3AINCLUDE-20-2840ANTS-DOC-2FLOCATIVES-3ALOCATIVE-29-29"><code>40ants-doc/locatives:include</code></a> locative now does not support <code>:HEADER</code>, <code>:FOOTER</code> and some other arguments. Use <code>:LANG</code> argument instead.</p></li><li><p>Added code highlighting using Highlight.js library.</p></li><li><p>Added search form which uses index in browser. <code>JS</code> code was taken from
+ <a href="https://www.sphinx-doc.org/">Sphinx</a> documentation builder.</p></li><li><p>Elisp code for transcriptions was fixed and now should word not
+ only with <code>SLIME</code>, but also with <code>SLY</code>.</p></li><li><p><a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc:defsection</code></a> macro now does not generate export code
+ if <code>:EXPORT</code> argument is <code>NIL</code>.</p></li><li><p>Functions <code>UPDATE-ASDF-SYSTEM-HTML-DOCS</code> and <code>UPDATE-ASDF-SYSTEM-README</code>
+ were replaced with <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29"><code>40ants-doc-full/builder:update-asdf-system-docs</code></a>, which also supports
+ ChangeLog.md generation. Use <a href="https://40ants.com/doc/#x-2840ANTS-DOC-2FCHANGELOG-3ADEFCHANGELOG-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-2FCHANGELOG-3ADEFCHANGELOG-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc/changelog:defchangelog</code></a> to define versions.</p></li><li><p>Variables <code>*DOCUMENT-HTML-MAX-NAVIGATION-TABLE-OF-CONTENTS-LEVEL*</code> and
+ <code>*DOCUMENT-MAX-TABLE-OF-CONTENTS-LEVEL*</code> were removed. Probably we'll return this
+ feature back in other form, to restrict <code>TOC</code>'s size.</p></li><li><p>Removed <code>LOCATE-AND-DOCUMENT</code> generic function.</p></li><li><p>Links to the GitHub now are generated automatically,
+ if <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29"><code>40ants-doc-full/builder:update-asdf-system-docs</code></a> function is used
+ and system definition has a <code>:SOURCE-CONTROL</code> slot.</p></li><li><p>Generic functions <code>COLLECT-REACHABLE-OBJECTS</code> and <code>LOCATE-AND-COLLECT-REACHABLE-OBJECTS</code>
+ were removed.</p></li><li><p>Variables <code>*DOCUMENT-LINK-SECTIONS*</code>, <code>*DOCUMENT-TEXT-NAVIGATION*</code> and <code>*DOCUMENT-FANCY-HTML-NAVIGATION*</code> were removed.</p></li><li><p>Variable <code>*DOCUMENT-MIN-LINK-HASH-LENGTH*</code> was removed. Use <code>COMMONDOC-MARKDOWN:*MIN-LINK-HASH-LENGTH*</code></p></li><li><p>Functions <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3AUPDATE-ASDF-SYSTEM-DOCS-20FUNCTION-29"><code>40ants-doc-full/builder:update-asdf-system-docs</code></a> and <a href="https://40ants.com/doc/#x-2840ANTS-DOC-FULL-2FBUILDER-3ARENDER-TO-FILES-20FUNCTION-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-FULL-2FBUILDER-3ARENDER-TO-FILES-20FUNCTION-29"><code>40ants-doc-full/builder:render-to-files</code></a>
+ now accept <code>WARN-ON-UNDOCUMENTED-PACKAGES</code> argument and <code>CLEAN-URLS</code> argument.</p></li><li><p>Variable <code>*DOCUMENT-MARK-UP-SIGNATURES*</code> was removed.</p></li><li><p>Added <code>DOWNCASE-UPPERCASE-CODE</code> argument instead of <code>*DOCUMENT-DOWNCASE-UPPERCASE-CODE*</code>.
+ This argument is true by default.</p></li><li><p>Added warnings on symbols, referenced like internals, using <code>::</code>.</p></li><li><p>Added <a href="https://40ants.com/doc/#x-2840ANTS-DOC-3ADEFSECTION-COPY-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29" data-document="https://40ants.com/doc/" data-node="x-2840ANTS-DOC-3ADEFSECTION-COPY-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"><code>40ants-doc:defsection-copy</code></a> macro to define copy of the section but with a different name.</p></li></ul>
+ Wed, 01 Sep 2021 00:00:00 +0000
+
+
+ 0.1.0 (2021-05-01)
+ <ul><li><p>Project forked from <a href="https://github.com/melisgl/mgl-pax">MGL-PAX</a>.
+ Code refactored into the package inferred system and core is separated
+ to have minimum dependencies.</p></li><li><p>Fixed displaying docstring for constant locative.</p></li><li><p>Include locative was fixed for files with unicode characters
+ file-subseq function was rewritten.</p></li><li><p>Locatives can be specified without a package prefix inside the defsection
+ because all locative symbols now live in <a href="https://40ants.com/doc/#x-28-23A-28-2820-29-20BASE-CHAR-20-2E-20-2240ANTS-DOC-2FLOCATIVES-22-29-20PACKAGE-29" data-document="https://40ants.com/doc/" data-node="x-28-23A-28-2820-29-20BASE-CHAR-20-2E-20-2240ANTS-DOC-2FLOCATIVES-22-29-20PACKAGE-29"><code>40ants-doc/locatives</code></a> package.</p></li><li><p>Function update-asdf-system-readmes was renamed to update-asdf-system-readmes and now
+ it generates only one <code>README</code> file.</p></li><li><p>Tests were rewritten to use Rove and to support <code>(asdf:test-system :40ants-doc)</code>.</p></li><li><p>Removed <code>MGL-PAX:DEFINE-PACKAGE</code> macro. An <code>UIOP:DEFINE-PACKAGE</code> can be used instead.</p></li><li><p>Now builder issues a warning if it wasn't able to find a symbol mentioned in the docstring.</p></li><li><p>Uppercase word should have at least two charaters to be resolved as a symbol.</p></li><li><p>Improved work with package inferred systems. For examples, when fixed the
+ automatic symbol rendering for case when documentation section and
+ referenced objects are in different packages.</p></li><li><p>Allowed to reference objects using keywords.</p></li><li><p>Fixed docstring extraction for compiler macro.</p></li></ul>
+ Sat, 01 May 2021 00:00:00 +0000
+
+
+
\ No newline at end of file
diff --git a/changelog/index.html b/changelog/index.html
new file mode 100644
index 00000000..0b89821f
--- /dev/null
+++ b/changelog/index.html
@@ -0,0 +1,249 @@
+
+
Highlight.js and MathJax support were refactored into plugins and MathJax is turned off by default,
+ because it's assets too heavy and math is unnecessary in most Common Lisp libraries.
Another fix to URLs on the search page. Now if CLEAN-URLS argument is true, search page will link to the pages ended with a backslash. Otherwise, it will link to the html pages.
0.15.3 (2024-01-24)
Fixed URLs in the search index file when CLEAN-URLS argument is given. This should prevent redirection to index.html file from search page - now index.html will be stripped from the path.
0.15.2 (2023-11-28)
Fixed stack exhausting when trying to collect dependencies for some ASDF systems.
0.15.1 (2023-08-05)
Fixed issue with unpacking Highlight.js archive when it is having absolute pathnames.
Also, a new download API is used now.
0.15.0 (2023-07-22)
Autodoc was fixed to not show packages without external symbols.
Large refactoring was introduced. All files related to the documentation builder were moved to ./full/ folder and corresponding packages was renamed to have 40ants-doc-full/ prefix.
0.10.0 (2022-11-09)
Default theme was reworked and now uses divs and flex for rendering "bullets".
+Also, bullets were made more structured and now it is more convenient to change their design using CSS.
0.9.2 (2022-10-26)
Fixed a few issues with ASDF and warnings from find-system generic-function:
Computing just-done stamp for action (ASDF/LISP-ACTION:COMPILE-OP
+ "40ants-asdf-system/changelog"), but dependency (ASDF/LISP-ACTION:COMPILE-OP
+ "40ants-asdf-system/changelog"
+ "file-type") wasn't done yet!
0.9.1 (2022-10-19)
Fixed 40ants-doc asdf system dependency from the 40ants-doc/ignored-words. Because this module should be in the core system.
0.9.0 (2022-02-21)
Now you can refer internal documentation section of other libraries.
+To do this, put the link to this library documentation to the
+EXTERNAL-DOCS argument of 40ants-doc:defsection macro and then
+mention other section like this: 40ANTS-CI::@CRITIC section.
Fixed the way of how a TOC is built. Previosly it incorrectly shown nested COMMONDOC:SECTION objects.
0.5.7 (2021-10-21)
defsection macro now supports EXTERNAL-DOCS argument.
0.5.6 (2021-10-21)
Blockquotes markup is supported now.
Now external references are rendered as code and downcased according to the settings.
0.5.5 (2021-09-26)
Warning messages like:
Unable to find target for reference #<XREF 40ANTS-DOC/COMMONDOC/XREF:XREF> mentioned at ChangeLog / 0.5.3 (2021-09-08)
were rewritten to be more actionable:
Object referenced as #<XREF 40ANTS-DOC/COMMONDOC/XREF:XREF> in ChangeLog / 0.5.3 (2021-09-08) is not documented.
0.5.4 (2021-09-11)
Included changelog.lisp into the 40ants-doc system.
0.5.3 (2021-09-08)
Fixed locatives parsing in case if there are more than one 40ANTS-DOC/COMMONDOC/XREF:XREF in the text.
0.5.2 (2021-09-08)
Now default theme removes underline from images nested into the <a>HTML tag.
Fixed images collection for case when current directory is different from the
+ ASDF system's directory.
0.5.1 (2021-09-07)
Fixed reference index generation and comparison of usual references with references where locative is a string.
0.5.0 (2021-09-06)
Now 40ants-doc:defsection macro accepts EXTERNAL-DOCS argument.
+Together with HTML pages, references.json file is rendered, and you can
+provide a list of urls of external libraries' documentation to have an automatic
+cross-referencing between them.
Now images are copied to target folder together with HTML documentation
+ and links are adjusted accordingly.
Added a protocol to define new color themes and change page layout.
+ Three new themes are available out of the box.
+ Read more at Defining a Custom Theme section.
0.2.0 (2021-09-01)
Now defsection does not exports symbols by default
You can render documents in multiple formats in a single run having cross links.
+ For example shorter README.md could mention symbols and have correct
+ links to the full documentation
"Clean" URLs are supported out of the box.
Now defsection does not export nor mentioned symbols nor the name of the section
+ It is better to have explicit exports.
40ants-doc/locatives:include locative now does not support :HEADER, :FOOTER and some other arguments. Use :LANG argument instead.
Added code highlighting using Highlight.js library.
Added search form which uses index in browser. JS code was taken from
+ Sphinx documentation builder.
Elisp code for transcriptions was fixed and now should word not
+ only with SLIME, but also with SLY.
40ants-doc:defsection macro now does not generate export code
+ if :EXPORT argument is NIL.
Variables *DOCUMENT-HTML-MAX-NAVIGATION-TABLE-OF-CONTENTS-LEVEL* and
+ *DOCUMENT-MAX-TABLE-OF-CONTENTS-LEVEL* were removed. Probably we'll return this
+ feature back in other form, to restrict TOC's size.
Project forked from MGL-PAX.
+ Code refactored into the package inferred system and core is separated
+ to have minimum dependencies.
Fixed displaying docstring for constant locative.
Include locative was fixed for files with unicode characters
+ file-subseq function was rewritten.
Locatives can be specified without a package prefix inside the defsection
+ because all locative symbols now live in 40ants-doc/locatives package.
Function update-asdf-system-readmes was renamed to update-asdf-system-readmes and now
+ it generates only one README file.
Tests were rewritten to use Rove and to support (asdf:test-system :40ants-doc).
Removed MGL-PAX:DEFINE-PACKAGE macro. An UIOP:DEFINE-PACKAGE can be used instead.
Now builder issues a warning if it wasn't able to find a symbol mentioned in the docstring.
Uppercase word should have at least two charaters to be resolved as a symbol.
Improved work with package inferred systems. For examples, when fixed the
+ automatic symbol rendering for case when documentation section and
+ referenced objects are in different packages.
Allowed to reference objects using keywords.
Fixed docstring extraction for compiler macro.
+
+
+
+
\ No newline at end of file
diff --git a/doctools.js b/doctools.js
new file mode 100644
index 00000000..8cbf1b16
--- /dev/null
+++ b/doctools.js
@@ -0,0 +1,323 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ *
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
+ */
+jQuery.urldecode = function(x) {
+ if (!x) {
+ return x
+ }
+ return decodeURIComponent(x.replace(/\+/g, ' '));
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s === 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node, addItems) {
+ if (node.nodeType === 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 &&
+ !jQuery(node.parentNode).hasClass(className) &&
+ !jQuery(node.parentNode).hasClass("nohighlight")) {
+ var span;
+ var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+ if (isInSVG) {
+ span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+ } else {
+ span = document.createElement("span");
+ span.className = className;
+ }
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ if (isInSVG) {
+ var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+ var bbox = node.parentElement.getBBox();
+ rect.x.baseVal.value = bbox.x;
+ rect.y.baseVal.value = bbox.y;
+ rect.width.baseVal.value = bbox.width;
+ rect.height.baseVal.value = bbox.height;
+ rect.setAttribute('class', className);
+ addItems.push({
+ "parent": node.parentNode,
+ "target": rect});
+ }
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this, addItems);
+ });
+ }
+ }
+ var addItems = [];
+ var result = this.each(function() {
+ highlight(this, addItems);
+ });
+ for (var i = 0; i < addItems.length; ++i) {
+ jQuery(addItems[i].parent).before(addItems[i].target);
+ }
+ return result;
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+ jQuery.uaMatch = function(ua) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+ /(msie) ([\w.]+)/.exec(ua) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+ };
+ jQuery.browser = {};
+ jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+ if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+ this.initOnKeyListeners();
+ }
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated === 'undefined')
+ return string;
+ return (typeof translated === 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated === 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('\u00B6').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('\u00B6').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ if (!body.length) {
+ body = $('body');
+ }
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('