Tôi đã thấy progn
được sử dụng khá nhiều khi tôi duyệt các tệp cấu hình của người dùng Emacs có kinh nghiệm. Tôi tìm thấy lời giải thích tốt đẹp nàyprogn
, nhưng điều tôi thực sự tò mò là, lợi ích của việc sử dụng chức năng này là gì? Lấy ví dụ đoạn trích này (lấy từ cấu hình của Sacha Chua ):
(use-package undo-tree
:defer t
:ensure t
:diminish undo-tree-mode
:config
(progn
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t)))
Có sự khác biệt lớn giữa cấu hình trên và điều này?
(use-package undo-tree
:defer t
:ensure t
:diminish undo-tree-mode
:config
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t))
Tôi cảm thấy như ví dụ đầu tiên bằng cách nào đó sạch hơn, mặc dù nó có nhiều cú pháp hơn và trực giác của tôi là có thể có một số loại tăng hiệu suất từ việc sử dụng progn
, nhưng tôi không chắc chắn. Cảm ơn bạn cho bất kỳ hiểu biết!
progn
cần thiết: emacs.stackexchange.com/questions/39172/ Kẻ
use-package
sẽ baoprogn
quanh một biểu mẫu: config của bạn nếu nó bị thiếu. Hãy thử: bạn có thể đặt điểm ở cuối a(use-package ...)
và gọiM-x pp-macroexpand-last-sexp
để xem macro được mở rộng như thế nào. Bạn sẽ thấy rằng nó giống hệt nhau cho hai ví dụ này.