diff --git a/CHANGELOG.md b/CHANGELOG.md index fc2f98433..a105e5248 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * [#1870](https://github.com/bbatsov/projectile/pull/1870): Add package command for CMake projects. * [#1875](https://github.com/bbatsov/projectile/pull/1875): Add support for Sapling VCS. +* [TODO/Add issuenum](https://github.com/bbatsov/projectile/pull/): Add support for Jujutsu VCS. ## 2.8.0 (2023-10-13) diff --git a/doc/modules/ROOT/pages/faq.adoc b/doc/modules/ROOT/pages/faq.adoc index 7a930ab84..a44608c2a 100644 --- a/doc/modules/ROOT/pages/faq.adoc +++ b/doc/modules/ROOT/pages/faq.adoc @@ -59,7 +59,7 @@ automatically used when appropriate to improve performance. Inside version control repositories, VC tools are used when installed to list files more efficiently. The supported tools include git, hg, -fossil, bzr, darcs, pijul, svn, and sapling. +fossil, bzr, darcs, pijul, svn, sapling, jujutsu. Outside version control repositories, file search tools are used when installed for a faster search than pure Elisp. The supported tools diff --git a/doc/modules/ROOT/pages/projects.adoc b/doc/modules/ROOT/pages/projects.adoc index 17824c903..9400dd7b4 100644 --- a/doc/modules/ROOT/pages/projects.adoc +++ b/doc/modules/ROOT/pages/projects.adoc @@ -32,6 +32,7 @@ a project. Out of the box Projectile supports: * Fossil * Darcs * Sapling +* Jujutsu === File markers diff --git a/projectile.el b/projectile.el index 6bbe6edc5..6949fefb1 100644 --- a/projectile.el +++ b/projectile.el @@ -332,6 +332,7 @@ See `projectile-register-project-type'." "_darcs" ; Darcs VCS root dir ".pijul" ; Pijul VCS root dir ".sl" ; Sapling VCS root dir + ".jj" ; Jujutsu VCS root dir ) "A list of files considered to mark the root of a project. The bottommost (parentmost) match has precedence." @@ -426,7 +427,9 @@ is set to `alien'." "^\\.ccls-cache$" "^\\.cache$" "^\\.clangd$" - "^\\.sl$") + "^\\.sl$" + "^\\.jj$" + ) "A list of directories globally ignored by projectile. Regular expressions can be used. @@ -725,6 +728,12 @@ Set to nil to disable listing submodules contents." :group 'projectile :type 'string) +(defcustom projectile-jj-command "jj files --no-pager ." + "Command used by projectile to get the files in a Jujutsu project." + :group 'projectile + :type 'string + :package-version '(projectile . "2.9.0")) + (defcustom projectile-sapling-command "sl locate -0 -I ." "Command used by projectile to get the files in a Sapling project." :group 'projectile @@ -1469,6 +1478,7 @@ Fallback to a generic command when not in a VCS-controlled project." ('pijul projectile-pijul-command) ('svn projectile-svn-command) ('sapling projectile-sapling-command) + ('jj projectile-jj-command) (_ projectile-generic-command))) (defun projectile-get-sub-projects-command (vcs) @@ -3659,6 +3669,7 @@ the variable `projectile-project-root'." ((projectile-file-exists-p (expand-file-name ".pijul" project-root)) 'pijul) ((projectile-file-exists-p (expand-file-name ".svn" project-root)) 'svn) ((projectile-file-exists-p (expand-file-name ".sl" project-root)) 'sapling) + ((projectile-file-exists-p (expand-file-name ".jj" project-root)) 'jj) ;; then we check if there's a VCS marker up the directory tree ;; that covers the case when a project is part of a multi-project repository ;; in those cases you can still the VCS to get a list of files for @@ -3672,6 +3683,7 @@ the variable `projectile-project-root'." ((projectile-locate-dominating-file project-root ".pijul") 'pijul) ((projectile-locate-dominating-file project-root ".svn") 'svn) ((projectile-locate-dominating-file project-root ".sl") 'sapling) + ((projectile-locate-dominating-file project-root ".jj") 'jj) (t 'none))) (defun projectile--test-name-for-impl-name (impl-file-path)