projectile 
- Description
- Manage and navigate projects in Emacs easily
- Latest
- projectile-3.2.1.tar (.sig), 2026-Jul-13, 750 KiB
- Maintainer
- Bozhidar Batsov <bozhidar@batsov.dev>
- Website
- https://github.com/bbatsov/projectile
- Browse ELPA's repository
- CGit or Gitweb
- All Dependencies
- compat (.tar)
- Badge
To install this package from Emacs, use package-install or list-packages.
Full description
Projectile is a project interaction library for Emacs. It provides a powerful set of features operating at the project level, as well as simple heuristics to identify projects. See the README and https://docs.projectile.mx for more details.
Old versions
| projectile-3.2.0.tar.lz | 2026-Jul-12 | 148 KiB |
| projectile-3.1.0.tar.lz | 2026-Jul-04 | 120 KiB |
| projectile-3.0.0.tar.lz | 2026-Jul-01 | 93.5 KiB |
| projectile-2.9.1.tar.lz | 2025-Feb-13 | 61.7 KiB |
| projectile-2.9.0.tar.lz | 2025-Feb-12 | 61.5 KiB |
| projectile-2.8.0.tar.lz | 2024-Mar-31 | 59.6 KiB |
| projectile-2.7.0.tar.lz | 2022-Nov-22 | 58.2 KiB |
| projectile-2.6.0.tar.lz | 2022-Oct-25 | 56.6 KiB |
| projectile-2.5.0.tar.lz | 2021-Aug-11 | 63.0 KiB |
News
Changelog
master (unreleased)
3.2.1 (2026-07-13)
Bugs fixed
- #2094: Fix a
wrong-type-argument stringpcrash when runningprojectile-search(a 3.2.0 regression): the search-prompt tool tag now accepts the backend name symbol, not just a string.
3.2.0 (2026-07-12)
New features
- Add reviewable read-only search commands, a search-only sibling of the reviewable replace UI.
projectile-search-review(s R) searches for a literal string;projectile-search-regexp-review(s X) searches for an Emacs regexp, honoring full Emacs regexp syntax.- Matches are gathered into a read-only
*projectile-search*buffer, grouped by file, oneLINE:COL: CONTEXTline per match with the matched span highlighted; there is no preview, no per-match toggle and no apply. - The buffer reuses the replace reviewer's navigation, case/regexp toggles (
c/x), line and file filters (k/d/K/D), re-search (g) and grep-mode export (e). rbridges the current search to the replace reviewer, carrying over the term, literal-ness and case setting and prompting only for the replacement.- A literal
projectile-search-reviewaccelerates its scan with ripgrep whenrgis installed, streaming matches in near-instantly on large projects.- Controlled by
projectile-search-use-ripgrep(default on); set it to nil to always use the pure-elisp scan. - The ripgrep fast-path follows ripgrep's ignore rules plus Projectile's ignore globs, which can differ slightly from the elisp path's file set (e.g. hidden files, symlinks); regexp search and the whole replace reviewer always use the portable elisp scan.
- Controlled by
- The commands are available from
projectile-dispatchand the Projectile menu.
- #1924: Add reviewable project-wide replace commands that let you preview matches and choose which to apply, instead of the blocking, file-by-file
query-replacewalk ofprojectile-replace.projectile-replace-review(R) does a literal replace;projectile-replace-regexp-reviewdoes an Emacs-regexp replace whose replacement can reference capture groups.- Matches are gathered in Emacs Lisp, so the regexp command honors full Emacs regexp syntax and the preview reflects exactly what will be edited, including unsaved changes in open buffers.
- The
*projectile-replace*results buffer shows a per-file, per-match preview where each match can be toggled on or off;!(orC-c C-c) applies just the enabled ones, in any order. - Applying edits each file from the bottom up, edits open buffers in place under a single undo step, writes closed files back preserving their coding system, and skips buffers modified since the search rather than corrupting them.
- The results buffer can reshape the search in place, each action re-scanning and re-rendering the previews:
ctoggles case sensitivity (seeded fromcase-fold-search).xtoggles between literal and Emacs-regexp matching, refusing an invalid regexp rather than erroring.k/dkeep or flush the matches whose line matches a regexp;K/Ddo the same by file name; re-searching withgrestores anything filtered away.
- A status line at the top shows the term, replacement, match and file counts, the mode flags, and a note when the list has been filtered.
eexports the shown matches to agrep-modebuffer so wgrep or Emacs 31'sgrep-edit-modecan turn them editable and write back; wgrep stays an optional integration and!remains the no-dependency apply path.- Both reviewers scan the project asynchronously, so a large search no longer freezes Emacs.
- The results buffer opens right away, matches stream in as they're found (the header shows a "Searching..." progress note), and the scan is cancelable with
q,C-g, or by killing the buffer. - While a scan is still running,
!(apply),e(export) and the filter keys (k/d/K/D) refuse until it finishes, so the write-back never runs against a partial match set and a filter can't be outrun by a later chunk; starting a new scan (g/c/x) cancels any in-flight one. ... ...
- The results buffer opens right away, matches stream in as they're found (the header shows a "Searching..." progress note), and the scan is cancelable with