Aaron Ecay wrote: > I’ve noticed that the faces defined by org-copy-face are not added to > the org-faces customize group. This is in accordance with the docstring > of ‘copy-face’, which says (in part) “This function does not copy face > customization data, so NEW-FACE will not be made customizable. Most > Lisp code should not call this function; use `defface' with :inherit > instead.” > > I think it’s at best an odd surprise and at worst a bug that all org’s > faces are not accessible from the org-faces customize group. Would > there be any objection to replacing all uses of this function with > :inherit as recommended by the docstring, and removing the org-copy-face > function? > > For reference, here are the uses of the function, as returned by rgrep: > > ./lisp/org-faces.el:431:(org-copy-face 'org-todo 'org-checkbox-statistics-todo > ./lisp/org-faces.el:434:(org-copy-face 'org-done 'org-checkbox-statistics-done > ./lisp/org-faces.el:540:(org-copy-face 'org-meta-line 'org-block-begin-line > ./lisp/org-faces.el:543:(org-copy-face 'org-meta-line 'org-block-end-line > ./lisp/org-faces.el:560:(org-copy-face 'org-block 'org-quote > ./lisp/org-faces.el:562:(org-copy-face 'org-block 'org-verse > ./lisp/org-faces.el:600:(org-copy-face 'org-agenda-structure 'org-agenda-date > ./lisp/org-faces.el:603:(org-copy-face 'org-agenda-date 'org-agenda-date-today > ./lisp/org-faces.el:607:(org-copy-face 'secondary-selection > 'org-agenda-clocking > ./lisp/org-faces.el:610:(org-copy-face 'org-agenda-date > 'org-agenda-date-weekend > ./lisp/org-faces.el:719:(org-copy-face 'org-time-grid 'org-agenda-current-time > ./lisp/org-faces.el:791:(org-copy-face 'mode-line 'org-mode-line-clock > ./lisp/org-faces.el:793:(org-copy-face 'mode-line 'org-mode-line-clock-overrun
I think it's related to an Emacs bug (#16440) which I reported on the Org mailing list in February. As stated by Eli (in http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16440+): ╭──── │ Org uses org-copy-face to define the faces that you show in your │ screencast, and org-copy-face assumes the face it inherits from │ already exists. But loading a theme now doesn't create the faces, it │ only prepares the data for when the face will be created. So :inherit │ in org-copy-face doesn't do what you expect. │ │ I guess either some change is needed in how themes are handled, or │ org-copy-face needs to change to follow suit. (CC to Bastien for │ that.) ╰──── In the same functional area, there is also the bug #15298 still pending (http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15298) about "Background color lost when highlighting a string". Best regards, Seb -- Sebastien Vauban