use-packageを使用してelpyの読み込みを延期するにはどうすればよいですか?


9

私はすべてのuse-package呼び出しを更新してきました。これ:idleは、物事を延期するための適切な方法ではなくなりました。現時点で、私の読み込み時間の最大のヒットの1つは、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必要に応じてモードバインディングフォームを使用できないことです。だから私はどのアプローチを使うべきですか?python-modeフックでトリガーするだけのケースですか?


MELPAバージョンのuse-packageの追跡を停止しました。:idleは何も置き換えずに削除されたようです。交換品がポップアップするまで待ちます。
abo-abo 2015年

@ abo-abo:理由は理解できますが、:idleはちょっとしたハックです。本当にオンデマンドで適切にロードするには、「時間が経過した」以外のイベントでトリガーする必要があります。
stsquad 2015年

2
:idle:defer 30数値は、パッケージがロードされるまでの秒単位の遅延であるようなものに置き換えることができます。
Kaushal Modi

@kaushalmodi、それはすでに機能していますか?
abo-abo 2015年

@ abo-abo私は試していませんが、たぶんそうすべきです。私は昨日のコミットでその更新を読みました。READMEもその情報で更新されます。
Kaushal Modi

回答:


6

Elpyがわからないので、問題を正しく理解しているかわかりません。私は知ってuse-packageいますが、最近、まったく同じ問題、つまりの削除に苦しんでい:idleます。

基本的に、Elpyの使用方法に応じて、2つの方法があります。あなたは、どちらかの貧乏人の使用することができ:idleて、run-with-idle-timer例えば、

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

または、古き良きものをwith-eval-after-load使用するかpython-mode-hook、Pythonモードがそれぞれロードまたは有効化されるまでElpyを遅延させることができます。

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

elpyがシンプルなモードであれば問題ありません。ただし、実際には、Pythonエクスペリエンスをより統合するために結合された一連のマイナーモードです。したがって、最初のpythonファイルがロードされる前にelpy-enableステップを実行して、すべてのモジュールを構成して準備する必要があります。
stsquad 2015年

@stsquad with-eval-after-loadは、まさにそれを行う必要があります。
lunaryorn 2015年

1
機能:commands elpy-enableさせるために追加する必要があります。:init (with-eval-after-load 'python (elpy-enable)) :commands elpy-enable
azzamsa 2018年

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
見つけられなかったときにこれを見つけてくれてありがとう。私はこれがこの情報を隠すための間違った場所であることをメンテナにフィードバックしました。これは公式README.rstにもありますが、最初に見るべき最も明白な場所、つまりドキュメントのインストールセクションにはありません。これを問題#1606で報告しました。
Adam

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.