Subject: bug#14797: 24.3.50; new, undocumented menu structure using VECTORS?

From: Drew Adams <[email-masked]>
Date: Fri, 5 Jul 2013 08:17:57 -0700 (PDT)

> > I don't see anything in the manual that mentions that a menu can take
> > this form.  Dunno whether I am not reading it well enough or the doc is
> > incomplete.
> 
> Indeed, vectors are an old format that is deprecated but
> still supported.  They are similar to char-tables (which are supported,
> on the other hand).

Really? In what Emacs version was that old format documented?  I do not
see it, going back to Emacs 20, and I do not remember ever seeing it
before that.

And why would we suddently make a code change in Emacs 24.4 to revert back
to using a deprecated menu structure?  And without adding any comment in
the code as to (a) the fact that we deliberately use a deprecated and
undocumented structure here and (b) why we do so.

What was gained by this?

Note too that deprecation of a feature (which as you note generally does
not imply its desupport) generally does not mean removing all doc for it.
As long as something is supported it is typically documented - at least
reference doc.  Support implies doc, generally.

This "old format" has not been documented since at least Emacs 20.
If the Emacs code is going to start using it again then it should be
documented.

> > (I do not understand how someone can make such a fundamental change and
> > not mention it in NEWS.  New menu structures are not something that
> > Emacs adds everyday.)
> 
> That's because it's a new menu structure, on the contrary.

Is there a "not" missing there, perhaps?  If not, I do not follow you.

AFAICT, it IS a new menu structure, at least in terms of documentation.
Where was it documented for users before, if in fact it was really a
supported menu structure?

> > 2. Beyond that, using vectors here is a PITA for Lisp code.  It makes
> > code that traverses such code difficult, if not impossible.  Without
> > this change to vectors, a simple recursion on a list cdr is all that is
> > needed.
> 
> You should probably use `map-keymap' instead.

Yes, eventually I will perhaps do that.  My code was originally based
on similar code in `substitute-key-definition', whose code evolved to use
`map-keymap' when that function was introduced.

But that is really beside the point here.  Why introduce an undocumented,
at best deprecated, menu structure in Emacs 24.4?  Was something useful
gained wrt the list structure that was used before?  Why move TOWARD
something that has (at best) been deprecated for >15 years and is less
lispy?