[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27748: 26.0.50; doc strings should be in DOC file
From: |
npostavs |
Subject: |
bug#27748: 26.0.50; doc strings should be in DOC file |
Date: |
Sun, 20 Aug 2017 18:05:07 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) |
tags 27748 + patch
quit
Ken Raeburn <raeburn@raeburn.org> writes:
> 1. defcustom doc strings from files compiled with lexical binding.
>
> For example, files.el (lexical bindings) defines
> delete-auto-save-files but it doesn't show up in the DOC file;
> files.elc starts with an initial byte-code blob which includes the
> symbol delete-auto-save-files and its doc string in the constants
> array.
>
> On the other hand, custom.el (dynamic bindings) declares
> custom-theme-directory, the .elc file dumps out the doc string in a
> #@... block before a separate top-level call to
> custom-declare-variable, and since this is what make-docfile looks
> for, the doc string winds up in the DOC file.
With patch 0001 defcustoms which are compiled to bytecode now produce
dynamic docstrings which make-doc can digest (note that I had to change
make-doc a bit for this, but the .elc format remains the same as far as
the Emacs loading it is concerned. See the commit message for details).
0001-Produce-dynamic-docstrings-for-bytecode-Bug-27748.patch
Description: patch
> 2. In isearch, CL macro expansion results in symbols like
> isearch--state-forward--cmacro having function definitions that
> include the two doc strings "Access slot \"forward\" of
> `(isearch--state (:constructor nil) [...]" and
> "\n\n(fn CL-WHOLE-ARG CL-X)". The former string is also in DOC (with
> "\n\n(fn CL-X)" appended) as the documentation for the function
> isearch--state-forward.
>
> It appears that, as far as the Emacs help system is concerned,
> isearch--state-*--cmacro functions are undocumented.
>
> The --cmacro functions generate cl-block forms that include the
> original doc string, since it's treated as part of the body, but it's
> not clear to me whether it has any use there at all, or if it could
> just be discarded, or perhaps looked up via the non --cmacro symbols
> at run time if it is of use.
I think it is just an oversight, since the string was put inside the
cl-block it is not recognized as a docstring at all. Patch 0002 drops
the function's docstring from compiler-macro and adds a simple
"compiler-macro for inlining `NAME'" instead.
0002-Drop-docstrings-from-cl-defsubst-produced-inline-bod.patch
Description: patch
> 3. Undocumented functions, strange as it sounds... in files.el, function
> file-name-non-special is defined with no documentation. In
> files.elc, the bytecode object constructed has a doc string "\n\n(fn
> OPERATION &rest ARGUMENTS)" instead of a (#$ . NNN) reference to a
> separate string that make-docfile can pick up.
Looks fairly trivial to fix, see patch 0003.
0003-Support-lazy-loading-for-autogenerated-usage-docstri.patch
Description: patch