เมื่อใดที่ฉันควรใช้ with-eval-after-load ในไฟล์กำหนดค่าของฉัน


15

ฉันไปที่ไฟล์กำหนดค่าของฉันและต้องการล้างข้อมูล

ความเข้าใจของฉันwith-eval-after-loadคือว่าร่างกายของมันจะได้รับการประเมินทันทีหลังจากโหลดแพ็คเกจที่เกี่ยวข้อง with-eval-after-loadในขณะที่การทำความสะอาดไฟล์การกำหนดค่าของฉันและแยกพวกเขามากขึ้นผมอยากจะใส่ทุกแพคเกจค่ากับ ทุกอย่างเป็นไปตามที่คาดไว้จนกว่าฉันจะปิดล้อมการกำหนดค่าสำหรับและhelmhelm-projectile

นี่คือสิ่งที่ฉันมีอยู่ในใจ ( lisp / init-helm.el ):

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

หลังจากรีสตาร์ท Emacs ฉันได้รับปัญหาขนาดหน้าต่างนี้:

emacs หน้าต่างขนาดปัญหา

นี่คือวิธีปรับขนาดหน้าต่างของฉัน:

(set-frame-parameter nil 'fullscreen 'fullboth)

ฉันเดาว่าฉันใช้ผิดwith-eval-after-loadวิธีหนึ่งจะทำให้การกำหนดค่า Emacs ของเขาถูกสุขลักษณะและทำให้แน่ใจได้ว่าไม่มีอะไรผิดพลาดไม่ว่าจะติดตั้งแพ็คเกจใด


นี่คือสิ่งที่แปลกประหลาดที่สุด (อาจเป็นข้อผิดพลาดหรือไม่?)
PythonNut

คุณมีความคิดว่าสิ่งนี้เกี่ยวข้องกับอะไร? ฉันกำลังใช้พอร์ต OS X ของ Railwaycat และฉันไม่ต้องการเพิ่มปัญหาที่ไม่ได้เป็นของ :)
Mathieu Marques

8
ฉันพยายามใช้with-eval-after-loadห่อการปรับแต่งที่เกี่ยวข้องกับแพ็คเกจทั้งหมดครั้งเดียว จากนั้นฉันเห็นแสงและเริ่มใช้use-packageแทน
itsjeyd

@itsjeyd มันดูมีประโยชน์และสะดวกมากแน่นอน! ฉันพบปัญหา แต่ฉันแสดงความคิดเห็น(package-initialize)และแทนที่ด้วย(require 'use-package)แต่ฉันจะได้รับข้อผิดพลาดของไฟล์: ไม่สามารถเปิดไฟล์โหลดไม่มีไฟล์หรือไดเรกทอรีดังกล่าวใช้แพ็คเกจเมื่อรีสตาร์ท Emacs และเมื่อครั้งที่ Emacs เริ่มฉันสามารถพิสูจน์ได้(require 'use-package)โดยไม่มีปัญหา ในที่สุดฉันก็ลองwith-eval-after-loadผิดพลาดเหมือนเดิม readme ไม่ชัดเจนเกี่ยวกับวิธีการติดตั้ง use-packageเมื่อใช้แพคเกจจาก package.el
Mathieu Marques

1
แสดงให้เรา.emacsเห็นว่าเป็นเวอร์ชั่นที่ถูกตัดลงซึ่งแสดงให้เห็นถึงปัญหาที่มีเพียงไม่กี่บรรทัดและแพ็คเกจภายนอกน้อยที่สุดเท่าที่จะทำได้ นี้น่าจะมีการทำกับระยะเวลาของการติดตั้งกรอบ VS โหลดแพคเกจในช่วงเริ่มต้น แต่หากไม่เห็นรหัสของคุณเราก็สามารถทำอะไรได้มากมาย โปรดบอกเราด้วยว่าคุณใช้ Emacs รุ่นใด
Gilles 'หยุดชั่วร้าย'

คำตอบ:


2

ฉันใช้with-eval-after-loadบ่อยๆเป็นส่วนใหญ่สำหรับการเพิ่มหรือลบองค์ประกอบไปยังหรือออกจากรายการหลังจากประเมินค่าเริ่มต้นแล้ว ด้วยวิธีนี้ฉันไม่จำเป็นต้องติดตามการเปลี่ยนแปลงในค่าเริ่มต้น

สำหรับปัญหาเกี่ยวกับการhelmเริ่มต้นของคุณเอกสารแนะนำว่า(require 'helm-config)มีอยู่ในinit.elการอ้างอิงของคุณหรือ

ฉันพบว่ามันง่ายกว่าที่จะต้องใช้helm-configในระหว่างการเริ่มต้นแทนที่จะพึ่งพาautoloadโดยเฉพาะอย่างยิ่งเนื่องจากฉันจะโหลดมันเกือบจะในทันที


ฉันเปลี่ยนไปตั้งแต่นั้นมาเพื่อการใช้งานuse-packageและแม้กระทั่งในขณะที่helm-configฉันยังต้องได้รับปัญหาเดียวกัน นี่คือการตั้งค่าการกำหนดค่าการปรับปรุงของฉัน: bitbucket.org/angrybacon/dotemacs/src
Mathieu Marques

1

ปรากฎว่าไม่มีอะไรเกี่ยวข้องกับการhelmเริ่มต้น (หรือน้อย)

ในการแสวงหานิรันดร์ของฉันเพื่อเพิ่มประสิทธิภาพเวลาเริ่มต้นของ Emacs ฉันได้ย้ายสิ่งต่าง ๆ ที่เกี่ยวข้องกับอินเทอร์เฟซทั้งหมดที่จุดเริ่มต้นของการกำหนดค่าของฉัน นั่นรวมถึงหลอกเต็มหน้าจอที่ฉันใช้

การวางสายที่เกี่ยวข้องก่อนที่เสียงกระเพื่อมหนักจะถูกแก้ไขปัญหาของฉัน

นี่คือการตั้งค่าของฉันสำหรับการอ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.