De nombreux modes Emacs utilisent (quelque chose comme) des formulaires: l'interface de personnalisation en fait partie, le mode Message (lire: sa partie en-tête) en est une autre; il y en a plus, malheureusement pas toujours très similaires. Par "forme", j'entends ici un tampon avec des parties et des endroits en lecture seule désignés pour entrer du texte; il peut ou non contenir des boutons (il devrait probablement accepter C-c C-c
comme clé de confirmation / validation, indépendamment de la présence d'un bouton OK ).
Je suis particulièrement intéressé par la saisie semi-automatique dans les champs (et en particulier, l'activation des champs avec des listes de valeurs d'un ensemble désigné, disons séparées par des virgules). Ma question est la suivante: existe-t-il une bibliothèque Emacs permettant de créer facilement (par "facile", je ne veux pas réinventer la roue) de tels formulaires, ou dois-je tout coder moi-même?
(J'imagine que ce que je devrais faire dans ce dernier cas serait (1) mettre certaines parties du tampon en lecture seule, (2) préparer un mode majeur spécial, de sorte que par exemple TAB
et S-TAB
basculer entre les "champs", et (3) peut-être utiliser quelque chose comme Icicles ou Helm pour la saisie semi-automatique.)
Réponses:
Voir les bibliothèques
cus-edit.el
etwid-edit.el
(et leurs bibliothèques de niveau supérieurcustom.el
etwidget.el
, et les bibliothèques de composants associées), qui sont incluses avec GNU Emacs. Le premier utilise le second. Ce dernier définit des trucs d'entrée de forme basiques (et pas si basiques), appelés " widgets ", dans une hiérarchie. Vous pouvez utiliser ces widgets et fonctions prédéfinis dans la bibliothèque pour créer vos propres widgets et types de widgets.Cependant, sachez que le code de ces bibliothèques, en particulier celui de
wid-edit.el
, n'est pas très facile à suivre. Le mieux est de commencer par réutiliser les widgets existants ou d'utiliser le code de définition de widget existant comme guide.(Deux bibliothèques d'extension mineures pour cela sont
cus-edit+.el
etwid-edit+.el
. Elles présentent également quelques exemples d'utilisation.)Il existe un manuel d'informations pour les widgets, distribué avec GNU Emacs, intitulé " The Emacs Widget Library ".
Il y a aussi une bibliothèque
forms.el
, incluse avec GNU Emacs, mais je ne la connais pas. Peut-être que quelqu'un d'autre a quelque chose d'utile à dire à ce sujet. Il existe un manuel pour les formulaires, distribué avec GNU Emacs, intitulé " Forms Mode ".la source
\(custom\|widget\).el
et\(cus\|wid\)-edit.el
un peu? Je trouve surtout cette partie des Widgets incompréhensible manuel:(require 'widget) (eval-when-compile (require 'wid-edit))
.cus-edit.el
etwid-edit.el
. Les autres fichiers que vous mentionnez sont des fichiers de niveau supérieur; les*-edit.el
fichiers ont le code qui m'intéressait. Je ne sais pas beaucoup plus que ça; Pardon. La vraie difficulté est le code lui-même, qui utilise un style semi-OOP particulier qui ne se prête pas bien à l'auto-documentation d'Emacs (pour le moins) ou au débogueur Emacs. Vous pouvez enquêter par vous-même, ou peut-être essayer de contacter l'auteur (bonne chance avec ça!). Peut-être que d'autres ici pourront vous aider.