Bedeutet das, dass die C-Programmierung unter prog-mode
und 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-mode
ein universeller Modus für alle Programme?
Nein, es ist ein universeller übergeordneter Modus für alle Programmiermodi.
Dies impliziert zusätzlich, dass dies prog-mode
ein Hauptmodus ist c-mode
.
Ja, prog-mode
ist ein normaler Hauptmodus abgeleitet von fundamental-mode
. Ähnlich c-mode
ist ein normaler Hauptmodus abgeleitet von prog-mode
. Der Unterschied besteht darin, dass prog-mode
allein ziemlich kahl ist und nicht direkt aktiviert werden soll.
Was macht prog-mode
man 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-whitespace
in 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-mode
bietet gemeinsame Einstellungen für alle Programmiermodi daraus abgeleitet.