 
 (defun +eshell--unused-buffer (&optional new-p)
   (or (unless new-p
-        (cl-loop for buf in (ring-elements +eshell-buffers)
+        (cl-loop for buf in (+eshell-buffers)
                  if (and (buffer-live-p buf)
                          (not (get-buffer-window buf t)))
                  return buf))

;;;###autoload
(defun +eshell|init ()
  "Initialize and track this eshell buffer in `+eshell-buffers'."
  (let ((buf (current-buffer)))
    (dolist (buf (ring-elements +eshell-buffers))
      (unless (buffer-live-p buf)
        (+eshell--remove-buffer buf)))
    (+eshell--setup-window (get-buffer-window buf))
    (+eshell--add-buffer buf)
    (setq +eshell--last-buffer buf)))

;;;###autoload
(defun +eshell|cleanup ()

  "Interactively switch to another eshell buffer."
  (interactive
   (let ((buffers (doom-buffers-in-mode
                   'eshell-mode (delq (current-buffer) (+eshell-buffers)))))
     (if (not buffers)
         (user-error "No eshell buffers are available")
       (list
