Subject: outline-minor-mode-use-buttons depends on whitespace-space face for some reason

From: Yilkal Argaw <[email-masked]>
Date: Sat, 16 Sep 2023 07:45:31 +0000

Hi,

I kind of make use of the relatively new outline-minor-mode-buttons
feature. I have specfic settings regarding whitespace mode and I
observed that hides the outline buttons deeper than level 2. Trying to
debug this I found that was related to the whitespace-space face and
but looking at outline.el gave me no hit's as to why that was the
reason. So I am filing this issue with the minimal configuration to
recreate the issue.

Emacs Version
GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version
1.16.0, Xaw3d scroll bars)

The minimal config to create the issue is
(with-eval-after-load 'whitespace
  (setq whitespace-style (quote (face spaces tabs space-mark tab-mark)))
  (setq whitespace-display-mappings '((space-mark 32 [183] [46])
(tab-mark 9 [9655 9] [92 9]))))

(add-hook 'after-init-hook (global-whitespace-mode t))

(add-hook 'prog-mode-hook 'outline-minor-mode t)

(add-hook 'outline-minor-mode-hook
            (setq outline-minor-mode-use-buttons 't
                     outline-minor-mode-cycle 't
                     outline-minor-mode-cycle-filter 'bolp))

(custom-fset-faces `(whitespace-space ((t (:foreground
,(face-background 'default) :background nil))))
                               `(whitespace-tabs ((t (:foreground
,(face-background 'default) :background nil)))))

After that try and open code a python or ruby class that has method
inside it. It can be clearly seen that the outline-buttons for the
methods exist but are hidden because they are somehow affected by
whitespace-space face. (Marking the code shows that the buttons exist
but are hidden). I hope this helps in recreating the issue it was hard
to explain because it was very specific.

With Regards
Yilkal Argaw