projectile 
- Description
- Manage and navigate projects in Emacs easily
- Latest
- projectile-2.10.0.20260620.133.tar (.sig), 2026-Jun-20, 440 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.20260620.128.tar.lz | 2026-Jun-20 | 80.6 KiB |
| projectile-2.10.0.20260619.126.tar.lz | 2026-Jun-19 | 80.3 KiB |
| projectile-2.10.0.20260615.120.tar.lz | 2026-Jun-15 | 79.1 KiB |
| projectile-2.10.0.20260604.112.tar.lz | 2026-Jun-04 | 76.1 KiB |
| projectile-2.10.0.20260429.111805.tar.lz | 2026-May-19 | 75.9 KiB |
| projectile-2.10.0snapshot0.20260429.111805.tar.lz | 2026-Apr-29 | 75.9 KiB |
| projectile-2.10.0snapshot0.20260228.85137.tar.lz | 2026-Feb-28 | 65.4 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
- #1872: Clarify in the
projectile-register-project-typedocstring and the manual that a list ofmarker-filesmust 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. - #1935: The
emacs-easkproject type now has atestcommand (eask test), soprojectile-test-projectworks out of the box for Eask projects. Eask auto-detects the test framework (buttercup, ERT, ...), so no framework-specific type is needed. - #1638: Document in
projectile-svn-commandthat it runs non-interactively and therefore needs SVN credentials to be cached up front for authenticated remotes. - Keep a separate command history per lifecycle command type (configure, compile, test, install, package, run), so the prompt's
M-phistory no longer mixes, say, test commands with compile commands.projectile-repeat-last-commandstill uses the combined per-project history and is unaffected. - Remove the unused private
projectile--init-known-projectsalias (a leftover compatibility shim for the old known-projects API; nothing in the codebase referenced it). projectile-get-immediate-sub-projectsskips thegit submodule foreachshell-out for git projects with no.gitmodulesfile anywhere up the parent chain. Hot path for monorepos that index the project root often.projectile-discover-projects-in-directorynow usesdirectory-files-no-dot-files-regexpto skip.and..at the C level instead of doing the post-filter in Elisp - matches the indexing walker.- Document the anchored vs
*-prefixed semantics ofprojectile-globally-ignored-directories, thefindfallback's lack of common directory exclusions whenfdisn't available, and howfd/git ls-fileshandle deleted-but-unstaged files differently. - Speed up native indexing on large trees:
projectile-index-directorynow hashes the ignored-files / ignored-directories / globally-ignored-directory-names lists once per indexing call (the per-filemember' 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-somewalks 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
.projectiledeclares 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 inprojectile-project-files. projectile-files-via-ext-commandnow accepts an optionalpathspecsargument; entries are shell-quoted before being appended to the command.projectile-dir-files-aliensimilarly accepts an optionalsubdirsargument that threads through.- Document the
hybridindexing method in the manual and add a feature matrix showing which Projectile knobs (dirconfig, global ignores/unignores, sort order, default caching) apply undernative/hybrid/alien. projectile-dir-files-aliennow accepts an optionalvcsargument 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 ondirectory-files-no-dot-files-regexpto filter out.and..at the C level instead of walking past them in Elisp. ... ...