Subject: bug#19217: 25.0.50; `C-M-x' (`eval-defun') on a `defface' that is not top-level

From: Drew Adams <[email-masked]>
Date: Sat, 29 Nov 2014 10:13:48 -0800 (PST)

Enhancement request.  This has probably been requested before, but
here goes...

It is not uncommon to have a `defface' inside a condition such as (when
(> emacs-major-version 23)...).  Currently, `C-M-x' has no effect on
such a `defface' occurrence.  In order to have Emacs DTRT, I find myself
working around this limitation by temporarily moving the `defface' to
bol.

How about letting users redefine a `defface' with `C-M-x' even in this
case?

At least optionally.  For example, let a non-positive prefix arg do
this, and have edebug instrumentation done only for a non-negative
prefix arg.

Or maybe always (not optionally)?  Is there a good reason for doing this
only at top-level?

If the reason is that `eval-defun' cannot recognize the defun
(`defface') unless it is at top level, then surely there is some way to
make this more flexible.

In GNU Emacs 25.0.50.1 (i686-pc-mingw32)
 of 2014-10-20 on LEG570
Bzr revision: 118168 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --enable-checking=yes,glyphs CPPFLAGS=-DGLYPH_DEBUG=1'