【问题标题】:code folding on a single line代码折叠在一行
【发布时间】:2012-07-22 22:45:15
【问题描述】:

编辑我认为漂亮模式在概念上比各种折叠模式更接近我想要的,但我需要能够用其他字符串替换字符串,而不是单个字符。据我所知,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”选项卡时,它会扩展为“超级详细语法”,但那是别的东西...在我的情况下,键入 svs TAB 将扩展为“超级详细语法”,然后应该直接折叠到“svs”在屏幕上)。

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

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

如何在 Emacs 下实现这一点?是否有一个次要模式已经这样做了?

【问题讨论】:

    标签: regex emacs folding


    【解决方案1】:

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

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

    【讨论】:

    • @huaiyan: +1 但它显然破坏了我为我的模式设置的所有其他“面部”设置(我尝试使用“java-mode-hook”)。它“起作用”,因为我看到了折叠的字符,但我失去了所有其他面部设置。
    猜你喜欢
    • 2016-10-26
    • 2017-03-10
    • 2020-09-06
    • 2016-06-16
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多