Function: cider--update-project-dir
cider--update-project-dir is a byte-compiled function defined in
cider.el.
Signature
(cider--update-project-dir PARAMS)
Documentation
Update :project-dir in PARAMS.
Params is a plist with the following keys (non-exhaustive)
:edit-project-dir prompt (optional) ask user to confirm the project root
directory.
Source Code
;; Defined in ~/.emacs.d/elpa/cider-20260414.1619/cider.el
(defun cider--update-project-dir (params)
"Update :project-dir in PARAMS.
Params is a plist with the following keys (non-exhaustive)
:edit-project-dir prompt (optional) ask user to confirm the project root
directory."
(let* ((params (cider--update-do-prompt params))
(proj-dir (if (or (plist-get params :do-prompt)
(plist-get params :edit-project-dir))
(read-directory-name "Project: "
(clojure-project-dir (cider-current-dir)))
(plist-get params :project-dir)))
(orig-buffer (current-buffer)))
(if (or (null proj-dir)
(file-in-directory-p default-directory proj-dir))
(plist-put params :project-dir
(or proj-dir
(clojure-project-dir (cider-current-dir))))
;; If proj-dir is not a parent of default-directory, transfer all local
;; variables and hack dir-local variables into a temporary buffer and keep
;; that buffer within `params` for the later use by other --update-
;; functions. The context buffer should not be used outside of the param
;; initialization pipeline. Therefore, we don't bother with making it
;; unique or killing it anywhere.
(let ((context-buf-name " *cider-context-buffer*"))
(when (get-buffer context-buf-name)
(kill-buffer context-buf-name))
(with-current-buffer (get-buffer-create context-buf-name)
(dolist (pair (buffer-local-variables orig-buffer))
(pcase pair
(`(,name . ,value) ;ignore unbound variables
(ignore-errors (set (make-local-variable name) value))))
(setq-local buffer-file-name nil))
(let ((default-directory proj-dir))
(hack-dir-local-variables-non-file-buffer)
(thread-first params
(plist-put :project-dir proj-dir)
(plist-put :--context-buffer (current-buffer)))))))))