Bedeutet das, dass die C-Programmierung unter prog-modeund ausgeführt wird c-mode?
Nein, denn wie Sie später zitieren:
Hauptmodi schließen sich gegenseitig aus. Jeder Puffer hat zu jeder Zeit nur einen Hauptmodus.
Ihr Puffer kann sich also nur in dem einen oder anderen befinden.
Ist prog-modeein universeller Modus für alle Programme?
Nein, es ist ein universeller übergeordneter Modus für alle Programmiermodi.
Dies impliziert zusätzlich, dass dies prog-modeein Hauptmodus ist c-mode.
Ja, prog-modeist ein normaler Hauptmodus abgeleitet von fundamental-mode. Ähnlich c-modeist ein normaler Hauptmodus abgeleitet von prog-mode. Der Unterschied besteht darin, dass prog-modeallein ziemlich kahl ist und nicht direkt aktiviert werden soll.
Was macht prog-modeman hier, ist es ein Nebenmodus, der aber im Hauptmodus weit verbreitet ist?
Nein, es ist ein normaler Hauptmodus. Es wird als Konvention für Hauptmodusautoren bereitgestellt, um ihre Modi abzuleiten, und als Benutzerfreundlichkeit, um alle ihre Programmiermodi einfacher anpassen zu können.
Wenn ein Benutzer beispielsweise show-trailing-whitespacein allen Programmiermodi aktivieren möchte , kann er zunächst einen Hook wie den folgenden definieren:
(defun my-show-trailing-space ()
"Enable `show-trailing-whitespace' in the current buffer."
(setq show-trailing-whitespace t))
Anstatt diese Funktion dem Modus-Hook jedes von ihnen verwendeten Programmiermodus hinzuzufügen, wie folgt:
(mapc (lambda (hook)
(add-hook hook #'my-show-trailing-space))
'(c-mode-common-hook
emacs-lisp-mode-hook
perl-mode-hook
prolog-mode-hook
...))
Sie können es stattdessen einfach zum Modus-Hook des übergeordneten Modus hinzufügen, dh prog-mode-hook:
(add-hook 'prog-mode-hook #'my-show-trailing-space)
Als solches prog-modebietet gemeinsame Einstellungen für alle Programmiermodi daraus abgeleitet.