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

add-to-list et customize

7 réponses
Avatar
Ph. Ivaldi
Bonjour,

Existe-t-il un moyen d'ajouter des éléments à une liste
"customizable" sans mettre la pagaille.
Je ne dois pas être bien clair; je voudrais faire proprement
l'équivalent de:

(nconc TeX-command-list
`(("asy-LaTeX" "......"
TeX-run-TeX nil (latex-mode)
:help ".......")))

Merci.
--
Philippe Ivaldi.

7 réponses

Avatar
Ralf Angeli
* Ph. Ivaldi (2006-08-12) writes:

Existe-t-il un moyen d'ajouter des éléments à une liste
"customizable" sans mettre la pagaille.
Je ne dois pas être bien clair; je voudrais faire proprement
l'équivalent de:

(nconc TeX-command-list
`(("asy-LaTeX" "......"


^
Un ' suffit ici normalement.

TeX-run-TeX nil (latex-mode)
:help ".......")))



Qu'est-ce que le problème avec cette construction ?

--
Ralf
Avatar
Ph. Ivaldi
Le 12 août 2006 à 23h09:04,
Ralf Angeli écrivit :

* Ph. Ivaldi (2006-08-12) writes:

Existe-t-il un moyen d'ajouter des éléments à une liste
"customizable" sans mettre la pagaille.
Je ne dois pas être bien clair; je voudrais faire proprement
l'équivalent de:

(nconc TeX-command-list
`(("asy-LaTeX" "......"


^
Un ' suffit ici normalement.

TeX-run-TeX nil (latex-mode)
:help ".......")))





Oui. En fait j'ai quelque chose de ce genre:

(nconc TeX-command-list
`(("asy-LaTeX" "..."
....)
("asy-pdflaTex" "...."
...)
("asy-ps" "..."
...)
(....)))

Je crois que c'est correct ainsi. Non?


Qu'est-ce que le problème avec cette construction ?



Si l'utilisateur "customize" cette variable et sauvegarde, à la
prochaine exécution de ce code il va y avoir des doublons (dans le
meilleur des cas) à supposer que ce soit possible.
D'ailleurs Emacs proteste:
M-x customize-variable <RET> TeX-command-list <RET>
[...]
"CHANGED outside Customize; operating on it here may be unreliable."
--
Philippe Ivaldi.
Avatar
Xavier Maillard
Ph. Ivaldi writes:

Bonjour,

Existe-t-il un moyen d'ajouter des éléments à une liste
"customizable" sans mettre la pagaille.
Je ne dois pas être bien clair; je voudrais faire proprement
l'équivalent de:

(nconc TeX-command-list
`(("asy-LaTeX" "......"
TeX-run-TeX nil (latex-mode)
:help ".......")))



Je ne vois pas ce qu'il y a de choquant la dedans. Cette commande est
propre (enfin ça dépend de ce que tu appelles propre en fait).

Xavier
Avatar
Ralf Angeli
* Ph. Ivaldi (2006-08-12) writes:

Le 12 août 2006 à 23h09:04,
Ralf Angeli écrivit :

Oui. En fait j'ai quelque chose de ce genre:

(nconc TeX-command-list
`(("asy-LaTeX" "..."
....)
("asy-pdflaTex" "...."
...)
("asy-ps" "..."
...)
(....)))

Je crois que c'est correct ainsi. Non?



Oui. Seulement le ` n'est pas necessaire. Un ' suffit. Mais j'ai
déjà écrit ça.

Qu'est-ce que le problème avec cette construction ?



Si l'utilisateur "customize" cette variable et sauvegarde, à la
prochaine exécution de ce code il va y avoir des doublons (dans le
meilleur des cas) à supposer que ce soit possible.



Normalement on execute ce code une fois seulement en le capsuler dans
quelque chose comme

(eval-after-load "tex"
'(...))

Une autre possibilité d'empêcher des doublons est d'utiliser
`add-to-list' à la place de `nconc'.

D'ailleurs Emacs proteste:
M-x customize-variable <RET> TeX-command-list <RET>
[...]
"CHANGED outside Customize; operating on it here may be unreliable."



C'est n'est pas une protestation, c'est seulement une information. Et
cette information est importante parce-que la valeur actuelle devie de
la valeur standard ou sauvegardé.

--
Ralf
Avatar
Ph. Ivaldi
Le 13 août 2006 à 10h34:47,
Ralf Angeli écrivit :

* Ph. Ivaldi (2006-08-12) writes:

Le 12 août 2006 à 23h09:04,
Ralf Angeli écrivit :

Oui. En fait j'ai quelque chose de ce genre:

(nconc TeX-command-list
`(("asy-LaTeX" "..."
....)
("asy-pdflaTex" "...."
...)
("asy-ps" "..."
...)
(....)))

Je crois que c'est correct ainsi. Non?



Oui. Seulement le ` n'est pas necessaire. Un ' suffit. Mais j'ai
déjà écrit ça.

Qu'est-ce que le problème avec cette construction ?



Si l'utilisateur "customize" cette variable et sauvegarde, à la
prochaine exécution de ce code il va y avoir des doublons (dans le
meilleur des cas) à supposer que ce soit possible.



Normalement on execute ce code une fois seulement en le capsuler dans
quelque chose comme

(eval-after-load "tex"
'(...))

Une autre possibilité d'empêcher des doublons est d'utiliser
`add-to-list' à la place de `nconc'.




Pas vraiment convaincu j'ai laissé tombé puis finalement je viens de
faire un test (histoire de me débrancher de font-lock-add-keywords)
J'ai le code suivant (réduit pour l'occasion):
(eval-after-load "latex"
'(progn
(add-to-list 'TeX-expand-list
'("%a"
(lambda nil
asy-command-location)) t)

(add-to-list 'TeX-command-list
'("asy-LaTeX" "%l "%(mode)input{%t}" && %aasy ..."
TeX-run-interactive nil (latex-mode)
:help "Run LaTeX && Asymptote && LaTeX"))))

Je fais un M-X customize-var <RET> TeX-command-list <RET>
et je remplace '%l "%(mode)input{%t}" && %aasy %s.asy ...' par
'toto'.
Je sauvegarde définitivement et relance Emacs.
Tex-command-list contient alors deux entrées "asy-Latex", une avec la
valeur initiale et une autre avec 'toto'.
En mode LaTeX un C-c C-c asy-LaTeX <RET> exécute la commande initiale.

Ce comportement est tout à fait prévisible.
Il faudrait un fichier Elips qui soit explicitement exécuter une seule
fois (genre emacs --eval (load truc.el) ) lors de l'installation du
paquet, qui ajoute les nouvelles entrées à Tex-command-list et simule
une sauvegarde définitive de la personnalisation comme par M-x
customize.
Ça me semble un peu lourd, donc je pense laisser tomber la modification
de cette variable (dommage).


D'ailleurs Emacs proteste:
M-x customize-variable <RET> TeX-command-list <RET>
[...]
"CHANGED outside Customize; operating on it here may be unreliable."



C'est n'est pas une protestation, c'est seulement une information.



Exact.

Et
cette information est importante parce-que la valeur actuelle devie de
la valeur standard ou sauvegardé.



Non seulement elle dévie mais en plus la personnalisation en devient
incertaine.

Merci de votre attention,
--
Philippe Ivaldi.
Avatar
Matthieu Moy
Ph. Ivaldi writes:

J'ai le code suivant (réduit pour l'occasion):



[...]

Je fais un M-X customize-var <RET> TeX-command-list <RET> et je
remplace '%l "%(mode)input{%t}" && %aasy %s.asy ...' par 'toto'.
Je sauvegarde définitivement et relance Emacs.



D'une manière générale, si tu as du code perso qui touche à une
variable et que tu interfère avec customize, ça peut difficilement
bien se passer. Dans le cas d'un simple "setq", c'est le dernier qui
va écraser l'autre, dans le cas d'un add-to-list, ça va se cumuler.

Bref, to customize or not to customize, il faut choisir.

(Perso, ça m'arrive souvent d'utiliser customize pour trouver une
option, puis de couper-coller le code généré par customize dans mon
.emacs.el pour en faire un version plus propre, éventuellement
commentée (si si !))

--
Matthieu
Avatar
Ph. Ivaldi
Le 23 août 2006 à 17h09:54,
Matthieu Moy écrivit :

Ph. Ivaldi writes:

J'ai le code suivant (réduit pour l'occasion):



[...]

Je fais un M-X customize-var <RET> TeX-command-list <RET> et je
remplace '%l "%(mode)input{%t}" && %aasy %s.asy ...' par 'toto'.
Je sauvegarde définitivement et relance Emacs.



D'une manière générale, si tu as du code perso qui touche à une
variable et que tu interfère avec customize, ça peut difficilement
bien se passer. Dans le cas d'un simple "setq", c'est le dernier qui
va écraser l'autre, dans le cas d'un add-to-list, ça va se cumuler.

Bref, to customize or not to customize, il faut choisir.



Triste réalité :-)


(Perso, ça m'arrive souvent d'utiliser customize pour trouver une
option, puis de couper-coller le code généré par customize dans mon
.emacs.el pour en faire un version plus propre, éventuellement
commentée (si si !))



Je comprends bien et j'utilise aussi parfois "customize" comme ça.
Dans le cas présent c'est pour faire un petit paquet pour le langage
Asymptote qui éviterait, entre autre, à un utilisateur éventuel de se
casser la tête.
Ceci dit, mes bidouilles sur TeX-command-list ne sont quand même pas
fondamentales...
Allez, j'ose (que ceux qui y jettent un ½il soient *très* indulgents):
http://home.tele2.fr/phivaldi/index.html

Bonne journée,
--
Philippe Ivaldi.