Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

associer des extensions de fichiers à un mode

12 réponses
Avatar
SL
J'ai bien ça dans mon .emcas :

--------

;;; nxml

(add-to-list 'load-path (concat homedir "/elisp/nxml-mode-20041004"))

(load "rng-auto.el")

;(add-hook 'nxml-mode-hook 'toggle-truncate-lines)

(setq auto-mode-alist
(cons '("\\.\\(xml\\|xsl\\|rng\\|tei\\|xhtml\\)\\'" . nxml-mode)
auto-mode-alist))

---------

Mais rien à faire, les fichiers avec ces extensions s'ouvrent tous
avec le mode xml.

Avez vous une idée ?
slv

10 réponses

1 2
Avatar
Sébastien Kirche
Le 19 octobre 2005 à 11:10, SL s'est exprimé ainsi :

(setq auto-mode-alist
(cons '(".(xml|xsl|rng|tei|xhtml)'" . nxml-mode)


^^^
auto-mode-alist))



Ça ne fonctionnerait pas mieux en modifiant le cons comme ça ?
'(".(xml|xsl|rng|tei|xhtml)" . nxml-mode)

HTH
--
Sébastien Kirche
Avatar
Matthieu Moy
Sébastien Kirche writes:

Le 19 octobre 2005 à 11:10, SL s'est exprimé ainsi :

(setq auto-mode-alist
(cons '(".(xml|xsl|rng|tei|xhtml)'" . nxml-mode)


^^^



`''
matches the empty string, but only at the end of the buffer or
string being matched against.

Si on suppose qu'il n'y a pas de retour à la ligne dans les noms de
fichiers, on peut aussi utiliser "$".

Ça ne fonctionnerait pas mieux en modifiant le cons comme ça ?
'(".(xml|xsl|rng|tei|xhtml)" . nxml-mode)



toto.xml.tex passera en mode XML :-(

M'enfin, j'ai pas de fichier toto.xml.tex alors c'est pas grave ;-).

--
Matthieu
Avatar
SL
Sébastien Kirche a écrit :
Le 19 octobre 2005 à 11:10, SL s'est exprimé ainsi :

(setq auto-mode-alist
(cons '(".(xml|xsl|rng|tei|xhtml)'" . nxml-mode)


^^^
auto-mode-alist))



Ça ne fonctionnerait pas mieux en modifiant le cons comme ça ?
'(".(xml|xsl|rng|tei|xhtml)" . nxml-mode)



Non, ça ne change rien à vue de nez.

slv
Avatar
SL
PS : j'ajoute que parmi les symptômes il y a ce message au démarrage
(manuel, donc) de nxml :

run-hooks: Symbol's function definition is void: bind-nxml-mode-keys

Je ne trouve pas d'aide sur cette fonction. J'ai vraiment installé
nxml en copiant le répertoire téléchargé sur tai-opensource dans "elisp/"
et en ajoutant les lignes du précédent message à ".emacs", c'est peut
être sauvage mais jusqu'à présent ça marchait...
Avatar
Sébastien Kirche
Le 19 octobre 2005 à 11:10, Matthieu Moy a dit :

> > (cons '(".(xml|xsl|rng|tei|xhtml)'" . nxml-mode)
> ^^^

`''
matches the empty string, but only at the end of the buffer or
string being matched against.

Si on suppose qu'il n'y a pas de retour à la ligne dans les noms de
fichiers, on peut aussi utiliser "$".



Rhazut. Je ne connaissais pas l'usage de '. J'aurais dû relire la
section sur les regexps avant de répondre...

Par comparaison avec le man re_format(7) on dirait que c'est propre à
Emacs ?

--
Sébastien Kirche
Avatar
Jean Magnan de Bornier
Le 19 octobre à 11:17:00 SL écrit notamment:

J'ai bien ça dans mon .emcas :

--------

;;; nxml

(add-to-list 'load-path (concat homedir "/elisp/nxml-mode-20041004"))

(load "rng-auto.el")

;(add-hook 'nxml-mode-hook 'toggle-truncate-lines)

(setq auto-mode-alist
(cons '(".(xml|xsl|rng|tei|xhtml)'" . nxml-mode)
auto-mode-alist))

---------

Mais rien à faire, les fichiers avec ces extensions s'ouvrent tous
avec le mode xml.

Avez vous une idée ?
slv



(fset 'xml-mode 'nxml-mode)

a résolu le problème pour moi; le problème est connu et répertori é:

http://www.emacswiki.org/cgi-bin/wiki/NxmlMode#toc2

à+,
--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87
Avatar
SL
Jean Magnan de Bornier a écrit :

(fset 'xml-mode 'nxml-mode)

a résolu le problème pour moi; le problème est connu et répertorié:

http://www.emacswiki.org/cgi-bin/wiki/NxmlMode#toc2



Je ne comprends strictement rien à cette page, mais effectivement ça
marche. Merci.

slv
Avatar
Jean Magnan de Bornier
Le 20 octobre à 00:19:04 "drkm" écrit notamme nt:

Jean Magnan de Bornier wrote:

(fset 'xml-mode 'nxml-mode)



a résolu le problème pour moi; le problème est connu et répertor ié:



C'est qu'il a ete mal solutionne, alors. Typiquement, ce probleme
vient de l'introduction de 'magic-mode-alist'. Ceci pour supprimer les
geneur de la valeur par defaut :

(defcustom drkm-misc:magic-modes-to-delete
'(html-mode sgml-mode xml-mode)
"List of mode symbols whose entries to delete in
`magic-mode-alist'."
:type '(repeat symbol)
:group 'drkm)

(when (boundp 'magic-mode-alist)
(setq magic-mode-alist
(delete-if (lambda (cell)
(memq (cdr cell)
drkm-misc:magic-modes-to-delete))
magic-mode-alist)))

apres quoi un :

(push '("`<?xml" . nxml-mode) magic-mode-alist)

demarrera nXML pour les buffers commencant par ces caracteres (donc les
documents XML avec declaration XML).

Le probleme avec cette nouvelle variable est qu'elle a precedence sur
'auto-mode-alist' (c'est bien) et que cela casse certaines configs
exsistantes a cause de la valeur par defaut (c'est mal), renseignant
les modes html, xml, sgml, ps et conf-unix (ou quelque chose du genre).




Puisque tu le dis... je prends, ça marche, c'est adopté (et je regrette de
ne pas comprendre totalement)!
Je suis sûr qu'ils seraient contents de connaître cette solution chez
nXML, ou sur emacswiki où j'avais trouvé la solution précédente.

à+,
--
Jean Magnan de Bornier | Cours Victor Hugo
e-mots: jean at bornier.net | 13980 Alleins France
T 08 70 39 34 03 | P 06 09 17 35 87
Avatar
Jean Magnan de Bornier
Le 20 octobre à 10:48:16 "drkm" écrit notamme nt:

Jean Magnan de Bornier wrote:

(et je regrette de ne pas comprendre totalement)!



Lorsque tu ouvres un fichier, Emacs definit le mode d'edition majeur
a adopter. Tu connais deja 'auto-mode-alist', la variable qu'il
utilise pour associer des regexps sur le nom de fichier a des modes.

'magic-mode-alist', c'est le meme principe, mais c'est sur le contenu
du buffer lui-meme, et non sur le nom de fichier. Ce qui est parfait
pour XML, par exemple , grace a la declaration XML : <?xml
version="1.0"?>. Et qui pourrait remplacer 'interpreter-mode-alist',
qui fait un peu la meme chose mais de maniere plus specialisee (qui
marche juste lorsque le fichier commence par "#!/path/...").

Lorsque Emacs cherche le mode majeur a employer, donc, il va d'abord
regarder dans 'magic-moe-alist' si une regexp correspond au contenu du
buffer, sinon il regarde dans 'auto-mode-alist' si une regexp
correspond au nom du fichier.



Merci, c'est clair maintenant
--
Jean
Avatar
SL
"drkm" a écrit :
Jean Magnan de Bornier wrote:

(fset 'xml-mode 'nxml-mode)



a résolu le problème pour moi; le problème est connu et répertorié:



C'est qu'il a ete mal solutionne, alors. Typiquement, ce probleme
vient de l'introduction de 'magic-mode-alist'. Ceci pour supprimer les
geneur de la valeur par defaut :

(defcustom drkm-misc:magic-modes-to-delete
'(html-mode sgml-mode xml-mode)
"List of mode symbols whose entries to delete in
`magic-mode-alist'."
:type '(repeat symbol)
:group 'drkm)

(when (boundp 'magic-mode-alist)
(setq magic-mode-alist
(delete-if (lambda (cell)
(memq (cdr cell)
drkm-misc:magic-modes-to-delete))
magic-mode-alist)))

apres quoi un :

(push '("`<?xml" . nxml-mode) magic-mode-alist)




Merci, au moins c'est clair ; le code ci-dessus a l'air très bien,
mais au démarrage j'ai un message comme quoi "detete-if" n'est pas une
fonction reconnue. Alors que, curieusement, M-x load-file RET ~/.emacs
passe sans problème.
1 2