/ / Liste des modes parents Emacs - emacs, elisp, mode

Liste Emacs des modes parents - emacs, elisp, mode

Dans emacs, est-il possible d’obtenir une liste des modes parents pour un mode dérivé?

J'ai trouvé dérivée-mode-p, mais cela me permet uniquement de tester si un mode est dérivé d'un autre.

Réponses:

7 pour la réponse № 1

Chaque le symbole a une liste de propriétés et pour les modes dérivés, cette liste comprend le composant derived-mode-parent qui indique de quel mode il a été dérivé. Cela semble être juste un symbole unique.

(define-derived-mode nst-mode text-mode "Testing")
=> nst-mode

(get "nst-mode "derived-mode-parent)
=> text-mode

Je ne vois pas comment il pourrait y avoir plus d’un parent, jamais.

Voici une démo d'une chaîne de parents transitive.

(define-derived-mode rope nil "Victim of mouse")
(define-derived-mode mouse rope "Victim of cat")
(define-derived-mode cat mouse "Victim of dog")
(define-derived-mode dog cat "Enough already")

(let ((mode "dog) parents)
(while mode
(setq parents (cons mode parents)
mode (get mode "derived-mode-parent)))
(reverse parents))

=> (dog cat mouse rope)

... ou juste pour le plaisir, une version récursive:

(defun derived-mode-parents (mode)
(and mode
(cons mode (derived-mode-parents
(get mode "derived-mode-parent)))))

(derived-mode-parents "dog)
=> (dog cat mouse rope)