在lisp模式下隐藏`(声明)`表单

时间:2015-02-28 04:18:52

标签: emacs common-lisp slime

这实际上是两个问题:

  1. 有人知道一个emacs功能可以隐藏(并且可能表明它已经这样做了)在lisp代码中选择的表单吗?我编写了一些面向性能的常见lisp,并且关键函数确实包含许多混乱代码的(declare (type ...))形式。

  2. 如果没有,是否有人建议在哪里激发/窃取可以让我自己写的东西?

  3. 干杯谢谢!

1 个答案:

答案 0 :(得分:2)

编写一个函数,查找要隐藏的文本的开始和结束位置。然后使用(put-text-property START END 'invisible t)使文本不可见。

对于快速而肮脏的示例,请使用(search-forward "(declare (type " nil t)(match-beginning 0)是该性别的起始位置,因此(goto-char (match-beginning 0)),然后(forward-sexp 1)到达其最终位置。然后使用上面的put-text-property隐藏文本,从declare sexp的开头直到结束。这样做是为了隐藏所有这些性别。

为了更加小心,你可以使用一个允许变量空格(包括换行符)的正则表达式等等。但是上面的内容应该让你开始。

(要使隐身文字再次显示,只需使用(put-text-property START END 'invisible nil)。)