-
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Important
This is a 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 instead.
To replace projectile with project.el (built in since 26, but became mature enough to use by 27).
Motivations
- Relevant to our goal to prioritize native functionality, 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 offind/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-filereplacesprojectile-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. (wrong-numbe-of-argumentserror from backportedfind-sibling-filecommand doomemacs#7795, 198fe82b6d49) - Modify
project--files-in-directoryto usefdorripgrep(falling back tofind+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 ofproject-vc-ignores,vc-directory-exclusion-list,grep-find-ignored-files
-
- Invalidate
project-vcproperty ifproject-vc-merge-submodules/project-vc-extra-root-markerschanges. - Add interactive version of
project-remember-project(seeproject-forget-projectfor reference). - Adapt projectile references in
lisp/lib/{buffers,projects,scratch,files}.elto 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/*
Metadata
Metadata
Assignees
Labels
No labels