Emacs 在lisp模式下隐藏`(declare)`表单

Emacs 在lisp模式下隐藏`(declare)`表单,emacs,common-lisp,slime,Emacs,Common Lisp,Slime,这实际上是两个问题: 有谁知道一个emacs特性可以在lisp代码中隐藏(可能表明它已经这样做)选定的表单吗?我已经编写了一些面向性能的通用lisp,并且关键函数确实包含大量的(declare(type…)表单,这些表单会使代码变得混乱 如果没有,是否有人建议在哪里获得灵感/偷点东西,让我自己写 干杯,谢谢 编写一个函数,用于查找要使其不可见的文本的起始位置和结束位置。然后使用(放置文本属性START-END'invisible t)使文本不可见 对于一个快速而肮脏的示例,使用(向前搜索)(声明

这实际上是两个问题:

  • 有谁知道一个emacs特性可以在lisp代码中隐藏(可能表明它已经这样做)选定的表单吗?我已经编写了一些面向性能的通用lisp,并且关键函数确实包含大量的
    (declare(type…)
    表单,这些表单会使代码变得混乱

  • 如果没有,是否有人建议在哪里获得灵感/偷点东西,让我自己写


  • 干杯,谢谢

    编写一个函数,用于查找要使其不可见的文本的起始位置和结束位置。然后使用
    (放置文本属性START-END'invisible t)
    使文本不可见

    对于一个快速而肮脏的示例,使用
    (向前搜索)(声明(键入“nil t)
    (匹配开始0)
    是该sexp的开始位置,因此
    (转到字符(匹配开始0))
    ,然后执行
    (向前sexp 1)
    到达其结束位置。然后如上所述使用
    放置文本属性
    ,将文本从
    声明
    sexp的开始隐藏到其结束。在循环中执行此操作,以隐藏所有此类sexp

    为了更加小心,您可能会使用一个regexp,它允许在sexp中使用可变空格(包括换行符),等等。但是上面的内容应该可以让您开始

    (要使不可见文本再次可见,只需使用
    (将文本属性“开始-结束”设置为“不可见零”)