Subject: 24.3.50; Error in Customize: Symbol's function definition is void: nil

From: Drew Adams <[email-masked]>
Date: Tue, 22 Oct 2013 22:00:27 -0700 (PDT)

emacs -Q

Evaluate this in *scratch*:

(defcustom foo ()
  "..."
  :type '(repeat (restricted-sexp :match-alternatives (custom-theme-p)))
  :group 'editing)

M-x customize option foo

1. 

Click the INS button.
At the prompt use C-g.

A DEL button and an extra INS button were inserted.

Click the DEL button -> the error is raised.

2. Click the rightmost INS button. You again get the Lisp sexp prompt.
Enter `42' (no quotes.

The character `*' (value 42) appears in the Lisp sexp field, instead of
the number 42 (which is also a sexp).

And now there are 3 INS buttons and 2 DEL buttons.  Getting a bit crazy.

You can click the rightmost DEL button to delete it and the 3rd (or 2nd)
INS button.  Clicking the remaining DEL button still raises the error.

3. Clicking the rightmost INS button and typing sexps, you can end up
with things like this, which is nuts:

INS DEL Lisp expression: INS DEL Lisp expression: INS
  State: STANDARD

4. Starting over, you can enter `user', which is `custom-theme-p', no
problem.  But if you try to enter, say, `phlogisten', which is not, you
get a "Wrong type argument: char-or-string-p, phlogisten" error.

It's not good to show such a low-level error message.  And in this case
it makes little sense: a user will wonder why it is expecting a char or
string.  When you type `user', the successfully entered value is a
symbol, not a char or a string.  

IOW, the preliminary reading of input is being handled at too low a
level wrt type errors.  The right error message is to say that the input
is not `custom-theme-p'.

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-10-19 on LEG570
Bzr revision: 114715 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --enable-checking 'CFLAGS=-O0 -g3' CPPFLAGS=-DGLYPH_DEBUG=1'