diff --git a/modules/lang/python/config.el b/modules/lang/python/config.el index e58093855..c1b7dab99 100644 --- a/modules/lang/python/config.el +++ b/modules/lang/python/config.el @@ -311,6 +311,24 @@ :after cython-mode) +(use-package! pip-requirements + :defer t + :config + ;; HACK `pip-requirements-mode' performs a sudden HTTP request to + ;; https://pypi.org/simple, which causes unexpected hangs (see #5998). This + ;; advice defers this behavior until the first time completion is invoked. + ;; REVIEW More sensible behavior should be PRed upstream. + (defadvice! +python--init-completion-a (&rest args) + "Call `pip-requirements-fetch-packages' first time completion is invoked." + :before #'pip-requirements-complete-at-point + (unless pip-packages (pip-requirements-fetch-packages))) + (defadvice! +python--inhibit-pip-requirements-fetch-packages-a (fn &rest args) + "No-op `pip-requirements-fetch-packages', which can be expensive." + :around #'pip-requirements-mode + (letf ((#'pip-requirements-fetch-packages #'ignore)) + (apply fn args)))) + + ;; ;;; LSP