Fork Me on GitHub

Projectile

Project navigation and management library for Emacs

Download this project as a .zip file Download this project as a tar.gz file

Synopsis

Projectile is a project interaction library for Emacs. Its goal is to provide a nice set of features operating on a project level without introducing external dependencies. For instance - finding project files is done in pure elisp without the use of GNU find.

This library provides easy project management and navigation. The concept of a project is pretty basic - just a folder containing special file. Currently git, mercurial and bazaar repos are considered projects by default. If you want to mark a folder manually as a project just create an empty .projectile file in it. Some of projectile's features:

Installation

Manual

Just drop projectile.el somewhere in your load-path. I favour the folder ~/.emacs.d/vendor:

(add-to-list 'load-path "~/emacs.d/vendor")

You can enable projectile globally like this:

(require 'projectile)
(projectile-global-mode) ;; to enable in all buffers

To enable projectile only in select modes:

(add-hook 'ruby-mode-hook #'(lambda () (projectile-mode)))

If you'd like to enable project files caching (useful in large projects where indexing the project's file can take a while) add this as well:

(setq projectile-enable-caching t)

Marmalade

If you're an Emacs 24 user or you have a recent version of package.el you can install projectile from the Marmalade repository.

Emacs Prelude

Projectile is naturally part of the Emacs Prelude. If you're a Prelude user - projectile is already properly configured and ready for action.

Usage

Here's a list of the interactive Emacs Lisp functions, provided by projectile:

Helm Integration

Projectile can be integrated with Helm via helm-c-source-projectile source (available in helm-projectile.el). There is also an example function for calling Helm with the Projectile file source. You can call it like this:

M-x helm-projectile

or even better - bind it to a keybinding like this:

(global-set-key (kbd "C-c h") 'helm-projectile)

Obviously you need to have Helm installed for this to work :-)

Caveats

Known issues

Check out the project's issue list a list of unresolved issues. By the way - feel free to fix any of them and sent me a pull request. :-)

Contributors

Here's a list of all the people who have contributed to the development of Projectile.

Bugs & Improvements

Bug reports and suggestions for improvements are always welcome. github pull requests are even better! :-)

Together we can create the ultimate project management tool for Emacs.

Cheers,
Bozhidar