Có nghĩa là lập trình C đang chạy theo prog-mode
và c-mode
?
Không, bởi vì, như bạn trích dẫn sau:
Các chế độ chính là loại trừ lẫn nhau; mỗi bộ đệm có một và chỉ một chế độ chính bất cứ lúc nào.
Vì vậy, bộ đệm của bạn chỉ có thể ở một hoặc khác.
Là prog-mode
một chế độ phổ quát cho tất cả các chương trình?
Không, nó là chế độ cha phổ quát cho tất cả các chế độ lập trình.
Nó cũng ngụ ý rằng đó prog-mode
là một chế độ chính như c-mode
.
Có, prog-mode
là một chế độ chính bình thường có nguồn gốc từ fundamental-mode
. Tương tự c-mode
là một chế độ chính bình thường có nguồn gốc từ prog-mode
. Sự khác biệt là prog-mode
một mình khá trống trải và không có ý định kích hoạt trực tiếp.
Điều gì prog-mode
làm ở đây, nó là một chế độ nhỏ nhưng được nêu rất nhiều trong phần chế độ chính?
Không, nó là một chế độ chính bình thường. Nó được cung cấp như một quy ước cho các tác giả chế độ chính để lấy ra các chế độ của họ và để thuận tiện cho người dùng dễ dàng tùy chỉnh tất cả các chế độ lập trình của họ.
Ví dụ: nếu người dùng muốn kích hoạt show-trailing-whitespace
trong tất cả các chế độ lập trình của họ, trước tiên họ có thể xác định một hook như sau:
(defun my-show-trailing-space ()
"Enable `show-trailing-whitespace' in the current buffer."
(setq show-trailing-whitespace t))
Thay vì thêm chức năng này vào móc chế độ của mọi chế độ lập trình họ sử dụng, như vậy:
(mapc (lambda (hook)
(add-hook hook #'my-show-trailing-space))
'(c-mode-common-hook
emacs-lisp-mode-hook
perl-mode-hook
prolog-mode-hook
...))
Thay vào đó, họ có thể chỉ cần thêm nó vào hook chế độ của chế độ cha, nghĩa là prog-mode-hook
:
(add-hook 'prog-mode-hook #'my-show-trailing-space)
Như vậy, prog-mode
cung cấp các cài đặt chung cho tất cả các chế độ lập trình có nguồn gốc từ nó.