Một số người có thể nghĩ rằng đó là đơn giản để sử dụng setq
. Một số người có thể nghĩ rằng nó là lispy hơn. Trong thực tế, nó là ngây thơ trong trường hợp chung.
Đúng là đối với một số tùy chọn người dùng, điều đó không thành vấn đề. Nhưng đối với những người khác, nó có vấn đề, và setq
là cách tiếp cận sai cho những lựa chọn đó. Vì vậy, như một quy tắc chung, setq
là cách tiếp cận sai.
Nếu bạn sử dụng custom-set-variables
hoặc customize-set-variable
thay vì setq
hoặc nếu bạn sử dụng Giao diện người dùng Tùy chỉnh (ví dụ M-x customize-option
), thì bạn chắc chắn rằng mọi mã khởi tạo hoặc cập nhật dự định cần thiết cho giá trị tùy chọn sẽ được tự động kích hoạt và chạy khi cần. Nếu bạn sử dụng setq
, điều này sẽ không được thực hiện.
Bây giờ, nó cũng là trường hợp mà hầu hết các tùy chọn của người dùng, đặc biệt là nhiều trong số họ bằng văn bản cho các thư viện của bên thứ 3, không tận dụng các defcustom
từ khóa :set
và :initialize
, và sử dụng setq
không quan trọng đối với họ. Nhưng rất nhiều tùy chọn Emilla vanilla sử dụng các từ khóa như vậy, và đối với những từ đó, setq
không phải là điều đúng đắn. Vì vậy, nếu bạn muốn sử dụng mã Lisp chứ không phải UI tùy chỉnh để đặt các tùy chọn của mình, thì tốt hơn hết bạn nên sử dụng custom-set-variables
hoặc customize-set-variable
thay vì setq
. Nó không bao giờ đau và đôi khi nó giúp (rất nhiều).
Nhưng những gì tôi khuyên là nên làm cả hai điều này:
Sử dụng Tùy chỉnh giao diện người dùng thay vì viết mã Lisp cho việc này.
Xác định biếncustom-file
, để Tùy chỉnh ghi các tùy chỉnh vào tệp đó chứ không phải vào tệp init của bạn ( ~/.emacs
). IOW, giữ mã khởi tạo viết tay của bạn tách biệt với mã tự động được viết bởi Tùy chỉnh.