Difference between revisions of "Projectile"
(add category) |
|||
(11 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
|name=Projectile | |name=Projectile | ||
|description=Project management library | |description=Project management library | ||
− | |maintainer=Bozhidar Batsov | + | |author=[[User:Bozhidar | Bozhidar Batsov]] |
− | |source=https://github.com/bbatsov | + | |maintainer=[[User:Bozhidar | Bozhidar Batsov]] |
+ | |source=https://github.com/bbatsov/projectile | ||
}} | }} | ||
Line 16: | Line 17: | ||
* regenerate project etags | * regenerate project etags | ||
− | = Basic setup = | + | == Basic setup == |
<source lang="lisp"> | <source lang="lisp"> | ||
Line 24: | Line 25: | ||
</source> | </source> | ||
− | = Helpful keybindings = | + | == Helpful keybindings == |
− | ; {{Keys|C-c p | + | ; {{Keys|C-c p f}} |
− | : | + | : Find a file in the project. |
− | ; {{Keys|C-c p | + | ; {{Keys|C-c p l}} |
+ | : Find a file in a directory. | ||
+ | |||
+ | ; {{Keys|C-c p g}} | ||
: Find text matches in the project | : Find text matches in the project | ||
− | = Common Customization = | + | == Common Customization == |
+ | |||
+ | === Enable caching === | ||
+ | |||
+ | Indexing a large project can take a while. You can enable caching to prevent additional reindexing. | ||
+ | |||
+ | <source lang="lisp"> | ||
+ | (setq projectile-enable-caching t) | ||
+ | </source> | ||
+ | |||
+ | == See Also == | ||
+ | |||
+ | * [[Helm]] | ||
+ | * [[Find File in Project]] | ||
+ | |||
+ | === Nameframe - use one frame per project === | ||
+ | |||
+ | [https://github.com/john2x/nameframe nameframe] provides utility functions to manage frames by their names. | ||
− | + | Its primary goal is to be used with Projectile and/or perspective.el (see [[Buffer_management]]). When opening a Projectile project, it will either switch to an existing frame of the project, or create a new frame for the project. | |
− | = Project Pages = | + | == Project Pages == |
* [https://github.com/bbatsov/projectile GitHub Repo] | * [https://github.com/bbatsov/projectile GitHub Repo] | ||
− | = Tutorial Pages = | + | == Tutorial Pages == |
− | + | [[Category:Project Management]][[Category:Convenience]][[Category:Third Party Package]][[Category:Programming]] | |
− | + | [[Category:Search]] | |
+ | [[Category:Intermediate]] | ||
− | [[Category: | + | [[Category:Popular_Package]] |
Latest revision as of 09:35, 16 May 2017
Description | Project management library |
---|---|
Author | Bozhidar Batsov |
Maintainer | Bozhidar Batsov |
Source | https://github.com/bbatsov/projectile |
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 Emacs Lisp 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:
- jump to a file in project
- jump to a project buffer
- multi-occur in project buffers
- grep in project
- regenerate project etags
Basic setup
(add-to-list 'load-path "/path/to/projectile/directory")
(require 'projectile)
(projectile-global-mode) ;; to enable in all buffers
Helpful keybindings
- [C-c p f]
- Find a file in the project.
- [C-c p l]
- Find a file in a directory.
- [C-c p g]
- Find text matches in the project
Common Customization
Enable caching
Indexing a large project can take a while. You can enable caching to prevent additional reindexing.
(setq projectile-enable-caching t)
See Also
Nameframe - use one frame per project
nameframe provides utility functions to manage frames by their names.
Its primary goal is to be used with Projectile and/or perspective.el (see Buffer_management). When opening a Projectile project, it will either switch to an existing frame of the project, or create a new frame for the project.