Des propriétés
Une liste d'association est, tout simplement, une map. Elle associe à une valeur une autre valeur.
Quand cette liste d'association est associée à un symbole (variable, fonctions, ...) on parle de liste de propriétés (plist).
Habituellement, cette liste, stockée dans une partie du symbole qu'Emacs gère, associe des symboles à des valeurs. L'avantage des symboles, c'est qu'ils ne sont pas une valeur, mais qu'ils sont la manière de les représenter (opposition syntaxe/sémantique).
Un symbole est précédé d'un ' généralement. Le symbole 'toto est différent du symbole 'tata.
Donc, pour revenir à nos propriétés, la propriété d'une fonction est, par exemple, l'endroit où elle a été définie, qu'est-ce qu'elle fait dans la vie, est-ce qu'elle est considérée comme dangereuse (auquel cas prévenir l'utilisateur avant l'execution, ...).
Par exemple :
M-: (symbol-plist 'upcase-region)
(disabled t)
Le symbole 'disabled a pour correspondant t, ce qui signifie que cette fonction est invalidée. Si vous appelez cette fonction, Emacs vous hurlera dessus en disant « disabled because new users often find it confusing ».
Ho gosh ! Comment c'est arrivé ! Qui a intercepté l'appel ?
Il s'agit de novice.el, l'ami des débutants, qui vous proposera d'enabler cette commande. Il définit une variable disabled-command-function qui sera examinée par le code C d'Emacs quand une fonction marquée `disabled' s'exécute.
Le code C d'Emacs appellera simplement (get 'upcase-region 'disabled), qui lui renverra t. Il en déduira qu'il faut faire l'appel.
Mais si (get) existe, il doit y avoir un (set), non ? Non. En fait cette fonction s'appelle (put), mais fait exactement ce que vous voulez.
Vous pouvez approfondir ce chapitre par le manuel d'info, bien que cela ne me semble pas nécessaire.
- Micha
- 15:47
- > Lien permanent
- > Commentaires
- > Abus ?



