Subject: bug#59828: Fundamental Mode buffers fail to keep text properties

From: Yuan Fu <[email-masked]>
Date: Mon, 5 Dec 2022 12:25:55 -0800

> On Dec 5, 2022, at 12:13 PM, Heime <[email-masked]> wrote:
> 
> ------- Original Message -------
> On Monday, December 5th, 2022 at 8:07 PM, Yuan Fu <[email-masked]> wrote:
> 
> 
>>> On Dec 5, 2022, at 11:23 AM, Heime [email-masked] wrote:
>>> 
>>> ------- Original Message -------
>>> On Monday, December 5th, 2022 at 3:40 PM, Eli Zaretskii [email-masked] wrote:
>>> 
>>>>> Date: Mon, 05 Dec 2022 15:06:09 +0000
>>>>> From: Heime [email-masked]
>>>>> Cc: [email-masked], [email-masked]
>>>>> 
>>>>>>>> Conclusion: you need to turn on font-lock in that buffer.
>>>>>>> 
>>>>>>> When I use (text-mode) or (org-mode), I do not get the problem.
>>>>>>> 
>>>>>>> (with-current-buffer (get-buffer-create bufrn)
>>>>>>> (text-mode)
>>>>>>> (insert (propertize "G"
>>>>>>> 'font-lock-face '(:background "green"
>>>>>>> :foreground "black"))))
>>>>>> 
>>>>>> Because those turn on font-lock by default.
>>>>> 
>>>>> What do you think about having fundamental-mode also turn font-lock on ?
>>>> 
>>>> What it does now is the result of what we think. That's why it is called
>>>> Fundamental.
>>>> 
>>>> Anyway, there's no bug here, so I'm closing this.
>>> 
>>> Is fundamental mode not usually used when working on new buffers?
>> 
>> 
>> Just to clarify:
>> 
>> 1. If font-lock-mode is off, you should use (propertize … ‘face …)
>> 2. If font-lock-mode is on, you should use (propertize … ‘font-lock-face …)
> 
> Very clear explanation.
> 
>> If you create a buffer interactively, font-lock-mode is on (at least in the latest version of Emacs, not sure which version of Emacs are you on). But if you create a buffer programmatically (as you did in the code snippet), font-lock-mode is off.
> 
> Even if you make a buffer interactively in fundamental-mode?

By “interactively” I mean typing M-x switch-to-buffer <buffer name> RET. This gives you a new buffer in fundamental-mode.

If you create a buffer this way, and type M-x eval-expression font-lock-mode RET, you should get t, meaning font-lock-mode is on. Whereas 

(with-current-buffer (get-buffer-create "xxx")
  font-lock-mode)

returns nil.

Yuan