Giter Club home page Giter Club logo

projectile's Introduction

License GPL 3 MELPA MELPA Stable Build Status Patreon

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 (when feasible). For instance - finding project files has a portable implementation written in pure Emacs Lisp without the use of GNU find (but for performance sake an indexing mechanism backed by external commands exists as well).

Projectile tries to be practical - portability is great, but if some external tools could speed up some task substantially and the tools are available, Projectile will leverage them.

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, darcs and bazaar repos are considered projects by default. So are lein, maven, sbt, scons, rebar and bundler projects. If you want to mark a folder manually as a project just create an empty .projectile file in it. Some of Projectile's features:

  • jump to a file in project
  • jump to files at point in project
  • jump to a directory in project
  • jump to a file in a directory
  • jump to a project buffer
  • jump to a test in project
  • toggle between files with same names but different extensions (e.g. .h <-> .c/.cpp, Gemfile <-> Gemfile.lock)
  • toggle between code and its test (e.g. main.service.js <-> main.service.spec.js)
  • jump to recently visited files in the project
  • switch between projects you have worked on
  • kill all project buffers
  • replace in project
  • multi-occur in project buffers
  • grep in project
  • regenerate project etags or gtags (requires ggtags).
  • visit project in dired
  • run make in a project with a single key chord
  • check for dirty repositories
  • toggle read-only mode for the entire project
  • support for multiple minibuffer completion/selection libraries (e.g. ido, ivy and helm)

Here's a glimpse of Projectile in action (using ivy):

Projectile Screenshot

In this short demo you can see:

  • finding files in a project
  • switching between implementation and test
  • switching between projects

You can support my work on Projectile via PayPal, Patreon and GitHub Sponsors.

Quickstart

The instructions that follow are meant to get you from zero to a running Projectile setup in a minute. Visit the user manual for (way) more details.

Installation

package.el is the built-in package manager in Emacs.

Projectile is available on the two major package.el community maintained repos - MELPA Stable and MELPA.

You can install Projectile with the following command:

M-x package-install [RET] projectile [RET]

Alternatively, users of Debian 9 or later or Ubuntu 16.04 or later may simply apt-get install elpa-projectile.

Finally add this to your Emacs config:

(projectile-mode +1)
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)

Those keymap prefixes are just a suggestion. Feel free to put there whatever works best for you.

Basic Usage

Enable projectile-mode, open a file in one of your projects and type a command such as C-c p f.

See the user manual for more details.

Caveats

  • Some operations like search (grep) depend (presently) on external utilities such as find.
  • Using Projectile over TRAMP might be slow in certain cases.
  • Some commands might misbehave on complex project setups (e.g. a git project with submodules)
  • Projectile was mostly tested on Unix OS-es (e.g. GNU/Linux and macOS), so some functionality might not work well on Windows

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.

Changelog

A fairly extensive changelog is available here.

License

Copyright © 2011-2020 Bozhidar Batsov and contributors.

Distributed under the GNU General Public License, version 3

projectile's People

Contributors

abo-abo avatar andreas-marschke avatar arichiardi avatar asok avatar bbatsov avatar dgtized avatar fommil avatar gleber avatar jabranham avatar jaccarmac avatar jacksonrayhamilton avatar jmingtan avatar kyleam avatar mattiasb avatar mookid avatar niku avatar nwidger avatar proofit404 avatar rejeep avatar silex avatar swsnr avatar syohex avatar tarsius avatar thomasf avatar tuhdo avatar vspinu avatar wilfred avatar will-henney avatar xuchunyang avatar yorkz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.