diff --git a/custom-lisp/vedang-pet.el b/custom-lisp/vedang-pet.el
index a520100..983598a 100644
--- a/custom-lisp/vedang-pet.el
+++ b/custom-lisp/vedang-pet.el
@@ -914,7 +914,7 @@ FN is `eglot--guess-contact', ARGS is the arguments to
 
 (defun pet-eglot-setup ()
   "Set up Eglot to use server executables and virtualenvs found by PET."
-  (advice-add 'eglot-ensure :before #'pet-eglot--adjust-path-advice)
+  (advice-add 'eglot-ensure :around #'pet-eglot--adjust-path-advice)
   (advice-add 'eglot--workspace-configuration-plist :around #'pet-eglot--workspace-configuration-plist-advice)
   (advice-add 'eglot--guess-contact :around #'pet-eglot--guess-contact-advice))
 
diff --git a/unravel-emacs.org b/unravel-emacs.org
index e9c2516..466cde3 100644
--- a/unravel-emacs.org
+++ b/unravel-emacs.org
@@ -6674,6 +6674,35 @@ Also see `prot-window-delete-popup-frame'." command)
 
   
 
+  (defun pet--adjust-path (bin-dir)
+    "Add BIN-DIR to the various places that `executable-find' looks at, when
+  it looks for an executable."
+    (when (not (memql (concat bin-dir "/") exec-path))
+      (setq-local exec-path (cons (concat bin-dir "/") exec-path)))
+    (when (not (memql bin-dir tramp-remote-path))
+      (setq-local tramp-remote-path (cons bin-dir tramp-remote-path)))
+    (setenv "PATH" (string-join exec-path path-separator)))
+
+  (defun pet-adjust-paths-executable-find (executable)
+    "Adjust paths so that we can find the correct EXECUTABLE for the current
+  Python project."
+    (cond ((and (pet-use-pre-commit-p)
+                (not (string-prefix-p "python" executable))
+                (pet-pre-commit-config-has-hook-p executable))
+           (condition-case err
+               (let* ((venv (or (pet-pre-commit-virtualenv-path executable)
+                                (user-error "`pre-commit' is configured but the hook `%s' does not appear to be installed" executable))))
+                 (pet--adjust-path (concat (file-name-as-directory venv) (pet-system-bin-dir))))
+             (error (pet-report-error err))))
+          ((pet-virtualenv-root)
+           (pet--adjust-path (concat (file-name-as-directory (pet-virtualenv-root)) (pet-system-bin-dir))))
+          ((and (pet--executable-find "pyenv" t)
+                (condition-case err
+                    (car (process-lines "pyenv" "which" executable))
+                  (error (pet-report-error err))))
+           (pet--adjust-path (file-name-parent-directory (car (process-lines "pyenv" "which" executable)))))
+          (t (pet-report-error "No path adjustment required"))))
+
   ;;;###autoload
   (defun pet-executable-find (executable)
     "Find the correct EXECUTABLE for the current Python project.
@@ -6685,31 +6714,9 @@ Also see `prot-window-delete-popup-frame'." command)
   The executable will only be searched in an environment created by
   a Python virtualenv management tool if the project is set up to
   use it."
-    (cond ((and (pet-use-pre-commit-p)
-                (not (string-prefix-p "python" executable))
-                (pet-pre-commit-config-has-hook-p executable))
-           (condition-case err
-               (let* ((venv (or (pet-pre-commit-virtualenv-path executable)
-                                (user-error "`pre-commit' is configured but the hook `%s' does not appear to be installed" executable)))
-                      (bin-dir (concat (file-name-as-directory venv) (pet-system-bin-dir)))
-                      (bin-path (concat bin-dir "/" executable)))
-                 (if (file-exists-p bin-path)
-                     bin-path
-                   (user-error "`pre-commit' is configured but `%s' is not found in %s" executable bin-dir)))
-             (error (pet-report-error err))))
-          ((when-let* ((venv (pet-virtualenv-root))
-                       (path (list (concat (file-name-as-directory venv) (pet-system-bin-dir))))
-                       (exec-path path)
-                       (tramp-remote-path path)
-                       (process-environment (copy-sequence process-environment)))
-             (setenv "PATH" (string-join exec-path path-separator))
-             (pet--executable-find executable t)))
-          ((when (pet--executable-find "pyenv" t)
-             (condition-case err
-                 (car (process-lines "pyenv" "which" executable))
-               (error (pet-report-error err)))))
-          (t (or (pet--executable-find executable t)
-                 (pet--executable-find (concat executable "3") t)))))
+    (pet-adjust-paths-executable-find executable)
+    (or (pet--executable-find executable t)
+        (pet--executable-find (concat executable "3") t)))
 
   (defvar pet-project-virtualenv-cache nil)
 
@@ -6903,20 +6910,17 @@ Also see `prot-window-delete-popup-frame'." command)
 
   
 
-  (defvar eglot-workspace-configuration)
   (declare-function jsonrpc--process "ext:jsonrpc")
-  (declare-function eglot--executable-find "ext:eglot")
   (declare-function eglot--workspace-configuration-plist "ext:eglot")
   (declare-function eglot--guess-contact "ext:eglot")
 
-  (defun pet-eglot--executable-find-advice (fn &rest args)
-    "Look up Python language servers using `pet-executable-find'.
+  (defun pet-eglot--adjust-path-advice (fn &rest args)
+    "Adjust paths before looking up Python language servers.
 
-  FN is `eglot--executable-find', or `executable-find' (1.17+), depending
-  on the version of `eglot' being used. ARGS is the arguments to FN."
+  FN is `eglot-ensure'. ARGS is the arguments to FN."
     (pcase-let ((`(,command . ,_) args))
       (if (member command '("pylsp" "pyls" "basedpyright-langserver" "pyright-langserver" "jedi-language-server" "ruff-lsp"))
-          (pet-executable-find command)
+          (pet-adjust-paths-executable-find command)
         (apply fn args))))
 
   (defun pet-lookup-eglot-server-initialization-options (command)
@@ -7003,7 +7007,7 @@ Also see `prot-window-delete-popup-frame'." command)
                     (copy-tree b t)))
 
   (defun pet-eglot--workspace-configuration-plist-advice (fn &rest args)
-    "Enrich `eglot-workspace-configuration' with paths found by `pet'.
+    "Enrich `eglot--workspace-configuration-plist' with paths found by `pet'.
 
   FN is `eglot--workspace-configuration-plist', ARGS is the
   arguments to `eglot--workspace-configuration-plist'."
@@ -7045,21 +7049,13 @@ Also see `prot-window-delete-popup-frame'." command)
 
   (defun pet-eglot-setup ()
     "Set up Eglot to use server executables and virtualenvs found by PET."
-    (if (fboundp 'eglot--executable-find)
-        ;; Eglot version 1.16 or below
-        (advice-add 'eglot--executable-find :around #'pet-eglot--executable-find-advice)
-      ;; Eglot version 1.17 and above
-      (advice-add 'executable-find :around #'pet-eglot--executable-find-advice))
+    (advice-add 'eglot-ensure :before #'pet-eglot--adjust-path-advice)
     (advice-add 'eglot--workspace-configuration-plist :around #'pet-eglot--workspace-configuration-plist-advice)
     (advice-add 'eglot--guess-contact :around #'pet-eglot--guess-contact-advice))
 
   (defun pet-eglot-teardown ()
     "Tear down PET advices to Eglot."
-    (if (fboundp 'eglot--executable-find)
-        ;; Eglot version 1.16 or below
-        (advice-remove 'eglot--executable-find #'pet-eglot--executable-find-advice)
-      ;; Eglot version 1.17 and above
-      (advice-remove 'executable-find #'pet-eglot--executable-find-advice))
+    (advice-remove 'eglot-ensure #'pet-eglot--adjust-path-advice)
     (advice-remove 'eglot--workspace-configuration-plist #'pet-eglot--workspace-configuration-plist-advice)
     (advice-remove 'eglot--guess-contact #'pet-eglot--guess-contact-advice))