Subject: bug#72329: Avoid recursion in gnus-message-citation-mode

From: Thuna <[email-masked]>
Date: Sun, 28 Jul 2024 03:30:40 +0200

In `gnus-message-citation-mode' the

  (if (not font-lock-mode)
      (gnus-message-citation-mode (font-lock-mode 1))
    ...)

can lead to excessive nesting if font-lock-mode fails to be set (quick
enough or altogether).  Changing this with

  (while (not font-lock-mode) (font-lock-mode 1))
  ...

should be better, assuming it is necessary for `font-lock-mode' to be
called repeatedly, otherwise

  (font-lock-mode 1)
  (while (not font-lock-mode))
  ...

might also work, or simply

  (font-lock-mode 1)
  ...

if it is not necessary to wait.

One possible problem with these arrangements is that it may be desirable
to error in case there is an issue which prevents font-lock-mode from
being set perpetually, in which case something like

  (font-lock-mode 1)
  (with-timeout (<however-long-before-giving-up>
                 (error "Failed to enable `font-lock-mode'."))
    (while (not font-lock-mode)))
  ...

might be preferable.