Sie können die Variable ispell-parser
auf den Wert 'tex
setzen, damit Flyspell (la) Tex-Sequenzen ignoriert. Dazu können Sie entweder manuell in jedem Puffer wie so:
M-: (setq 'ispell-parser 'tex)
oder Sie schreiben eine kleine Funktion, die das für Sie tun. Legen Sie die folgenden in Ihrer .emacs-Datei:
(defun flyspell-ignore-tex()
(interactive)
(set (make-variable-buffer-local 'ispell-parser) 'tex))
Dann können Sie noch rufen Sie es manuell,
M-x flyspell-ignore-tex
oder Sie könnten einen Haken hinzufügen, die diese Funktion ruft automatisch, wenn Sie eine Datei von einem bearbeiten bestimmter Typ. Sie würden Letzteres tun, indem Sie die neu definierte Funktion zu Ihrem auto-mode-alist
hinzufügen. Sagen Sie Ihre Dateinamen der Regel mit „.rst“ beenden, dann fügen Sie diese Zeile in Ihre .emacs-Datei:
(add-to-list 'auto-mode-alist '("\\.rst$" . flyspell-ignore-tex))
Was den zweiten Teil Ihrer Frage: macht flyspell-Modus ignorieren größere Bereiche, wie zB reST Kommentare, ist nicht leicht zu erreichen. Es wird deutlich, wenn man über die Funktionsweise von flyspell nachdenkt: Text wird Wort für Wort geprüft. Dafür sieht flyspell-word
nur ein Wort nach dem anderen, das es an einen im Hintergrund laufenden ispell-Prozess sendet. Der ispell-Prozess führt die Wörterbuchsuche durch und gibt zurück, ob das aktuelle Wort korrekt ist oder nicht. Wenn flyspell-word
jedes Mal überprüfen musste, ob das aktuelle Wort Teil eines Kommentars oder einer anderen Region ist, die nicht überprüft werden sollte, wäre das ziemlich langsam, weil das ziemlich viel Suchen im Puffer beinhalten würde.
Jetzt könnte man das natürlich ein bisschen schlauer angehen und zuerst die Nichtkommentar-Regionen usw. finden und dann die Wort-für-Wort-Prüfung nur in den Teilen außerhalb dieser Regionen durchführen - aber leider So ist Flyspell nicht implementiert.
Wenn Sie jedoch auf den "Fly" -Teil verzichten können, verfügt ispell-mode über einen Mechanismus, um festzulegen, welche Bereiche eines Puffers übersprungen werden können. Dies geschieht über die Variable ispell-skip-region-alist
. Aber obwohl der Flyspell-Modus im Ispell-Modus arbeitet, wird diese Variable aus den oben genannten Gründen nicht im Flyspell-Modus verwendet.
Thomas, vielen Dank! Ich habe in der Vergangenheit den Ispell-Modus benutzt, aber Flyspell passt mir im Moment besser. Nach dem Lesen des Dokuments 'ispell-skip-region-alist' würde ich jedoch eine Funktion programmieren müssen, um das Ende des Kommentars zu erkennen. Ich kenne Emacs Lisp noch nicht sehr gut. Wie dem auch sei, der 'ispell-parser' Weg ist immer noch hilfreich. Vielleicht könnte ich überprüfen, wie es verwendet wird und meinen eigenen Ispell-Parser Tweek erstellen, wenn ich kann. – manu
Manu, Sie müssen wahrscheinlich keine Lisp-Funktion programmieren, um den Anfang und das Ende eines Kommentars zu erkennen. Normalerweise sollte ein regulärer Ausdruck ausreichen, einer, der dem Anfang entspricht und einer, der dem Ende entspricht. Sie setzen beide in Klammern und fügen sie dem 'ispell-skip-region-alist' hinzu (ich habe es gestern ausprobiert, es ist eigentlich gar nicht so schwer) und es besteht eine gute Chance, dass der 'right-mode' bereits die Regexps enthält Ich suche irgendwo. – Thomas
In reStructuredText wird das Ende des Codeabschnitts erkannt, wenn die Einrückungsebene verringert wird. Regexp würde also nicht helfen. Mit freundlichen Grüßen, Manu. – manu