/ / Emacs lista trybów nadrzędnych - emacs, elisp, mode

Lista trybów macierzystych Emacsa - emacs, elisp, mode

Czy w emacsie można uzyskać listę trybów nadrzędnych dla trybu pochodnego?

Znalazłem tryb pochodny-p, ale pozwala mi to tylko sprawdzić, czy tryb pochodzi od innego.

Odpowiedzi:

7 dla odpowiedzi № 1

Każdy symbol ma listę właściwości a dla trybów pochodnych ta lista zawiera komponent derived-mode-parent który wskazuje, z którego trybu został uzyskany. To wydaje się być tylko jednym symbolem.

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

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

Nie rozumiem, jak może być więcej niż jeden rodzic.

Oto demo przechodniego łańcucha rodziców.

(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)

... lub dla zabawy wersja rekurencyjna:

(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)