2010-08-16 3 views
25

Je remarque que les entrées auto-mode-ALIST courant se terminent tous par une seule citation, par exempleRéglage en mode auto-alist dans emacs

("\\.java\\'" . java-mode) 

Quel est le but de la citation unique. Je me serais attendu à voir

("\\.java$" . java-mode) 

La raison pour laquelle je demande est que je suis en train d'obtenir des fichiers avec des noms correspondant à regexp

^twiki\.corp.* 

ouvrir en mode org. Je l'ai essayé ce qui suit sans succès:

Les travaux suivants:

(add-to-list 'auto-mode-alist '("twiki\\.corp" . org-mode)) 

mais il est pas tout à fait ce que je veux puisque les noms de fichiers avec twiki.corp noyés dans la masse seront ouvertes en mode org .

Répondre

27

\\ » correspond à la chaîne vide à la fin de la chaîne/tampon:

http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Backslash.html el

$ correspondra à la fin de la ligne: Si vous avez des sauts de ligne dans votre nom de fichier (très rare) $ correspond à la nouvelle ligne et non à la fin de la chaîne.

Le regex est en correspondance avec le nom du fichier tout , vous devez donc inclure "/" pour correspondre au répertoire seperator:

(add-to-list 'auto-mode-alist '("/twiki\\.corp" . org-mode)) 
+0

Thx! Quel est le but de faire correspondre une chaîne vide à la fin de la chaîne dans ce cas? Est-ce pour s'assurer qu'il n'y a pas d'espace après ".java"? Comment est-ce mieux que d'utiliser $? – chris

+3

C'est pour s'assurer que vous n'avez rien après le '.java'. Sinon, quelque chose comme 'somefile.java.not.really' correspondrait aussi. C'est mieux que '$' si vous avez une nouvelle ligne dans votre nom de fichier qui est inhabituel mais possible. Par exemple un nom de fichier comme 'bob.java \ nsomething else' pourrait être le vecteur d'une attaque malveillante (bien que je n'aie aucune idée de ce que serait l'attaque). –

+5

J'utiliserais la belle forme 'rx', ce qui vous évite de devoir vous souvenir de cette horrible syntaxe regexp. (Vous devez vous souvenir de la syntaxe propre de rx, mais il est beaucoup plus lisible.) '(rx" /twiki.corp "eos)' – offby1