Refactor Project API to reflect changes upstream

projectile-project-root no longer returns `default-directory` if not in
a project (it returns nil). As such, doom-project-* functions (and their
uses) have been refactored.

+ doom-project-p & doom-project-root are aliases for
  projectile-project-p & projectile-project-root.
+ doom-project-{p,root,name,expand} now has a DIR argument (for
  consistency, since projectile-project-name and
  projectile-project-expand do not).
+ The nocache parameter is no longer necessary, as projectile's caching
  behavior is now more sane.
+ Removed some projectile advice/hacks that are no longer necessary.
+ Updated unit tests
This commit is contained in:
Henrik Lissner 2018-09-28 13:54:20 -04:00
parent 3961ba1662
commit 53fe7a1f04
22 changed files with 53 additions and 84 deletions

View file

@ -65,7 +65,7 @@ scratch buffer. See `doom-fallback-buffer-name' to change this."
If no project is active, return all buffers."
(let ((buffers (doom-buffer-list)))
(if-let* ((project-root (if (doom-project-p) (doom-project-root))))
(if-let* ((project-root (doom-project-root)))
(cl-loop for buf in buffers
if (projectile-project-buffer-p buf project-root)
collect buf)

View file

@ -88,8 +88,8 @@ MATCH is a string regexp. Only entries that match it will be included."
(recentf-add-file new-path))
(recentf-remove-if-non-kept old-path))
(when (and (bound-and-true-p projectile-mode)
(projectile-project-p)
(projectile-file-cached-p old-path (doom-project-root 'nocache)))
(doom-project-p)
(projectile-file-cached-p old-path (doom-project-root)))
(projectile-purge-file-from-cache old-path))
(when (bound-and-true-p save-place-mode)
(save-place-forget-unreadable-files)))
@ -111,7 +111,7 @@ MATCH is a string regexp. Only entries that match it will be included."
(list new-path))))
(new-path-dir (file-name-directory new-path))
(project-root (doom-project-root))
(short-new-name (if (file-in-directory-p new-path project-root)
(short-new-name (if (and project-root (file-in-directory-p new-path project-root))
(file-relative-name new-path project-root)
(abbreviate-file-name new-path))))
(unless (file-directory-p new-path-dir)

View file

@ -38,33 +38,23 @@ they are absolute."
;; Library
;;;###autoload
(defun doom-project-p (&optional nocache)
"Return t if this buffer is currently in a project.
If NOCACHE, don't fetch a cached answer."
(if nocache
(without-project-cache! (doom-project-p nil))
(let ((projectile-require-project-root t))
(and (projectile-project-p) t))))
(defalias 'doom-project-p #'projectile-project-p)
;;;###autoload
(defun doom-project-name (&optional nocache)
"Return the name of the current project.
If NOCACHE, don't fetch a cached answer."
(if nocache
(without-project-cache! (doom-project-name nil))
(projectile-project-name)))
(defalias 'doom-project-root #'projectile-project-root)
;;;###autoload
(defun doom-project-root (&optional nocache)
"Returns the root of your project, or `default-directory' if none was found.
If NOCACHE, don't fetch a cached answer."
(if nocache
(without-project-cache! (doom-project-root nil))
(let (projectile-require-project-root)
(projectile-project-root))))
(defun doom-project-name (&optional dir)
"Return the name of the current project."
(let ((project-root (projectile-project-root dir)))
(if project-root
(funcall projectile-project-name-function project-root)
"-")))
;;;###autoload
(defalias 'doom-project-expand #'projectile-expand-root)
(defun doom-project-expand (name &optional dir)
"Expand NAME to project root."
(expand-file-name name (projectile-project-root dir)))
;;;###autoload
(defun doom-project-find-file (dir)