[Bug: 21.4.16] make-glyph doc-string missing essential information
David Kastrup
dak at gnu.org
Thu Feb 10 04:58:56 EST 2005
"Ben Wing" <ben at 666.com> writes:
> Actually, this info is documented too. It's at the bottom of
> `make-image-specifier', which documents the format of the instantiator to
> `make-glyph':
>
> -------------
> If the instantiator specifies data from a file, the data will be read
> in at the time that the instantiator is added to the image (which may
> be well before when the image is actually displayed), and the
> instantiator will be converted into one of the inline-data forms, with
> the filename retained using a :file keyword. This implies that the
> file must exist when the instantiator is added to the image, but does
> not need to exist at any other time (e.g. it may safely be a temporary
> file).
> -------------
>
> `make-image-specifier' is specifically referred to by `make-glyph',
> so this cannot be said to be totally obscure.
Call me dense, but guessing the semantics of the return value of
make-glyph by following a link to a different function and then seeing
how this function may deal with certain conditions possibly arising
from completely different functions, making it somewhat probably that
make-glyph might be passing them on in some manner, or not detect
them, or whatever, is not _exactly_ what I'd call totally obvious.
And in fact, I have something like the following in preview-latex:
(unless preview-icon-toolbar-button
(setq preview-icon-toolbar-button
(vector
(list (preview-filter-specs preview-tb-icon-specs))
#'preview-at-point
t
"Preview on/off at point")))
;;; [Courtesy Stephen J. Turnbull, with some modifications
;;; Message-ID: <87el9fglsj.fsf at tleepslib.sk.tsukuba.ac.jp>
;;; I could not have figured this out for the world]
;;; Hm, there really ought to be a way to get the spec that would be
;;; instantiated in a given domain
(let ((tb (cdadar (or (specifier-spec-list default-toolbar (current-buffer))
(specifier-spec-list default-toolbar 'global)))))
(unless (member preview-icon-toolbar-button tb)
(set-specifier default-toolbar
(append tb (list preview-icon-toolbar-button))
(current-buffer))))
When the icon is missing, I currently get an absolutely weird error
message, but that is probably my fault since I then have
(vector (list nil) ...
I am going to try what happens with other approaches, but let me tell
you one thing: guessing this sort of stuff from the documentation is
impossible for me.
> However, it's true that it's easy to miss among all the other docs.
>
> Where exactly would you prefer that I put these two paragraphs? (i.e. if in
> the docs for `make-glyph', where?)
`make-glyph' checks only the structural validity of its
specifiers/instant whatevers, but not even whether referenced files
exist. Sorting out instantiable from non-instantiable glyphs for a
particular local/domain/whatever is only done by whatever.
make-glyph never returns nil, but rather throws an error for invalid
data/invalid data makes make-glyph return nil.
It is all fine and nice that you'll probably use the return value of
make-glyph in some other function, but that still does not tell me
whether the return value can always passed on and with what
consequences.
And the return behavior of make-glyph should be documented in the
documentation to make-glyph. If you want to, you can write then
something in a referenced function that says "a return value from
make-glyph is always valid input for
do-what-you-want-with-this-instantiator/specifier/whatever".
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
More information about the XEmacs-Beta
mailing list