NonGNU ELPA - projectile

projectile Atom Feed

Description
Manage and navigate projects in Emacs easily
Latest
projectile-3.1.0.tar (.sig), 2026-Jul-04, 610 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.0.0.tar.lz2026-Jul-0193.5 KiB
projectile-2.9.1.tar.lz2025-Feb-1361.7 KiB
projectile-2.9.0.tar.lz2025-Feb-1261.5 KiB
projectile-2.8.0.tar.lz2024-Mar-3159.6 KiB
projectile-2.7.0.tar.lz2022-Nov-2258.2 KiB
projectile-2.6.0.tar.lz2022-Oct-2556.6 KiB
projectile-2.5.0.tar.lz2021-Aug-1163.0 KiB

News

Changelog

master (unreleased)

3.1.0 (2026-07-04)

New features
  • Add declarative "file kinds", letting a project type describe categories of files (e.g. Rails models, controllers and views) via the new :file-kinds keyword of projectile-register-project-type.
    • projectile-find-file-of-kind (j) prompts for a kind and completes over just the project files of that kind.
    • projectile-toggle-related-file (J) generalizes projectile-toggle-between-implementation-and-test: it jumps to related files of other kinds, jumping straight when there's one, prompting when there are several, and cycling through them on repeated presses.
    • The rails-test, rails-rspec and django project types ship with ready-made :file-kinds tables. Related files are keyed by their namespaced path, so a top-level UsersController relates to the top-level User model rather than an Admin::User.
  • projectile-find-file and projectile-find-file-dwim now rank the files you work with first, ordering completion candidates by how often and how recently you've visited them (with decay).
    • The ranking is applied through completion metadata, so it works with any completion UI and under every indexing method, including alien (which projectile-sort-order never reached).
    • Controlled by projectile-enable-frecency (default on); the per-project history is persisted in projectile-frecency-file and capped by projectile-frecency-max-files.
  • #1992, #1587, #1553, #1794: Add named project tasks - shell commands (or functions returning them) that you can run by name.
    • projectile-tasks maps task names to commands and can be set globally, per project type via the new :tasks keyword of projectile-register-project-type, or per project via .dir-locals.el.
    • projectile-run-task (c x) picks a task with completion and runs it like the lifecycle commands, in a per-task compilation buffer; a prefix argument lets you edit the command first (e.g. to pass ad-hoc arguments).
    • projectile-repeat-last-task (c X) re-runs the project's last task.
  • #978: Add projectile-project-changed-functions, run whenever the current project changes - including implicitly via visiting a file or directory of another project - with the new and previous project root as arguments.
  • #1442: projectile-sort-order can now be set to a function that receives the list of project files and returns them in the desired order.
  • #1984: The VCS markers are now customizable via projectile-vcs-markers, whose order breaks ties between markers in the same directory - so colocated jj+git repositories can be detected as jj by moving .jj first.
  • #1890: Recognize osc (openSUSE Build Service) checkouts: .osc is now a VCS marker, a top-down-recurring root marker, and globally ignored; file listing uses the generic indexing command.
  • #1694: Add projectile-invalidate-cache-all, which invalidates the caches of all known projects at once (handy when commands like projectile-find-file-in-known-projects serve stale results).
  • #1075: Add experimental opt-in automatic cache updates via filesystem notifications, so files created, deleted or renamed outside Emacs update the cache without a manual projectile-invalidate-cache.
    • Enable it with projectile-auto-update-cache-with-watches; only local, cached projects are watched.
    • Each project uses one file-notify watch per directory, bounded by projectile-watch-directory-limit. ... ...