Là một chương trình Lisp ở cả chế độ prog và chế độ lisp?


7

Khi đọc (emacs) Program Modes:

Vào chế độ ngôn ngữ lập trình sẽ chạy các chức năng Lisp tùy chỉnh được chỉ định trong biến hook prog-mode-hook, theo sau là các chức năng được chỉ định trong hook chế độ riêng của chế độ (xem Chế độ chính). Chẳng hạn, vào chế độ C sẽ chạy các hook prog-mode-hookc-mode-hook. Xem Móc, để biết thông tin về móc.

Có nghĩa là lập trình C đang chạy theo prog-modec-mode?

prog-modemột chế độ phổ quát cho tất cả các chương trình?

Nó cũng ngụ ý rằng đó prog-modelà một chế độ chính như c-mode.

Tuy nhiên:

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.

(từ (emacs) Modes)

Điều gì prog-modelàm ở đây, nó là một chế độ nhỏ nhưng được nêu rất nhiều trong phần chế độ chính?

Câu trả lời:


10

Có nghĩa là lập trình C đang chạy theo prog-modec-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.

prog-modemộ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-modelà một chế độ chính như c-mode.

Có, prog-modelà một chế độ chính bình thường có nguồn gốc từ fundamental-mode. Tương tự c-modelà một chế độ chính bình thường có nguồn gốc từ prog-mode. Sự khác biệt là prog-modemộ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-modelà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-whitespacetrong 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-modecung 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ó.


giải thích ấn tượng, ty.
Giải tích

2
Bạn có thể tìm thêm chi tiết về các chế độ dẫn xuất và móc chế độ trong câu trả lời này: stackoverflow.com/a/19295380/324105
phils
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.