আমি কীভাবে ব্যবহার-প্যাকেজ ব্যবহার করে এলডি লোডিং স্থগিত করতে পারি?


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-enable। সুতরাং আমি কোন পদ্ধতির ব্যবহার করা উচিত। এটা কি পাইথন-মোড হুকের ট্রিগার করার ঘটনা?


আমি স্রেফ ব্যবহার-প্যাকেজের মেলপা সংস্করণটি ট্র্যাক করা বন্ধ করে দিয়েছি। দেখে মনে হচ্ছে: প্রতিস্থাপন করার মতো কিছুই না করে নিষ্কলুষ সরানো হয়েছে। আমি প্রতিস্থাপন পপ আপ হওয়া পর্যন্ত অপেক্ষা করব।
Abo-abo 9

@ আবো-আবো: আমি বুঝতে পারি কেন,: নিষ্ক্রিয়তা কিছুটা হ্যাক। সত্যই অন-চাহিদা লোড করার জন্য এটি "কিছু সময় কেটে গেছে" ব্যতীত অন্য কোনও ইভেন্টের দ্বারা ট্রিগার করা উচিত।
stsquad

2
:idle:defer 30নম্বরটি সেকেন্ডে দেরি হওয়ার পরে প্যাকেজটি লোড করা উচিত এমন কোনও জায়গায় প্রতিস্থাপন করা যেতে পারে ।
দক্ষ মোদী

@ কৌশালমোদি, ইতিমধ্যে কি কাজ করে?
অ্যাবো-আবো

@ আবো-আবো আমি চেষ্টা করি নি তবে সম্ভবত এটি করা উচিত। গতকালের প্রতিশ্রুতিতে আমি সেই আপডেটটি পড়েছি। README এছাড়াও তথ্যটি আপডেট করা হয়।
দক্ষ মোদী

উত্তর:


6

আমি এলপিকে চিনি না, তাই আমি আপনার সমস্যাটি সঠিকভাবে বুঝতে পারছি কিনা তা নিশ্চিত নই। আমি জানি use-package, যদিও, এবং সম্প্রতি খুব একই ইস্যুতে ভুগছি, যথা অপসারণ :idle

মূলত, এলপিকে কীভাবে ব্যবহার করা উচিত তার উপর নির্ভর করে দুটি উপায় রয়েছে। আপনি হয় দরিদ্র ব্যক্তির , উদাহরণস্বরূপ :idle, ব্যবহার করতে পারেনrun-with-idle-timer

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

বিকল্পভাবে, আপনি যথাযথ পুরাতন উপর নির্ভর করতে পারেন বা যথাক্রমে পাইথন মোডটি লোড বা সক্ষম হওয়ার পরে পর্যন্ত এলপি with-eval-after-loadব্যবহার করতে python-mode-hookএবং বিলম্ব করতে পারেন :

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

এলপি যদি সাধারণ মোড হয় তবে তা ঠিক ছিল। তবে সত্যই এটি অজগর অভিজ্ঞতা আরও সংহত করতে একসাথে সেলাই করা ছোটখাট মোডের একগুচ্ছ। যেমন অ্যালপি-সক্ষম পদক্ষেপটি প্রথম পাইথন ফাইল লোড হওয়ার আগে চালাতে হয় তাই সমস্ত মডিউল কনফিগার করা এবং প্রস্তুত।
stsquad

-ভাল-আফটার-লোড সহ @ প্লাস্টিকের ঠিক এটি করা উচিত।
লুনারিওর

1
:commands elpy-enableএটি কাজ করতে আমার যুক্ত করা দরকার । :init (with-eval-after-load 'python (elpy-enable)) :commands elpy-enable
আজমস

3

এলপির লেখক একটি পরামর্শের মাধ্যমে এটি করার পরামর্শ দিয়েছেন, কারণ elpy-enableপরিবর্তনশীল পরিবর্তন করে python-mode-hook, তাই এটি মোড- হকের অভ্যন্তরে কল করা খুব দেরী হয়: https://github.com/jorgenschaefer/elpy/wiki/Configration

সহজ পদ্ধতির:

(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 ইস্যুতে এটি রিপোর্ট করেছি ।
অ্যাডাম স্পায়ার্স

2

আমি মনে করি এটি দিয়ে সম্ভব: পরে

(use-package python
  :ensure t
  :defer t
  :mode ("\\.py\\'" . python-mode))

(use-package elpy
  :ensure t
  :after python
  :config (elpy-enable))

1
আমার পক্ষে কাজ করেনি। আপনি :deferযদি ইতিমধ্যে ব্যবহার করেন তবে আপনার প্রয়োজনও নেই :modegithub.com/jwiegley/use-package#notes-about-lazy-loading
azzamsa
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.