unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* A unified project root interface
@ 2013-03-09 16:44 Jorgen Schaefer
  2013-03-09 17:12 ` Fabian Ezequiel Gallina
  2013-03-10  5:38 ` Stefan Monnier
  0 siblings, 2 replies; 62+ messages in thread
From: Jorgen Schaefer @ 2013-03-09 16:44 UTC (permalink / raw)
  To: emacs-devel

Hello!

A growing number of extensions out there deal with "projects" as
opposed to "single files", that is, a collection of files that belong
together in some form or another. The usual way to define a project is
via the "project root", a directory so that all files under that
directory are considered part of "the project".

This is not exactly difficult to write, which has lead to the situation
where pretty much every extension that uses projects defines their own
code to find and set the project root. Examples of this are
find-file-in-project, projectile, elpy, flymake, ropemacs, nose, etc.
Now, if an user wants to use two or more of those extensions together,
she needs to "synchronize" the different ideas of project root manually.
Which gets more complicated the more extensions that define their own
project roots.

It would be really useful if there was a single standard way to define
the project root, so that extensions can just use that standard way
without each and every one of them writing the same code over and over
again. Sadly, as the code is not exactly difficult and so many projects
have already used their own way, it's highly unlikely that a random
third-party library would simply "emerge" as the standard way of doing
things. Which makes me believe the only way to solve this is via a bit
of a top-down decision to include a library in Emacs and declare it as
"the default".

So this is my somewhat verbose request to say "yes, let's do this" and
pick a library to provide the functionality. The library itself doesn't
have to be big at all, in theory a single variable `project-root'
that everyone is encouraged to use would be enough. Adding some
basic functionality to this would be helpful, though. If we keep the
functionality to a minimum, this lets other extensions use it without
being annoyed at the features they drag in.

Suitable libraries exist:

https://github.com/jorgenschaefer/project-el (my own proposal for this
problem, GPLed, happy to assign copyright / should already have.)

https://github.com/nex3/project-el (unsure about the status, it's on
marmalade, though.)

There are probably others.


Does this sound sensible?
Are there other possible approaches?
What's the next step to solve this problem?


Regards,
	-- Jorgen



^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2013-12-31 20:12 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-09 16:44 A unified project root interface Jorgen Schaefer
2013-03-09 17:12 ` Fabian Ezequiel Gallina
2013-03-10  5:38 ` Stefan Monnier
2013-03-10 10:06   ` Jorgen Schaefer
2013-03-11 18:57   ` Lluís
2013-03-12 23:28     ` Eric M. Ludlam
2013-03-12 23:42       ` Jorgen Schaefer
2013-03-13  2:02         ` Eric M. Ludlam
2013-03-13 18:03       ` David Engster
2013-03-13 19:11         ` Sudish Joseph
2013-03-16  0:47         ` Eric M. Ludlam
2013-03-16 14:18           ` David Engster
2013-03-16 15:02             ` Jorgen Schaefer
2013-03-16 22:27               ` Phil Hagelberg
2013-03-16 22:59               ` David Engster
2013-03-16 23:16                 ` Jorgen Schaefer
2013-03-17 17:40                   ` David Engster
2013-03-17 18:18                     ` Jorgen Schaefer
2013-03-18 22:50                       ` David Engster
2013-03-19  1:57                         ` John Yates
2013-03-19  7:18                           ` David Engster
2013-03-19 12:23                             ` Eric M. Ludlam
2013-03-19 13:06                             ` Stefan Monnier
2013-03-19 19:09                               ` David Engster
2013-03-20  3:21                                 ` Stefan Monnier
2013-03-20  4:48                                   ` Leo Liu
2013-03-20  7:04                                     ` joakim
2013-03-20  7:05                                     ` David Engster
2013-03-20  7:13                                   ` David Engster
2013-03-20 12:57                                     ` Stefan Monnier
2013-03-20 16:14                                       ` Davis Herring
2013-03-20 17:41                                         ` Stefan Monnier
2013-03-20 17:48                                         ` Stefan Monnier
2013-03-20 18:20                                         ` Bruce Korb
2013-03-20 22:14                                           ` Stefan Monnier
2013-03-20 16:34                                       ` David Engster
2013-03-20 17:47                                         ` Stefan Monnier
2013-03-21  0:55                                           ` Eric M. Ludlam
2013-03-21  3:27                                             ` Stefan Monnier
2013-03-21  4:07                                               ` Eric M. Ludlam
2013-03-21 14:33                                                 ` Stefan Monnier
2013-03-22  2:12                                                 ` Eric M. Ludlam
2013-03-23 11:04                                                   ` EIEIO split (was: A unified project root interface) David Engster
2013-03-21 16:32                                             ` A unified project root interface David Engster
2013-03-22  0:47                                               ` Eric M. Ludlam
2013-03-22 20:30                                                 ` David Engster
2013-03-23 17:10                                                   ` Eric M. Ludlam
2013-03-23 17:26                                                     ` Jorgen Schaefer
2013-03-23 18:02                                                       ` Dmitry Gutov
2013-03-23 20:51                                                         ` Pascal J. Bourguignon
2013-03-24  4:25                                                           ` Dmitry Gutov
2013-03-24 10:13                                                             ` Jorgen Schaefer
2013-04-06 13:25                                                               ` Jorgen Schaefer
2013-04-06 17:13                                                                 ` Eric M. Ludlam
2013-04-08 19:03                                                                   ` David Engster
2013-12-31 20:12                                                               ` Daniel Colascione
2013-03-20 17:49                                         ` Jorgen Schaefer
2013-03-19  7:33                         ` Jorgen Schaefer
2013-03-17  8:08                 ` joakim
2013-03-12 15:34   ` Sudish Joseph
2013-03-12 16:51     ` Dmitry Gutov
2013-03-12 18:23   ` Ted Zlatanov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).