NonGNU-devel ELPA - projectile

projectile Atom Feed

Description
Manage and navigate projects in Emacs easily
Latest
projectile-2.10.0.20260701.159.tar (.sig), 2026-Jul-01, 470 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-2.10.0.20260630.157.tar.lz2026-Jun-3088.0 KiB
projectile-2.10.0.20260630.155.tar.lz2026-Jun-3087.3 KiB
projectile-2.10.0.20260629.152.tar.lz2026-Jun-2986.0 KiB
projectile-2.10.0.20260619.126.tar.lz2026-Jun-1980.3 KiB
projectile-2.10.0.20260429.111805.tar.lz2026-May-1975.9 KiB
projectile-2.10.0snapshot0.20260429.111805.tar.lz2026-Apr-2975.9 KiB
projectile-2.10.0snapshot0.20260228.85137.tar.lz2026-Feb-2865.4 KiB
projectile-2.9.1.0.20260214.223545.tar.lz2026-Feb-1563.8 KiB
projectile-2.8.0.0.20240210.170605.tar.lz2024-Feb-1060.2 KiB
projectile-2.5.0.0.20210819.81714.tar.lz2021-Aug-1963.2 KiB

News

Changelog

master (unreleased)

Changes
  • projectile-find-references now honours Projectile's ignore configuration (.projectile and the globally-ignored files/directories) and is scoped via the project's file set, like projectile-grep/-ag/-ripgrep. It previously went through the semantic-symref API, which searched the whole tree and ignored that configuration. It also now defaults the prompt from the active region (not just the symbol at point) and no longer carries a dead pre-27 display fallback. The search remains a backend-agnostic textual one; for semantic references use the built-in xref-find-references (which is also scoped to the Projectile project).
  • Remove the built-in tags support: projectile-find-tag, projectile-regenerate-tags, projectile-visit-project-tags-table, and the projectile-tags-command/projectile-tags-backend options (along with the ggtags/etags-select special casing). ctags/etags navigation has been largely superseded by xref and LSP (eglot is built in since Emacs 29). Use xref-find-definitions directly, or projectile-find-references for project-wide references. projectile-tags-file-name is kept, since it's still used to exclude a generated tags file from indexing.
  • Remove projectile-browse-dirty-projects and projectile-vcs-dirty-state. The implementation spun up vc-dir and busy-waited (sleep-for) up to 30 seconds per project across every known project, scraping status strings - slow, blocking, and niche. Use Magit, vc-dir, or a dedicated tool to find projects with uncommitted changes.
  • Remove the idle timer (projectile-enable-idle-timer, projectile-idle-timer-seconds, projectile-idle-timer-hook). It existed mainly to re-run projectile-regenerate-tags on an idle timer, which makes little sense in an LSP/xref world, and it was off by default. Use a plain run-with-idle-timer if you really want this behavior.
  • Remove projectile-commander (and def-projectile-commander-method), the single-key command dispatcher. It's superseded by projectile-dispatch, the transient menu added in this cycle. The kbd:[s-p m] binding and the C-u s-p p project-switch prefix now invoke projectile-dispatch instead (the prefix falls back to projectile-switch-project-action when transient isn't installed).
  • A cold projectile-find-file (and any command that lists project files) no longer freezes Emacs while the project is indexed under the alien/hybrid methods. The indexing command runs asynchronously and is awaited in a way that keeps Emacs responsive to redisplay and C-g (which aborts the indexing), instead of blocking until it finishes. The resulting file list is identical; only the responsiveness during indexing differs. Controlled by the new projectile-async-indexing (default on); it has no effect under native indexing, in batch mode, or while a keyboard macro runs, all of which index synchronously as before.
  • Speed up native indexing further: projectile-index-directory now reads each directory with directory-files-and-attributes, so an entry's type comes from the listing call instead of a file-directory-p stat per file. That stat was a separate filesystem round-trip each, which dominated the walk on large and remote (TRAMP) trees - it's now one round-trip per directory instead of one per file. Symlinks pointing at directories are still followed, matching the previous behaviour. Roughly 40% faster on a local 12k-file tree; the win is far larger over TRAMP.
  • Speed up native indexing's post-walk step: projectile-dir-files-native strips the project-root prefix with a single substring per file instead of file-relative-name, which paid for an expand-file-name/abbreviate-file-name per file. projectile-project-files also skips re-relativising the listing when the only directory walked is the project root itself (the common single-directory case). Together that removes roughly two seconds of overhead per 90k files indexed.
  • #1872: Clarify in the projectile-register-project-type docstring and the manual that a list of marker-files must all be present for a type to match (logical AND), and that a predicate function should be used to match when any one of several files is present. ... ...