Previous: Retrieval, Up: Project Descriptors


4.1.1.5 Inheritance or theme?

Let us summarize the four available ways to provide an option for a project: a direct setting in the project descriptor, a global default value in the fallback user option, plus themes and inherited projects.

At that point, you might be wondering why the themes and inheritance concepts were both designed, since they actually perform very similar tasks. Good question. Here is a good answer.

Projects might share options for different reasons. For example, my “XEmacs” (source) and “XEmacs Packages” projects share many options (To: address, From: address, diff and commit commands and so on) because they both relate to XEmacs. On the other hand I have personal but totally unrelated projects that share the same commands because they are all handled through a common system: Git.

In other words, you should rather use the inheritance mechanism when projects relate to each other, and the theme mechanism for settings that are orthogonal the projects they apply to.