João Távora <joaotavora@gmail.com> writes:
> Hello Tim,
>
> The goal here, I think, was not to decide if the change had merit or not. As far as I understand there are demonstrable functional
> problems with the faces default settings as chosen by Brian himself.
>
> I presume Brian is just trying to fix those problems, a legitimate goal that cannot be left to "theme authors". There is such a thing
> as the "default theme" and we are all its authors.
>
> Brian is just asking if it is "legal" to take inspiration for decorative face settings from a different project outside GNU ELPA. I believe
> it is quite legal, but I'm not a specialist so suggested he ask here.
>
I understand. For the default value of a face, I think the key is to
look at the documentation of defface and use the facilities it has to
set a default based on the local environment. For example, use a face
spec which sets a different foreground colour based on whether the user
is using a light or dark theme, is running in a GUI frame or a terminal
or console etc. Just using :foreground "grey" is unlikely to give
adequate default face specification for all environments.
Defining good default face specifications is harder than most people
realise. One way to simplify things and get a reasonable default is to
define the face to inherit from one of the standard built-in faces. For
example font-lock-warning-face. These faces have been implemented to
have reasonable defaults for most environments and provided they are
wrapped in a defcustom, the user can customise to suit their personal
preferences if desired (including turning of the inheritance).
I don't believe there is any copyright issue here as you are not using
any lsp-mode code. You are defining a face, using standard Emacs
facilities and setting its attributes. lsp-mode has no copyright over
face attribute values.
Personally, I wish more packages would define their faces in terms of
inheritance from standard/built-in faces. This would mean a user could
tweak the built-in faces to suit their preferences and the additional
packages would inherit those tweaks without needing to be done
individually.