I finally took a quick look at the current code (and the discussion so far) and I have a few remarks: * even within source directories it's useful to be able to exclude certain subdirs from project-level operations. How is this going to be handled? * it's not 100% clear to me what are major mode writes supposed to provide as "project implementations" * In 24.4 a `vc-root-dir` was added. Seems it overlaps a bit with `project.el` * how can Projectile (or a similar package) leverage `project.el`? On 8 July 2015 at 03:25, Dmitry Gutov wrote: > On 06/10/2015 01:31 AM, Dmitry Gutov wrote: > > If project-source-directories is a generic method, maybe we can say that >> its implementation should almost always (unless it really knows what >> it's doing) call the next applicable implementation. >> >> That implementation could be set up to dispatch based on the value of >> major-mode. >> > > I've pushed that to the branch 'scratch/project', please take a look. > > The split between "project directories" and "project source directories" > is not 100% necessary, but I think it can be useful, provided the semantic > difference between the two is clear. > > What I want to do with project-source-directories here, is to allow a > major mode to provide a default list (or, actually, a function that would > compute it, because `load-path' can change at runtime). > > This way, unless a project implementation explicitly overrides it, Elisp > authors will have the whole load-path used for searching. > > Maybe using a specialized implementation using &context is not the best > thing to do there. Alternatively, we can introduce a new variable (like > `project-source-directories-function'), and refer to it in the default > `project-source-directories' implementation, as well as its docstring. > >