Par exemple, je voudrais connaître les valeurs de toutes les variables avec le préfixe « comint- * »Existe-t-il un moyen d'afficher les valeurs de toutes les variables emacs liées correspondant à un préfixe?
1
A
Répondre
3
Si vous voulez juste des variables personnalisables, vous pouvez utiliser M-x-customize à propos.
Sinon, essayez quelque chose comme ceci:
(with-output-to-temp-buffer "*Variables*"
(set-buffer standard-output)
(insert (mapconcat (lambda (sym) (format "%s: %s" sym (eval sym)))
(apropos-internal "^comint-.*" 'boundp) "\n\n")))
Cela va produire un tampon *Variables*
avec des contenus tels que:
comint-accum-marker: nil
comint-buffer-maximum-size: 1024
comint-completion-addsuffix: t
...
1
pas "parfait" mais vous pouvez faire Chvprefix
, puis appuyez sur l'onglet pour obtenir toutes les variables qui commencent par ce `préfixe.
Si vous voulez l'essayer manuellement, la fonction que vous devez rechercher est completion--do-completion
.
1
Voilà comment je le ferais:
(require 'cl)
(loop for sym being the symbols
when (and (boundp sym) (string-match "^comint-" (symbol-name sym)))
collect (cons sym (symbol-value sym)))
Sur mon système, ce sera évalué à:
((comint-output-filter-functions comint-watch-for-password-prompt)
(comint-mode-abbrev-table . [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0])
(comint-exec-hook (lambda nil (set-process-query-on-exit-flag ... nil)))
(comint-file-name-prefix . ""))
Salut Sean - Je suis curieux de savoir le mécanisme derrière tout cela. Même après (require 'cl) les symboles ne sont pas liés. Est-ce que cette possibilité de faire une boucle sur la table de symboles est intégrée dans la macro de boucle? Je n'ai pas pu trouver cela documenté (même si cela fonctionne comme vous le décrivez). – SetJmp
Oui, la macro de boucle gère les clauses de la forme "being the" spécialement. Les autres possibilités sont "être les cadres" (pour parcourir tous les cadres visibles) et "être les tampons" (pour parcourir tous les tampons). Voir: http://www.gnu.org/software/emacs/manual/html_mono/cl.html#For-Clauses pour des informations plus complètes. – Sean