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

标签 emacs folding

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

最佳答案

您应该使用 Hideshow ( hs-minor-mode ) 和 fold-dwim.el 结合使用.它完全按照您的建议进行 - 查找匹配的大括号/括号,并且可以设置为退回到缩进。

对于大多数常用语言,有一个强大的折叠解决方案,如果没有,所有的折叠包都是高度可定制的。事实上,唯一的缺点是折叠方法的激增(fold-dwim 对此有很大帮助);我曾经认为,因为没有人能指出一个明确的解决方案,折叠是困难的或不可能的——事实上,恰恰相反。您只需要进行一些试验,看看哪种方法最适合您。

我用过folding.el (例如,对我的 .emacs 中的内容进行分组),outline-minor-mode ,现在隐藏。有可能它们都不能完全按照您想要的方式工作(例如,您可能需要设置大纲正则表达式,或为 folding.el 定义折叠标记),但事实证明这很容易。默认的键绑定(bind)可能有点巴洛克风格,但 fold-dwim 对此进行了补救。和/或 hideshow-org (强烈推荐用于 Hideshow,参见 Emacswiki hideshow 页面;您还可以使用一些快速而简单的 elisp 和 hideshow-org 来模仿 fold-dwim 的其他折叠模式的行为)。一旦你确定了你喜欢的设置,只需通过钩子(Hook)或缓冲区局部变量自动打开它,然后观察你的代码折叠:)(见下文,注意可点击的 + 在页边空白处)。

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

关于emacs - 为什么emacs中没有代码折叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399612/

相关文章:

emacs - 如何从 org-faces.el 覆盖模式行自定义?

emacs - 让 Emacs 识别自定义数学定界符,以便它可以相应地为面部着色

emacs - Emacs:创建新框架时,set-frame-height不起作用

css - VSCode 中 CSS 的代码折叠

python - vim 折叠行中的语法高亮 Python

emacs - 在elisp中测试平台?

regex - 如何在vim中折叠所有出现的正则表达式?

javascript - JavaScript 文件中的语法折叠在 Vim 中不起作用

python - 如何防止使用带有 python-mode/rope 和 SimpylFold 的 vim 重构后自动重新折叠 python 代码

python - Emacs Python 解释器设置不正确