use-package를 사용하여 elpy 로딩을 연기하려면 어떻게해야합니까?


9

:idle더 이상 물건을 연기하는 적절한 방법이 아닌 모든 사용 패키지 호출을 업데이트했습니다 . 현재 내로드 시간에서 가장 큰 타격 중 하나 elpy는 추가 모듈을 모두로드하는 것입니다. 현재 내 호출은 다소 기본적입니다.

(use-package elpy
  :commands elpy-enable
  :init (elpy-enable)
  :config
  (progn
    (setq elpy-rpc-backend "jedi"
          elpy-rpc-project-specific 't)
    (when (fboundp 'flycheck-mode)
      (setq elpy-modules (delete 'elpy-module-flymake elpy-modules)))))

그러나 파이썬 모듈을 편집하지 않으면 다소 낭비입니다. 문제는 elpy가 모드의 모음이므로 elpy-enable호출해야 할 때 모드 바인딩 양식을 사용할 수는 없다는 것 입니다. 그래서 어떤 접근 방식을 사용해야합니까? 파이썬 모드 훅에서 트리거하는 경우입니까?


방금 MELPA 버전의 use-package 추적을 중단했습니다. : 유휴 상태로 교체하지 않은 것으로 보입니다. 교체품이 나올 때까지 기다립니다.
abo-abo

@ abo-abo : 이유를 이해할 수 있습니다. : idle은 약간의 해킹입니다. 실제로 적절한 주문형 로딩을 위해서는 "시간이 지남"이외의 이벤트가 발생해야합니다.
stsquad

2
:idle:defer 30패키지를로드 한 후의 지연 시간 (초) 과 같은 것으로 대체 할 수 있습니다 .
Kaushal Modi

@kaushalmodi, 이미 작동합니까?
abo-abo

@ abo-abo 나는 시도하지 않았지만 아마도해야합니다. 어제의 커밋에서 해당 업데이트를 읽었습니다. README도 해당 정보로 업데이트됩니다.
Kaushal Modi

답변:


6

Elpy를 모르므로 문제를 올바르게 이해하고 있는지 잘 모르겠습니다. use-package그러나 나는 알고 있으며 최근에는 똑같은 문제, 즉을 제거했습니다 :idle.

기본적으로 Elpy 사용 방법에 따라 두 가지 방법이 있습니다. 당신도 가난한 사람의 사용 :idle으로 run-with-idle-timer, 예를 들어,

:init (run-with-idle-timer 10 nil #'elpy-enable)

또는 파이썬 모드가로드되거나 활성화 될 때까지 좋은 것을 with-eval-after-load사용하거나 python-mode-hookElpy를 사용 하고 지연시킬 수 있습니다.

:init (add-hook 'python-mode-hook #'elpy-enable)
;; or
:init (with-eval-after-load 'python (elpy-enable))

elpy가 간단한 모드라면 괜찮을 것입니다. 그러나 실제로 파이썬 경험을보다 통합하기 위해 함께 모여있는 여러 가지 마이너 모드입니다. 따라서 elpy-enable 단계는 첫 번째 python 파일이로드되기 전에 실행되어야 모든 모듈이 구성되고 준비됩니다.
stsquad

로드 후 eval을 사용한 @stsquad는 정확히 그렇게해야합니다.
lunaryorn

1
:commands elpy-enable작동 하도록 추가해야 합니다. :init (with-eval-after-load 'python (elpy-enable)) :commands elpy-enable
azzamsa

3

elpy의 저자는 변수를 elpy-enable수정 python-mode-hook하여 mode-hook 내에서 변수를 호출하는 것이 너무 늦기 때문에 조언을 통해이 작업을 수행 할 것을 제안 합니다 : https://github.com/jorgenschaefer/elpy/wiki/Configuration

간단한 접근법 :

(package-initialize)
(advice-add 'python-mode :before 'elpy-enable)

사용하여 use-package:

(use-package elpy :ensure t
  :defer t
  :init
  (advice-add 'python-mode :before 'elpy-enable))

1
내가 찾을 수 없을 때 이것을 찾아 주셔서 감사합니다. IMHO는이 정보를 숨길 수있는 잘못된 곳이라는 관리자 에게 피드백 을주었습니다. 또한 공식 문서 README.rst에도 있지만 가장 먼저 눈에 띄는 장소는 아닙니다 : 문서의 설치 섹션 . 문제 # 1606 에서 이것을보고했습니다 .
Adam Spiers

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.