Subject: Re: bug#35044: 25.2; Description of "disappearing" faces (Emacs Manual)

From: Noam Postavsky <[email-masked]>
Date: Fri, 19 Apr 2019 17:47:55 -0400

Sebastian Urban <[email-masked]> writes:

> According to help-gnu-emacs thread
> (lists.gnu.org/archive/html/help-gnu-emacs/2019-03/msg00205.html) this
> is normal behaviour, but from perspective of beginner it looks like
> a bug.  Therefore I suggest a sentence or two, perhaps in chapter
> "11.12 Font lock mode", about how Font lock takes over control of
> faces when user switches to mode with defined font-lock faces leaving
> only those from this mode and turning off others (unless they have
> also property font-lock-face).

So I've been looking at this, and I think maybe the only manual change
needed is in the Elisp manual to more strongly recommend using
font-lock-face for this sort of thing:

>From 12148e9d93f885fd6e4e82f485c319486c1e9652 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <[email-masked]>
Date: Fri, 19 Apr 2019 00:55:14 -0400
Subject: [PATCH] Recommend using font-lock-face over face (Bug#35044)

* doc/lispref/modes.texi (Precalculated Fontification): Explain
advantages of using font-lock-face over face.
---
 doc/lispref/modes.texi | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 919816f3de..0ff13d72e2 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -3201,7 +3201,12 @@ is disabled, @code{font-lock-face} has no effect on the display.
   It is ok for a mode to use @code{font-lock-face} for some text and
 also use the normal Font Lock machinery.  But if the mode does not use
 the normal Font Lock machinery, it should not set the variable
-@code{font-lock-defaults}.
+@code{font-lock-defaults}.  In this case the @code{face} property will
+not be overriden, so using the @code{face} property could work too.
+However, using @code{font-lock-face} is generally preferable as it
+allows the user to control the fontification by toggling
+@code{font-lock-mode}, and lets the code work regardless of whether
+the mode uses Font Lock machinery or not.
 
 @node Faces for Font Lock
 @subsection Faces for Font Lock
-- 
2.11.0

> Also the behaviour of reappearing table-cell face after switch back to
> fundamental-mode or text-mode seems to be not quite right, shouldn't it
> reappear in every cell at once (just like it disappears)?

If I understand correctly, this is rather a bug in table.el: it should
use 'font-lock-face instead of 'face, and then all this buggy behaviour
will go away.  Perhaps you'd like to send a patch?