2015-11-23 42 views
2

有高亮塊模式是非常好的,但它只突出基於parens匹配塊。我也想添加對語義塊的支持。 例如將case,try/catchlambda和其他表達式視爲塊並突出顯示其中的代碼。如何解析Elisp中的代碼塊?

我已經習慣了語法表,但他們似乎只適用於語法,並不能幫助我解決我的問題。

Elisp中有什麼東西可以用於此任務嗎?

有一種官方語言模式(我希望Erlang現在可以使用它),它有關鍵字列表,但我認爲它僅用於縮進和突出顯示。

+0

一個簡單的,模式不可知的解決方案是突出顯示基於壓痕深度的塊。 – Lindydancer

回答

4

Emacs的主要模式通常不包括它們支持的語言的完整解析器。爲了縮進目的,他們確實需要執行一定量的解析,但通常僅以部分和膚淺的方式完成。

基於SMIE的主要模式在這方面傾向於稍微好一些,因爲SMIE採用的方法是將壓頭的任務清楚地分成一側的解析和另一側的縮進規則,因此解析側通常更完整徹底。這表示,它仍然通常不完整或近似。

因此,對於基於SMIE的主要模式,可以使用smie-backard-sexpsmie-forward-sexp來查找封閉的「語義塊」。