我花了很多小时来尝试使任何形式的SMIE缩进规则/语法/事物都起作用。
是否有基于SMIE的小型,玩具或骨架模式的示例,其中包含有关其实际工作方式的文档,或者有关如何使用它的任何讨论?就是说,将表达式定义为以分号结尾的令牌字符串,而将块定义为括号之间的某些表达式,仅此而已。真的,真的很简单吗?
具体问题:在使用smie-config-show-indent时,有90%的时间得到响应':list-intro“”-> nil'。基于列表的表达式或表达式列表的定义是什么?为什么说nil并仍然缩进以下几行?我该如何更改?
其次:我的语法和我的smie规则之间是否有任何关系?我想是因为它们都传递到了smie-setup中,但是我找不到任何方式说“例如,当您看到一个'block'时,缩进内容”,例如,基于识别一个block的语法。
第三,SMIE似乎有很多“扎根”的规则。只需将其启动即可对括号,大括号和括号等进行一般处理。有什么办法可以看到这些规则或对其进行修改?还是语法表正在执行所有这些操作,而SMIE实际上根本没有执行任何操作(我开始怀疑)。
最后,当尝试调试SMIE时,我尝试做一个“编辑,评估模式缓冲区,转到其他缓冲区中的示例代码,MX <我的模式>,测试”循环,但是似乎每次行程都无法清除规则前一个周期。我如何确定定义派生模式是从干净的表开始的?我在那里(kill-all-local-variables)在其中,但这似乎还不够,我最终不得不关闭emacs。
我没有发布任何示例,因为除了突出显示(使用font-lock-defaults之外,我什至无法隐约地工作),我猜它甚至都不是SMIE。我需要一些实际的步骤。
lisp/progmodes/sh-script.el
似乎用途smie.el
广泛。他们似乎也记录了对它的使用,因此也许这是一个更好的例子?