Anyway, indeally I want these three main operations (find-file, grep,
compile) to run in the inner sub-project by default. By typing
something more, like, say, a negative prefix argument, I want to be able
to be given the possibility to operate on the super-project instead.
Or generally a numeric prefix argument could define the depth of the
nested project to use. Then every level could set own root, e.g.:
(dir-locals-set-class-variables 'project-root ((nil . (project-root t))))
(dir-locals-set-directory-class "~/Source/very-big-project" 'project-root)
(dir-locals-set-directory-class "~/Source/very-big-project/foo"
'project-root)
(dir-locals-set-directory-class "~/Source/very-big-project/foo/bar"
'project-root)
While using e.g. 'C-x p g' in "~/Source/very-big-project/foo/bar"
by default will use the closest root, i.e. the same directory,
but 'M-1 C-x p g' will use the root "~/Source/very-big-project/foo",
and 'M-2 C-x p g' will use the root "~/Source/very-big-project/".