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.
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.

Poser une question


J'imagine que t'es sûr de ton coup.
La quote porte sur toute la liste. Regarde "backquote" dans le manuel
elisp.
-- Alain.
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 !
("\.new\'" . ,major-mode)) auto-mode-alist))
Alain Ketterlin a écrit :