diff options
| author | Bozhidar Batsov <bozhidar@batsov.dev> | 2024-02-12 10:19:34 +0200 |
|---|---|---|
| committer | Bozhidar Batsov <bozhidar@batsov.dev> | 2024-02-12 10:19:34 +0200 |
| commit | 1da9c6495d6aee8db77d36dfd03231e27b2fd2f5 (patch) | |
| tree | 76f462b76ebaf4041b26e4a61e508f1872c7c9f7 | |
| parent | 44cc78176bf6e8887db89c7066308373e83e7aeb (diff) | |
[Docs] Extend comparison section
| -rw-r--r-- | doc/modules/ROOT/pages/projectile_vs_project.adoc | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/doc/modules/ROOT/pages/projectile_vs_project.adoc b/doc/modules/ROOT/pages/projectile_vs_project.adoc index 0608d48..9e86103 100644 --- a/doc/modules/ROOT/pages/projectile_vs_project.adoc +++ b/doc/modules/ROOT/pages/projectile_vs_project.adoc @@ -43,6 +43,10 @@ NOTE: As of early 2024. (Projectile 2.8 and `project.el` in Emacs 29) | Yes (`.projectile`) | No +| Project Cache +| Yes +| No + | Built-in Project Types | 60+ | n/a @@ -55,6 +59,18 @@ NOTE: As of early 2024. (Projectile 2.8 and `project.el` in Emacs 29) | 80+ | 30+ +| Minor Mode +| Yes +| No + +| Global Keybindings +| Require user setup +| Out-of-the-box (`C-x p`) + +| Integration with `xref` +| Yes +| Yes + | Feature-set | Extensive | Essential @@ -68,6 +84,26 @@ NOTE: As of early 2024. (Projectile 2.8 and `project.el` in Emacs 29) | Somewhat complicated (standard for Emacs) |=== +== Notable Differences + +=== Minor Mode vs Global Keymap + +Projectile makes heavy use of `projectile-mode`, which provides some additional features (e.g. project status in the modeline). +You can use Projectile without it, but I guess few people do so. Most of Projectile's functionality will work fine even if the mode is not active. + +`project.el` on the other hand, just adds its own keymap under the global keymap (using the prefix `C-x p`). You can do the same for Projectile, +of course, if you want to. + +=== Project Indexing Strategies + +Projectile has multiple project indexing strategies to cover a wide variety of use cases. `project.el` has only one, which is more or less the same +as Projectile's `alien` strategy. Admittedly, that's probably the most commonly used strategy. + +=== `.projectile` + +Projectile has it's own project marker/configuration file. It's a remnant of the early days of the project where a wanted to build a tool that didn't +rely on the third-party applications and it's significance today is not that big. (it will be completely ignored unless you're using `native` or `hybrid` indexing) + == Projectile's Pros * Projectile targets Emacs 25, so you can get all the features even with older Emacs releases @@ -75,8 +111,12 @@ NOTE: As of early 2024. (Projectile 2.8 and `project.el` in Emacs 29) * Projectile supports a lot of project types out-of-the-box (e.g. `ruby`, `Rails`, `cabal` and `dune`) * Projectile has a lot more features, although one can argue that some of them are rarely needed ** Projectile's Commander is pretty cool for project switching! -* It's easier to contribute to Projectile, as you don't need to deal with Emacs's contributor's agreement and the `emacs-devel` mailing list +* It's easier to contribute to Projectile + ** Projectile is hosted in GitHub + ** It accepts pull requests + ** You don't need to sign a contributor agreement * Projectile has more extensive documentation + ** You can compare it with [project.el's documentation](https://www.gnu.org/software/emacs/manual/html_node/emacs/Projects.html) and decide for themselves == Projectile's Cons @@ -84,3 +124,4 @@ NOTE: As of early 2024. (Projectile 2.8 and `project.el` in Emacs 29) ** Built-in packages in theory should be maintained better (or at least for longer), as they have the Emacs team behind them. ** While Projectile has a rich ecosystem of extensions, over a long enough period of time likely `project.el` will take the lead. * Due to its larger size, one can argue that Projectile is more complex than `project.el` + ** Admittedly I would have done some things differently if were starting Projectile today, but I don't think Projetile's core complexity is high. |
