Deaktivieren des Elektroeinrückungsmodus nur für einen Modus (Latexmodus)

11

Mir gefällt nicht, wie der elektrische Einrückungsmodus im Latexmodus funktioniert. Überall sonst (zumindest überall, wo ich es benutze) ist es großartig.

Wie kann ich den elektrischen Einrückungsmodus nur für den Latexmodus dauerhaft deaktivieren, aber überall anders aufbewahren?

Ich vermute, es ist ein einzeiliger Lisp-Hack in meiner Konfigurationsdatei oder so etwas, aber ich bin schrecklich in Lisp, also kann ich es nicht herausfinden.

Toby Muhlhofer
quelle

Antworten:

8

Der Befehl, den Sie benötigen, ist electric-indent-local-mode. Sie können dies verwenden, um den elektrischen Einrückungsmodus in einem beliebigen Puffer zu deaktivieren, indem Sie ihn manuell aufrufen : M-x electric-indent-local-mode. Dies ist ein Umschalter. Wenn Sie ihn also erneut im selben Puffer aufrufen, wird er wieder aktiviert.

Um dies automatisch aus Ihrer Init-Datei heraus zu tun, müssen Sie einen Hook einrichten. Definieren Sie zunächst den Haken:

(defun remove-electric-indent-mode ()
  (electric-indent-local-mode -1))

Fügen Sie es dann den entsprechenden Modus-Hooks hinzu. Verwenden Sie Folgendes, um den elektrischen Einrückungsmodus für den von AUCTex bereitgestellten LaTeX-Modus zu deaktivieren:

(add-hook 'LaTeX-mode-hook 'remove-electric-indent-mode)

Verwenden Sie für den Standardtextmodus:

(add-hook 'tex-mode-hook 'remove-electric-indent-mode)

Das gleiche Muster gilt für jeden anderen Modus, in dem Sie die elektrische Einrückung ausschalten möchten.

Weitere Informationen zu Modus-Hooks finden Sie im integrierten Emacs-Handbuchknoten [(emacs) Hooks][1]. Sie können von Emacs dorthin gelangen über C-h i r m Hooks <enter>: C-hHilfe, iInformationen, rLesen des Handbuchs, mMenüpunkt und HooksAuswählen des Menüpunkts. (oder Sie können dem Link oben folgen, um die HTML-Version zu sehen).

Tyler
quelle
Sie müssen keine zusätzliche Funktion definieren: (add-hook 'LaTeX-mode-hook (lambda () (electric-indent-local-mode -1)))genügt.
Emil Jeřábek
Richtig, aber wenn Sie eine Funktion definieren, können Sie sie in mehreren verschiedenen Hooks wiederverwenden, ohne den Code zu duplizieren. Es ist auch einfacher, eine definierte Funktion zu entfernen als eine anonyme. Das kann beim Debuggen hilfreich sein
Tyler