5 Stimmen

Warum funktioniert mein regulärer Emacs-Ausdruck mit ^ für den Anfang einer Zeile nicht?

Ich versuche, Folgendes einzurichten .emacs so dass jede Datei, die mit den Buchstaben makefile setzt es in den makefile-Modus. z.B. makefile-something sollte sich im Makefile-Modus befinden.

Das klappt nicht:

(setq auto-mode-alist (cons '("^makefile" . makefile-mode) auto-mode-alist))

Aber das hier schon:

(setq auto-mode-alist (cons '("makefile" . makefile-mode) auto-mode-alist))

Kann jemand erklären, warum?

7voto

Das liegt daran, dass dem Dateinamen eine Pfadkomponente vorangestellt ist, versuchen Sie es:

"/makefile[^/]*$"

siehe http://www.gnu.org/s/emacs/manual/html_node/elisp/Auto-Major-Mode.html (Ende der Seite)

EDI: Regexp gemäß Sean-Kommentar korrigiert

1voto

zwol Punkte 128461

Dies ist also nur eine Vermutung, aber ich stelle fest, dass andere Regexps in auto-mode-alist die mit dem Anfang des Dateinamens übereinstimmen wollen, verwenden nicht ^ verwenden sie / . Zum Beispiel:

("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)

(aus Emacs 23.2.1) Ausgehend davon denke ich, dass die Regexp vielleicht auf die vollständiger Pfadname der Datei, nicht den Basisnamen. Versuchen Sie also

(setq auto-mode-alist (cons '("/makefile" . makefile-mode) auto-mode-alist))

stattdessen.

0voto

Charlie Martin Punkte 106684

Der Einfachheit halber sollten Sie

 (add-to-list 'auto-mode-alist ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X