代码折叠在一行上

时间:2012-07-22 22:45:16

标签: regex emacs folding

编辑我认为漂亮模式在概念上比我想要的更接近于各种折叠模式,但我需要能够用其他字符串替换字符串,而不是单个字符。据我所知, pretty-mode 只允许用唯一字符替换字符串。

我希望在Emacs中做一些非常具体的事情,这是一种代码折叠。我读过这个: Code folding in Emacs

已被关闭作为一个骗局:

How to achieve code folding effects in Emacs?

然而,我正在努力做一些特别的事情,因为我不想折叠功能线:我确实想在一行上折叠字符。

我也完全没有导航:这不是为了方便导航。这只是让屏幕变得杂乱无章。

例如,如果我有这个:

super verbose syntax my_bar = 42;
hyper long syntax my_foo = 84;

我想让它出现在Emacs中,就像这样:

svs my_bar = 42;
hls my_foo = 84;

因为我不仅阅读了一百万次“超级冗长语法”/“超长语法”,因为自从我输入“svs”十年以来,它会自动扩展为“超级详细语法” “和'hls'自动扩展为”超长语法“,我没有机会使用”svs“作为真正的标识符,我没有机会立刻意识到正在发生的事情。当然,文件/缓冲区仍应包含非常详细的语法。

我纯粹想要“折叠在一条线上的字符”。

所以,简而言之,当我输入“超级详细语法”时,我希望它能自动折叠到'svs'屏幕上(当我输入'svs'TAB时,它会扩展为“超级详细语法”,但那是在我的情况下输入svs TAB将扩展为“超级详细语法”,然后应该直接折叠到屏幕上的'svs' 。)

这样可以节省大量屏幕空间并帮助我专注于更重要的事情。

(作为一个很酷的副作用,它也会排列不同长度的垂直保留关键字,使代码对我来说更具可读性)

如何在Emacs下实现这一目标?是否有一个小模式已经这样做了?

1 个答案:

答案 0 :(得分:4)

尝试将这两个表达式添加到模式挂钩中:

(font-lock-add-keywords
 nil
 '(("super verbose syntax" (0 '(face default display "svs") append))
   ("hyper long syntax" (0 '(face default display "hls") append)))
 t)
(push 'display font-lock-extra-managed-props)