Kullanım paketini kullanarak elpy yüklemeyi nasıl erteleyebilirim?


9

Artık tüm kullanım paketi çağrılarımı güncelliyorum :idle, bu artık ertelemenin iyi bir yolu değil. Şu anda yükleme süremdeki en büyük vuruşlardan biri, elpybir sürü ek modül yükleyen. Şu anda çağrım oldukça basit:

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

Ancak hiçbir zaman python modüllerini düzenlemezsem bu oldukça israfa yol açar. Sorun elpy modları bir koleksiyon bu yüzden sadece elpy-enableihtiyaç duyulan mod bağlama formu kullanamazsınız . Peki hangi yaklaşımı kullanmalıyım? Bu sadece piton modu kancasında tetikleme mi?


Kullanım paketinin MELPA sürümünü izlemeyi bıraktım. Görünüşe göre: boşta, yerini alacak hiçbir şey kalmadı. Sadece bir yedek çıkana kadar bekleyeceğim.
abo-abo

@ abo-abo: Nedenini anlayabiliyorum,: boşta biraz hack. Gerçekten talep üzerine düzgün yükleme için "biraz zaman geçti" dışında bir olayla tetiklenmelidir.
15'te stsquad

2
:idle:defer 30sayının, paketin yüklenmesi gereken saniye cinsinden gecikme süresi gibi bir şeyle değiştirilebilir .
Kaushal Modi

@kaushalmodi, zaten çalışıyor mu?
abo-abo

@ abo-abo ben denemedim ama muhtemelen gerekir. Bu güncellemeyi dünkü taahhütte okudum. README de bu bilgilerle güncellenir.
Kaushal Modi

Yanıtlar:


6

Elpy'yi tanımıyorum, bu yüzden probleminizi doğru anladığımdan emin değilim. use-packageYine de biliyorum ve son zamanlarda aynı sorundan, yani kaldırılmasından muzdarip oldum :idle.

Temel olarak, Elpy'yi nasıl kullanmanız gerektiğine bağlı olarak iki çıkış yolu vardır. Ya fakir adamın kullanabilirsiniz :idlebirlikte run-with-idle-timer, örneğin

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

Alternatif olarak, Python Modu yükleninceye veya etkinleştirilene kadar iyi eskiye güvenebilir with-eval-after-loadveya python-mode-hookElpy'yi kullanabilir ve geciktirebilirsiniz:

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

Elpy basit bir mod olsaydı iyi olurdu. Bununla birlikte, python deneyimini daha entegre hale getirmek için bir araya getirilmiş küçük modlar. Bu nedenle, elpy-enable adımının ilk python dosyası yüklenmeden önce çalıştırılması gerekir, böylece tüm modüller yapılandırılır ve hazırdır.
15'te stsquad

@stsquad with-eval-after-load tam olarak bunu yapmalıdır.
lunaryorn

1
:commands elpy-enableÇalışması için eklemeliyim . :init (with-eval-after-load 'python (elpy-enable)) :commands elpy-enable
azzamsa

3

Elpy'nin yazarı bunu bir tavsiye yoluyla yapmanızı önerir, çünkü değişkeni elpy-enabledeğiştirir python-mode-hook, bu yüzden mod kancasının içinde çağırmak çok geç: https://github.com/jorgenschaefer/elpy/wiki/Configuration

basit yaklaşım:

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

kullanarak use-package:

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

1
Bunu yapamadığım için bulduğun için teşekkürler. Destekçiye IMHO'nun bu bilgiyi gizlemek için yanlış yer olduğuna dair geri bildirim verdim . Aynı zamanda resmi README.rst, ancak bakılacak ilk ve en belirgin yerde değil: belgelerin kurulum bölümü . Bunu 1606 numaralı sayımda bildirdim .
Adam Spires

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.