2011-09-04 23 views
5

Tôi đã tạo macro sau trong elisp. Nó sẽ đặt giá trị "val" thành biến "var" chỉ khi biến không được gắn kết. Điều này tồn tại để các biến được đặt trong tệp .emacs của bạn không bị chà đạp ở nơi khác.Có một hình thức Emacs Lisp tích hợp để chỉ thiết lập một biến nếu nó không bị ràng buộc?

(defmacro set-ifunbound (var val) 
    `(if (not (boundp ',var)) 
     (setq ,var ,val) 
    (identity ,var))) 

Chắc chắn, đây phải là một mẫu chung. Có cách nào được xây dựng để làm điều tương tự không?

Trả lời

5

defvar thực hiện chính xác điều đó. Nó chỉ gán một giá trị cho một biến nếu nó không được gắn kết.

+1

Cảm ơn. Đoán tôi nên đọc tài liệu. :) http://www.gnu.org/s/emacs/manual/html_node/elisp/Defining-Variables.html –

Các vấn đề liên quan