after-init-hook vs eval-after-load / with-eval-after-load


13

Tuy nhiên, tôi đã tìm thấy cách thức hoạt động của Gói trong Emacs 24 khá hữu ích , tuy nhiên, tôi muốn có câu trả lời dứt khoát từ người dùng có kinh nghiệm hoặc nhà phát triển cốt lõi trong số này thực sự được ưu tiên trong trường hợp điển hình vào ngày 24.4.

Afaik, (add-hook 'after-init-hook ...)là cách tiếp cận mạnh mẽ để nói về việc thiết lập các tùy chỉnh cho các gói. Tuy nhiên, eval-after-loadvà đường tổng with-eval-after-loadhợp hơn của nó có vẻ phù hợp hơn cho cấu hình hạt mịn hơn và năng động hơn, hoạt động tốt với việc tải các phần mở rộng dần dần, riêng biệt và lười biếng.

Là hiểu của tôi đúng? Những gì khác tôi nên ghi nhớ?

Câu trả lời:


11

Afaik, (add-hook 'after-init-hook ...)là cách tiếp cận mạnh mẽ để nói về việc thiết lập các tùy chỉnh cho các gói.

Không. Nếu bạn muốn định cấu hình các gói trong tệp init của mình, cách tiếp cận thông thường là gọi (package-initialize)ở đầu tệp, sau đó thực hiện các cấu hình. after-init-hooklà phức tạp không cần thiết cho mục đích này.

Tuy nhiên, eval-after-loadvà đường tổng with-eval-after-loadhợp hơn của nó có vẻ phù hợp hơn cho cấu hình hạt mịn hơn và năng động hơn, hoạt động tốt với việc tải các phần mở rộng dần dần, riêng biệt và lười biếng.

(with-)eval-after-loadđược sử dụng cho những việc bạn muốn làm sau khi gói được tải. package-initializekhông tải các gói, nó chỉ có các gói chuẩn bị cho chúng (tải tự động tải).

Nếu bạn sử dụng eval-after-loadxung quanh mỗi bộ cấu hình, bạn sẽ không cần gọi (package-initialize)ở trên cùng. Nhưng những gì mọi người thường làm là gọi (package-initialize), để hầu hết các cấu hình có thể được ghi thẳng vào tệp init, và sau đó chỉ eval-after-loadmã rất dài hoặc phụ thuộc vào gói được tải.


nhưng nó vẫn ổn để đặt mọi thứ bên dưới eval-after-loadcho bất kỳ gói nào, phải không và không sử dụng (package-initialize)gì cả?
Erik Kaplun

@Erik ALLik Vâng. Nếu bạn sử dụng eval-after-load xung quanh mỗi bộ cấu hình, bạn sẽ không cần phải gọi (khởi tạo gói) ở trên cùng.
Malabarba
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.