【问题标题】:Hide `(declare)` forms in lisp mode在 lisp 模式下隐藏 `(declare)` 表单
【发布时间】:2015-02-28 04:18:52
【问题描述】:

这其实是两个问题:

  1. 有没有人知道一个 emacs 功能可以隐藏(并且可能表明它已经这样做了)lisp 代码中的选定表单?我写了一些面向性能的通用 lisp,关键函数确实包含大量的 (declare (type ...)) 形式,使代码混乱。

  2. 如果没有,是否有人建议从哪里获得灵感/窃取一些可以让我自己写的东西?

干杯,谢谢!

【问题讨论】:

    标签: emacs common-lisp slime


    【解决方案1】:

    编写一个函数来查找要隐藏的文本的开始和结束位置。然后使用(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)。)

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 1970-01-01
      • 2018-08-30
      • 2019-03-28
      • 2010-11-02
      • 1970-01-01
      • 2020-05-30
      • 2016-05-16
      • 1970-01-01
      相关资源
      最近更新 更多