affectation dynamique d'un mode dans auto-mode-alist

Le
hjuvi
Bonjour,

J'ai besoin de modifier dynamiquement auto-mode-alist, pour insérer
une règle sur les fichiers .ref et .new. Je veux que le mode appliqué
pour ces fichiers soit le mode du buffer courant.
Le code ci-dessous ne donne pas le résultat attendu :

(setq auto-mode-alist (append '(("\.ref\'" . major-mode)
("\.new\'" . major-
mode)) auto-mode-alist)))

Le problème, c'est que dans auto-mode-alist, on retrouve major-mode
tel quel, il n'a pas été "traduit" en c-mode (par exemple).

(("\.ref\'" . major-mode)
("\.new\'" . major-mode)
[]

comment récupérer la valeur de major-mode (et non pas "major-mode") ?


Pour information, j'avais d'abord une méthode plus simple : changer
default-major-mode juste avant de charger le fichier .ref ou .new, et
le rétablir juste après. Malheureusement, sur une version d'emacs,
dans un environnement précis (que je n'arrive pas à identifier), ça
génère une erreur quand le mode en question est c++-mode (Symbol's
function definition is void: cpp-macro). J'ai donc été obligé de me
rabattre sur la méthode auto-mode-alist.
Si quelqu'un a une explication pour le problème avec default-major-
mode, ça m'intéresse aussi.

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #21769721
hjuvi
J'ai besoin de modifier dynamiquement auto-mode-alist, pour insérer
une règle sur les fichiers .ref et .new.



J'imagine que t'es sûr de ton coup.

Je veux que le mode appliqué pour ces fichiers soit le mode du buffer
courant. Le code ci-dessous ne donne pas le résultat attendu :

(setq auto-mode-alist (append '(("\.ref\'" . major-mode)
("\.new\'" . major-
mode)) auto-mode-alist)))



La quote porte sur toute la liste. Regarde "backquote" dans le manuel
elisp.

-- Alain.
hjuvi
Le #21769701
La quote porte sur toute la liste. Regarde "backquote" dans le manuel
elisp.



Effectivement, j'ai toujours eu un peu de mal avec les listes, et je
ne connaissais pas le sens du quote, dont je me servais souvent pour
faire des listes.
Je m'en suis donc sorti avec :

(push (cons "\.ref\'" major-mode) auto-mode-alist)
(push (cons "\.new\'" major-mode) auto-mode-alist)

Merci beaucoup !
Vincent Belaïche
Le #21769661
(setq auto-mode-alist (append `(("\.ref\'" . ,major-mode)
("\.new\'" . ,major-mode)) auto-mode-alist))

Alain Ketterlin a écrit :
hjuvi
J'ai besoin de modifier dynamiquement auto-mode-alist, pour insérer
une règle sur les fichiers .ref et .new.



J'imagine que t'es sûr de ton coup.

Je veux que le mode appliqué pour ces fichiers soit le mode du buffer
courant. Le code ci-dessous ne donne pas le résultat attendu :

(setq auto-mode-alist (append '(("\.ref\'" . major-mode)
("\.new\'" . major-
mode)) auto-mode-alist)))



La quote porte sur toute la liste. Regarde "backquote" dans le manuel
elisp.

-- Alain.
Publicité
Poster une réponse
Anonyme