doomemacs / doomemacs/community
Replace projectile with project.el
- Dominant language
- No language data
- Stars
- 9
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
> [!IMPORTANT]
> This is a [roadmap](https://doomemacs.org/roadmap) issue and is used solely to announce and document progress (to make it easier for users to follow and maintainers to track). Please do not use it for discussion; use [our discussion board](https://doomemacs.org/discuss) instead.
To replace [projectile](https://github.com/bbatsov/projectile) with [project.el](https://github.com/emacs-straight/project) (built in since 26, but became mature enough to use by 27).
## Motivations
- Relevant to [our goal to prioritize native functionality](https://github.com/orgs/doomemacs/projects/21/views/3?pane=issue&itemId=53778646), where equivalent or superior,
- project.el is tied to more native functionality (e.g. vc.el, grep.el, capf, etc),
- project.el has reached sufficient (but not total) feature parity with projectile,
- project.el is a simpler, lighter, and more stable codebase, and so is easier to build upon.
## Challenges
- project.el file list collectors lack a caching mechanism (but maybe we don't need them?)
- project.el cannot simply be reconfigured to use `fd`/`ripgrep` (fast) instead of `find`/`grep` (slow, and potentially buggy on BSD systems).
- project.el is built into Emacs. I plan to install a newer version anyway, but care must be taken to avoid the built-in version shadowing the new one.
## Tasks
- [ ] `find-sibling-file` replaces `projectile-find-other-file`, but only searches the current directory (whereas the latter searches the whole project for matches). An advice (or another command altogether) is needed to replicate projectile's behavior. (doomemacs/doomemacs#7795, doomemacs@198fe82b6d49)
- [ ] Modify `project--files-in-directory` to use `fd` or `ripgrep` (falling back to `find`+xref otherwise).
- [ ] Replace references to projectile variables with project.el analogues:
- [ ] `projectile-project-root-files` -> `project-vc-extra-root-markers`
- [ ] `projectile-globally-ignored-directories` -> one or more of of `project-vc-ignores`, `vc-directory-exclusion-list`, `grep-find-ignored-files`
- [ ] Invalidate `project-vc` property if `project-vc-merge-submodules`/`project-vc-extra-root-markers` changes.
- [ ] Add interactive version of `project-remember-project` (see `project-forget-project` for reference).
- [ ] Adapt projectile references in `lisp/lib/{buffers,projects,scratch,files}.el` to project.el.
- [ ] Adapt projectile references in modules (not an exhaustive list, just the more important ones):
- [ ] ui/workspaces
- [ ] ui/modeline
- [ ] config/default (autoloads, keybindings)
- [ ] completion/*
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.