projectile 
- Description
- Manage and navigate projects in Emacs easily
- Latest
- projectile-3.3.0snapshot0.20260718.4.tar (.sig), 2026-Jul-18, 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.3.0snapshot0.20260715.2.tar.lz | 2026-Jul-15 | 148 KiB |
| projectile-3.3.0snapshot0.20260713.0.tar.lz | 2026-Jul-13 | 148 KiB |
| projectile-3.3.0snapshot0.20260712.1.tar.lz | 2026-Jul-12 | 148 KiB |
| projectile-3.2.0snapshot0.20260712.10.tar.lz | 2026-Jul-12 | 148 KiB |
| projectile-3.1.0.0.20260705.10.tar.lz | 2026-Jul-05 | 139 KiB |
| projectile-3.0.0.0.20260703.27.tar.lz | 2026-Jul-03 | 101 KiB |
| projectile-2.10.0.20260701.159.tar.lz | 2026-Jul-01 | 88.7 KiB |
| projectile-2.9.1.0.20260214.223545.tar.lz | 2026-Feb-15 | 63.8 KiB |
| projectile-2.8.0.0.20240210.170605.tar.lz | 2024-Feb-10 | 60.2 KiB |
| projectile-2.5.0.0.20210819.81714.tar.lz | 2021-Aug-19 | 63.2 KiB |
News
Changelog
master (unreleased)
Changes
- Drop the standalone package headers (
Version,Package-Requires) fromprojectile-consult.el. It's an optional module shipped inside the Projectile package, not a package of its own, and the phantomPackage-Requiresmade build tooling treat it as one (e.g. it brokeeldev-based test runs on Emacs 28.x by enforcing Consult's Emacs 29.1 floor on the whole project). Its runtime needs (Consult 2.0+, hence Emacs 29.1+) are unchanged and documented in the file and the manual.
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. ... ...