Ho trascorso molte, molte ore ora cercando di far funzionare qualsiasi tipo di regola / grammatica / cosa di rientro SMIE.
Ci sono esempi di una piccola modalità basata su SMIE basata su un giocattolo o uno scheletro con la documentazione su come funziona effettivamente o qualsiasi discussione su come usarla? Qualcosa che, per esempio, definisce un'espressione come una stringa di token che termina in punto e virgola e un blocco come espressione tra parentesi e nient'altro. Davvero semplice?
Domande specifiche: quando si usa smie-config-show-indent il 90% delle volte ottengo la risposta ': list-intro "" -> nil'. Su cosa si basa l'introduzione della lista sulla base della sua definizione di espressione o di un elenco di espressioni? Perché dice zero e indenta ancora le seguenti righe? Come lo cambio?
Secondo: c'è qualche relazione tra la mia grammatica e le mie regole di smie? Presumo che ci sia perché sono entrambi passati a smie-setup, ma non riesco a trovare alcun modo per dire "quando vedi un" blocco ", indenta il contenuto", ad esempio, basato su una grammatica che identifica un blocco .
In terzo luogo, SMIE sembra avere molte regole "cotte". Il calcio d'inizio dà una gestione generale di parentesi, parentesi graffe e parentesi per esempio. C'è un modo per vedere queste regole o modificarle? O è che la tabella di sintassi sta facendo tutto questo e SMIE non sta letteralmente facendo nulla (cosa che sto iniziando a sospettare).
Infine, quando provo a eseguire il debug di SMIE, provo a fare un "modifica, eval mode buffer, vai al codice di esempio in altro buffer, MX <my mode>, test" ciclo ma sembra che ogni giro in giro non cancelli le regole da il ciclo precedente. Come posso essere sicuro che la modalità definita derivata inizi da un foglio pulito? Ho (kill-all-local-variabili) lì dentro ma non sembra essere abbastanza e finisco per chiudere emacs.
Non sto pubblicando alcun esempio di ciò che ho perché non ho nulla che funzioni vagamente, a parte l'evidenziazione (usando i font-lock-default, quindi non è nemmeno SMIE, immagino). Ho bisogno di alcuni veri piccoli passi.
lisp/progmodes/sh-script.el
sembrano usare smie.el
piuttosto ampiamente. Sembrano anche documentare il loro uso, quindi forse potrebbe essere un esempio un po 'migliore?