【发布时间】:2015-02-28 04:18:52
【问题描述】:
这其实是两个问题:
有没有人知道一个 emacs 功能可以隐藏(并且可能表明它已经这样做了)lisp 代码中的选定表单?我写了一些面向性能的通用 lisp,关键函数确实包含大量的
(declare (type ...))形式,使代码混乱。如果没有,是否有人建议从哪里获得灵感/窃取一些可以让我自己写的东西?
干杯,谢谢!
【问题讨论】:
标签: emacs common-lisp slime
这其实是两个问题:
有没有人知道一个 emacs 功能可以隐藏(并且可能表明它已经这样做了)lisp 代码中的选定表单?我写了一些面向性能的通用 lisp,关键函数确实包含大量的 (declare (type ...)) 形式,使代码混乱。
如果没有,是否有人建议从哪里获得灵感/窃取一些可以让我自己写的东西?
干杯,谢谢!
【问题讨论】:
标签: emacs common-lisp slime
编写一个函数来查找要隐藏的文本的开始和结束位置。然后使用(put-text-property START END 'invisible t) 使文本不可见。
举个简单粗暴的例子,使用(search-forward "(declare (type " nil t)。 (match-beginning 0) 是那个sexp 的开始位置,所以(goto-char (match-beginning 0)),然后执行(forward-sexp 1) 到达它的结束位置。然后像上面一样使用put-text-property,将文本从declare sexp 的开头隐藏到结尾。循环执行此操作,以隐藏所有此类性别。
为了更加小心,您将使用允许在 sexp 等中使用可变空格(包括换行符)的正则表达式。但以上内容应该可以帮助您入门。
(要使不可见的文本再次可见,只需使用(put-text-property START END 'invisible nil)。)
【讨论】: