为什么emacs中没有代码折叠?

时间:2010-03-08 06:17:13

标签: emacs folding

关于如何在emacs中获取代码折叠,有几个问题,而不必在评论中添加任何特殊字符,如“标记”。有人说“没有完美的解决方案。” 似乎可以通过解析正在编写的程序的源并查找匹配的括号或括号,或者基于缩进来完成它。您还可以使用使用不同方法的脚本组合 那么为什么人们普遍认为没有“完美”和直接的方式在emac中获得代码折叠? emacs或其体系结构中是否存在某些难以编程的内容?如果这很容易,经过这么多年聪明的人使用emacs,你会认为有人会写它。

7 个答案:

答案 0 :(得分:24)

您应该使用Hideshow(hs-minor-mode)和fold-dwim.el一起玩。它完全按照你的建议 - 寻找匹配的大括号/ parens,并且可以设置为缩减缩进。

对于大多数常见语言,有一个强大的折叠解决方案,如果没有,所有折叠包都是高度可定制的。事实上,唯一的缺点是折叠方法的扩散(fold-dwim对此有很大的帮助);我曾经认为,因为没有人能指出我一个明确的解决方案,折叠是艰难的或不可能的 - 实际上,事实恰恰相反。你只需要做一点实验,看看什么最适合你。

我使用了folding.el(例如,将.emacs中的内容组合在一起),outline-minor-mode,以及现在的Hideshow。有一些机会,它们都不会完全按照您想要的方式工作(例如,您可能需要设置轮廓正则表达式,或者为folding.el定义折叠标记),但事实证明这很简单。默认的键绑定可能有些巴洛克式,但这可以通过fold-dwim和/或hideshow-org来解决(强烈推荐用于Hideshow,参见Emacswiki隐藏页面;您还可以模仿hideshow-org的行为对于其他折叠模式与一些快速和脏的elisp和fold-dwim)。一旦你找到了你喜欢的设置,只需通过钩子或缓冲区局部变量自动打开它,并观察你的代码折叠:)(见下文,注意边缘中可点击的+)。

alt text http://img198.imageshack.us/img198/4029/screenshot1oc.png

答案 1 :(得分:11)

你应该看看CEDET。它可以很好地进行代码折叠,以及许多其他花哨的功能,如果你从IDE切换到Emacs,你可能正在寻找它。

http://cedet.sourceforge.net/

具体来说,寻找“global-semantic-tag-folding-mode”

答案 2 :(得分:8)

您不需要任何额外的内容,只需为要折叠的文件类型启用outline-minor-mode。

答案 3 :(得分:3)

答案 4 :(得分:1)

我已经使用folding-mode很长一段时间了。使用自动插入模板和abrevs,它可以很好地为我提供一些很好的代码块。

能够生产折叠的缓冲区(用于打印/发送电子邮件)一直是我的愿望。我的一些折叠标签用于隐藏安全/密码。

答案 5 :(得分:0)

我知道这有点老了,但对我来说origami.el开箱即用。

答案 6 :(得分:-1)

是最后在emacs中存在代码折叠。尝试在melpa.org包库中使用yafolding。