Як я можу відкласти завантаження elpy за допомогою пакета use?


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)))))

Однак це досить марно, якщо я ніколи не редагую жоден модуль python. Проблема в тому, що elpy - це набір режимів, тому я не можу просто використовувати форму прив'язки режиму, як elpy-enableпотрібно викликати. Отже, який підхід я повинен використовувати. Це лише випадок запуску на гачку в режимі пітона?


Я просто перестав відслідковувати MELPA-версію використання-пакету. Здається: простої зняли, і нічого не замінили. Я просто зачекаю, поки не з’явиться заміна.
або-або

@ abo-abo: Я можу зрозуміти, чому, idle - це трохи хак. Дійсно для правильного завантаження на вимогу це повинно бути викликане подією, відмінною від "минув деякий час".
stsquad

2
:idleможна замінити чимось на зразок, :defer 30де число - це затримка в секундах, після чого пакет слід завантажувати.
Каушал Моді

@kaushalmodi, це вже працює?
або-або

@ Або-Або я не пробував, але, мабуть, повинен. Я прочитав це оновлення у вчорашній програмі. README також оновлюється цією інформацією.
Каушал Моді

Відповіді:


6

Я не знаю Елпі, тому я не впевнений, чи правильно я розумію вашу проблему. Я знаю use-package, хоча і нещодавно постраждав від того самого питання, а саме відсторонення :idle.

В основному, є два способи, залежно від того, як потрібно використовувати Elpy. Можна або скористатися бідними чоловіками:idle , з run-with-idle-timer, наприклад ,

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

Крім того, ви можете розраховувати на старий добрий with-eval-after-loadабо використовувати python-mode-hookта затримувати Elpy до того моменту, як після завантаження або включення режиму Python відповідно:

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

Якби elpy був простим режимом, було б добре. Однак насправді це купа мінорних режимів, зв'язаних разом, щоб зробити досвід пітона більш інтегрованим. Таким чином, крок включення elpy повинен бути запущений до завантаження першого файлу python, щоб усі модулі були налаштовані та готові.
stsquad

@stsquad with-eval-after-load має зробити саме це.
місячник

1
Мені потрібно додати, :commands elpy-enableщоб це працювало. :init (with-eval-after-load 'python (elpy-enable)) :commands elpy-enable
azzamsa

3

Автор програми elpy пропонує зробити це за допомогою поради, оскільки elpy-enableзмінює python-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 .
Адам

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.