有一个highlight-blocks-mode很好,但它仅基于parens匹配突出显示了块。我也想添加对语义块的支持。例如治疗case
,try / catch
,lambda
和其他表达式作为在他们里面块和亮度代码。
我已经阅读了有关语法表的内容,但是它们似乎仅适用于语法,对我的问题无济于事。
我可以在Elisp中使用某些功能来执行此任务吗?
有一种官方语言模式(我现在要在Erlang中使用它),它具有关键字列表,但我认为它仅将它们用于缩进和突出显示。
Emacs的主要模式通常不包括其支持的语言的完整解析器。出于缩进的目的,他们确实需要执行一些解析,但通常仅以部分和表面的方式进行。
基于SMIE的主要模式在这方面的表现往往会更好一些,因为SMIE采取的方法是将压头的任务清楚地分为一方面进行解析,而压痕规则则另一侧进行解析,因此解析方面通常更为完整和透彻。也就是说,它通常仍不完整或近似。
因此,对于基于SMIE的主要模式,您可以使用smie-backard-sexp
和smie-forward-sexp
查找封闭的“语义块”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句