J'ai passé de très nombreuses heures à essayer de faire fonctionner n'importe quelle règle / grammaire / chose d'indentation SMIE.
Y a-t-il des exemples d'un petit mode SMIE basé sur un jouet ou un squelette avec une documentation sur la façon dont il fonctionne réellement, ou une discussion sur la façon de l'utiliser? Quelque chose qui, par exemple, définit une expression comme une chaîne de jetons se terminant par un point-virgule et un bloc comme des expressions entre crochets et rien d'autre. Vraiment, vraiment simple?
Questions spécifiques: lorsque j'utilise smie-config-show-indent 90% du temps, j'obtiens la réponse ': list-intro "" -> nil'. Sur quoi la list-intro fonde-t-elle sa définition d'une expression ou d'une liste d'expressions? Pourquoi dit-il zéro et indente-t-il toujours les lignes suivantes? Comment puis-je le changer?
Deuxièmement: y a-t-il une relation entre ma grammaire et mes règles smie? Je suppose qu'il y en a parce qu'ils sont tous les deux passés dans smie-setup, mais je ne trouve aucun moyen de dire, "quand vous voyez un 'bloc', indenter le contenu", par exemple, basé sur une grammaire qui identifie un bloc .
Troisièmement, SMIE semble avoir beaucoup de règles "intégrées". Le simple fait de le lancer donne une gestion générale des crochets, des accolades et des parenthèses par exemple. Existe-t-il un moyen de voir ces règles ou de les modifier? Ou est-ce que la table de syntaxe fait tout cela et SMIE ne fait littéralement rien du tout (ce que je commence à soupçonner).
Enfin, lorsque j'essaie de déboguer SMIE, j'essaie de faire un "éditer, tampon en mode eval, aller à l'exemple de code dans un autre tampon, MX <mon mode>, tester" cycle mais il semble que chaque voyage n'efface pas les règles de le cycle précédent. Comment puis-je être sûr que le mode dérivé défini commence à partir d'une feuille blanche? J'ai (kill-all-local-variables) mais cela ne semble pas être suffisant et je finis par devoir fermer emacs.
Je ne publie aucun exemple de ce que j'ai parce que je n'ai rien qui fonctionne même vaguement, à part la mise en évidence (en utilisant font-lock-defaults, donc ce n'est même pas vraiment SMIE je suppose). J'ai besoin de vrais petits pas.
la source
lisp/progmodes/sh-script.el
semble êtresmie.el
assez utilisé . Ils semblent également documenter leur utilisation, alors peut-être que cela pourrait être un meilleur exemple?Réponses:
Un mode qui utilise fortement SMIE est https://github.com/elixir-lang/emacs-elixir Je ne sais pas si cela fonctionne vraiment - voir la liste des bogues liés au retrait.
la source
Vous pourriez commencer avec quelque chose comme
la source