Regex 代码在一行上折叠

Regex 代码在一行上折叠,regex,emacs,folding,Regex,Emacs,Folding,编辑我认为与各种折叠模式相比,漂亮模式在概念上更接近我想要的,但我需要能够用其他字符串代替字符串,而不是单个字符。据我所知,pretty模式只允许用唯一字符替换字符串 我希望在Emacs中做一些非常具体的事情,这是一种代码折叠。我读过: 它已被关闭为此的副本: 不过,我尝试做一些有点特别的事情,因为我不想折叠函数行:我只想在一行上折叠字符 我也不喜欢导航:这不是为了方便导航。这只是为了稍微消除屏幕上的混乱 例如,如果我有: super verbose syntax my_bar = 42;

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

我希望在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”选项卡时,它会扩展为“超级详细语法”,但这是另外一回事……在我的情况下,键入svs选项卡将扩展为“超级详细语法”,然后应在屏幕上直接折叠为“svs”)

这将节省大量屏幕空间,并帮助我专注于更重要的事情

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


如何在Emacs下实现这一点?是否有次要模式已经在执行此操作?

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

(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)

@Haiyan:+1但它显然破坏了我的模式的所有其他“面子”设置(我尝试了“java模式挂钩”)。它“工作”在我看到折叠的字符,但我失去了每一个其他面部设置。