NonGNU-devel ELPA - projectile

projectile Atom Feed

Description
Manage and navigate projects in Emacs easily
Latest
projectile-2.10.0snapshot0.20260429.111805.tar (.sig), 2026-Apr-29, 420 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.0snapshot0.20260429.70940.tar.lz2026-Apr-2975.9 KiB
projectile-2.10.0snapshot0.20260427.75828.tar.lz2026-Apr-2772.6 KiB
projectile-2.10.0snapshot0.20260426.113426.tar.lz2026-Apr-2672.0 KiB
projectile-2.10.0snapshot0.20260310.85858.tar.lz2026-Mar-1066.2 KiB
projectile-2.10.0snapshot0.20260304.194310.tar.lz2026-Mar-0465.7 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.9.1.0.20260213.80255.tar.lz2026-Feb-1362.6 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-get-immediate-sub-projects skips the git submodule foreach shell-out for git projects with no .gitmodules file anywhere up the parent chain. Hot path for monorepos that index the project root often.
  • projectile-discover-projects-in-directory now uses directory-files-no-dot-files-regexp to skip . and .. at the C level instead of doing the post-filter in Elisp - matches the indexing walker.
  • Document the anchored vs *-prefixed semantics of projectile-globally-ignored-directories, the find fallback's lack of common directory exclusions when fd isn't available, and how fd/git ls-files handle deleted-but-unstaged files differently.
  • Speed up native indexing on large trees: projectile-index-directory now hashes the ignored-files / ignored-directories / globally-ignored-directory-names lists once per indexing call (the per-file member' scans were O(N*M)), expands dirconfig glob patterns once per directory level instead of once per (file, pattern) pair, and accumulates results into a shared cell so we no longer pay for anapply append' at each recursion level.
  • projectile-remove-ignored (hybrid post-processing) now hashes the ignored-files basenames and pre-splits ignored-dirs into prefix-match and any-segment groups, so the per-file inner loops drop from O(M) seq-some walks to O(1) hash lookups (or O(segments) for *-prefixed entries).
  • Hybrid indexing now batches the external command into a single invocation when the project's .projectile declares multiple + keep entries, instead of shelling out once per kept subdirectory. The kept paths are passed to the indexing tool (e.g. git ls-files, fd, find) as positional pathspecs and submodule files outside those subdirectories are filtered out. Resolves the long-standing TODO in projectile-project-files.
  • projectile-files-via-ext-command now accepts an optional pathspecs argument; entries are shell-quoted before being appended to the command. projectile-dir-files-alien similarly accepts an optional subdirs argument that threads through.
  • Document the hybrid indexing method in the manual and add a feature matrix showing which Projectile knobs (dirconfig, global ignores/unignores, sort order, default caching) apply under native/hybrid/alien.
  • projectile-dir-files-alien now accepts an optional vcs argument so the dispatcher can thread through the already-resolved VCS instead of recomputing it. Existing single-argument callers are unaffected.
  • projectile-index-directory (native indexing) now relies on directory-files-no-dot-files-regexp to filter out . and .. at the C level instead of walking past them in Elisp.
  • projectile-project-root-cache now keys entries on cons cells ((FUNC . DIR) for per-function results, ('none . DIR) for the overall failure marker) instead of formatted strings. This is internal state, but third-party code that reaches into the cache directly will need to update.
  • projectile-parse-dirconfig-file' now returns aprojectile-dirconfig' struct (with keep',ignore', ensure', andprefixless-ignore' slots) instead of a positional 3-tuple. External callers should use the accessors (projectile-dirconfig-keep' etc.) rather thancar'/cadr'/caddr'.
  • Soft-deprecate prefix-less ignore entries in .projectile'. Lines without a+'/-'/!' prefix are still treated as ignore patterns for backward compatibility, but a one-time warning is now shown for each project that uses them. Set `projectile-warn-on-prefixless-dirconfig-lines' to nil to silence.
New features
  • #1936: Add projectile-discard-root-cache command to clear projectile-project-root-cache without touching other Projectile caches. Useful after creating or removing a project marker, since the existing projectile-invalidate-cache either also drops the file list cache or prompts for a project depending on context. ... ...