Tôi có câu hỏi về Emacs Lisp. Sự khác nhau giữa setq và setq-default là gì? Tôi rất bối rối về nó.Sự khác biệt giữa setq và setq-default trong Emacs Lisp
Tutorials nói setq có hiệu lực trong đệm địa phương khi setq mặc định ảnh hưởng đến tất cả các bộ đệm.
Ví dụ, nếu tôi đã viết (setq một var a-VAR-value) trong init.el, tôi thấy sau khi bắt đầu Emacs và mở một bộ đệm mới, một var cũng là có và giá trị của nó là a-vars-value. Tôi nghĩ nó không phải là ở đó. Có vẻ như không có sự khác biệt giữa setq và setq-default.
Có vấn đề gì với hiểu biết của tôi không?
Cảm ơn bạn rất nhiều.
Ví dụ:
1) Tôi đã viết (setq chào 123) trong init.el tập tin, và tôi chạy emacs abuffer trong vỏ, sau đó tôi đầu vào "hello Cx Ce" , nó hiển thị "123". Điều tương tự cũng xảy ra khi tôi chạy điều này trong tất cả các bộ đệm mới.
2) Tôi đã viết (setq tab-width 4) trong tệp init.el. Khi tôi chạy chiều rộng tab C-x C-e, nó hiển thị "8" (Chế độ hiện tại là 'Văn bản'). Tuy nhiên, khi tôi sử dụng (chiều rộng tab mặc định là 4), nó hiển thị "4". Tôi không thể giải thích hiện tượng này.
khi tôi (đặt độ rộng tab 4) và đánh giá nó, nó luôn luôn là 8 trong mỗi bộ đệm. Tôi không biết tại sao. Dường như nó không có hiệu lực. Nhưng khi tôi sử dụng (bộ-tab mặc định chiều rộng 4), nó có hiệu lực trong mỗi bộ đệm.Tôi cũng không biết tại sao: ( – ruanhao
'(setq tab-width 4)' có hiệu lực trong bộ đệm mà bạn đã đánh giá biểu thức, nếu bạn đánh giá nó trong bộ đệm '* scratch *' sau đó kiểm tra giá trị của nó trong bộ đệm đó – tripleee
'tab-width' là một biến vùng đệm, vì vậy khi bạn' (setq tab-width 4) ', nó chỉ được đặt thành 4 trong bộ đệm hiện tại. 8. Khi bạn '(setq-default tab-width 4)', bạn đang thay đổi mặc định toàn cục của 'tab-width' thành 4, vì vậy bây giờ mọi bộ đệm không tự định nghĩa' tab-width' có mặc định mới – dfan