                 (apply fn args))))
         (advice-add 'pop-to-buffer :around 'purpose-pop-to-buffer-advice)))
     (advice-add 'compilation-goto-locus :around 'purpose-compilation-goto-locus-advice))
+
+  ;; Prevent `isearch-describe-*' commands from bypassing purpose.
+  (with-eval-after-load 'isearch
+    (setq isearch--display-help-action '(purpose--action-function . nil)))
 
   ;; Replace `edebug-pop-to-buffer' with `pop-to-buffer'
   (with-eval-after-load 'edebug

        (goto-char (point-min)))
      (switch-to-buffer buffer))
    (advice-add 'whitespace-display-window :override 'whitespace-display-window-advice))

  (with-eval-after-load 'frameset
    (defun remove-unrestorable-file-buffers (window-tree)

      (set-window-hscroll window 0))
    (advice-add 'edebug-pop-to-buffer :override 'edebug-pop-to-buffer-advice))

  (with-eval-after-load 'whitespace
    (defun whitespace-display-window-advice (buffer)
      (with-current-buffer buffer
