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

Le
hjuvi
Bonjour,

J'ai besoin de modifier dynamiquement auto-mode-alist, pour insrer
une rgle 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 rsultat attendu :

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

Le problme, 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 rcuprer la valeur de major-mode (et non pas "major-mode") ?


Pour information, j'avais d'abord une mthode plus simple : changer
default-major-mode juste avant de charger le fichier .ref ou .new, et
le rtablir juste aprs. Malheureusement, sur une version d'emacs,
dans un environnement prcis (que je n'arrive pas identifier), a
gnre 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 mthode auto-mode-alist.
Si quelqu'un a une explication pour le problme avec default-major-
mode, a m'intresse aussi.

Merci d'avance.
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