代码之家  ›  专栏  ›  技术社区  ›  ppbitb

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

  •  26
  • ppbitb  · 技术社区  · 15 年前

    关于如何在emacs中进行代码折叠,有几个问题,例如不必在注释中添加任何特殊字符(如“markers”)。有人说“没有完美的解决方案”。
    似乎可以通过解析正在编写的程序的源代码并寻找匹配的括号或括号来完成,或者基于缩进来完成。您还可以使用使用不同方法的脚本组合。
    那么,为什么大家普遍认为emac中没有“完美”和直接的方法来实现代码折叠呢?emacs或其体系结构中是否存在使编程变得困难的东西?如果这很简单,那么多年来聪明的人使用emacs之后,你会认为有人会写它。

    6 回复  |  直到 7 年前
        1
  •  24
  •   Mirzhan Irkegulov    12 年前

    你应该玩躲猫猫( hs-minor-mode )结合 fold-dwim.el . 它完全按照您的建议执行——寻找匹配的大括号/括号,并可以设置为返回缩进。

    对于大多数通用语言来说,有一个健壮的折叠解决方案,如果没有,所有的折叠包都是高度可定制的。事实上,唯一的缺点是折叠方法的泛滥( fold-dwim 在这方面有很大帮助;我曾经认为,因为没有人能给我指一个确定的解决方案,所以折叠是困难的或不可能的——事实上,恰恰相反。你只需要做点实验,看看什么对你最有效。

    我已经用过 folding.el (例如,在我的 .emacs ) outline-minor-mode ,现在隐藏起来。有可能它们都不能完全按照您希望的方式工作(例如,您可能需要设置一个大纲regex,或者为 福尔丁 )但结果很容易。默认的键绑定可以有点巴洛克风格,但这可以通过 折迭双波长扫描 和/或 hideshow-org (强烈推荐用于隐藏,请参阅emacswiki隐藏页面;您还可以模拟 HIDESWORO ORG 其他折叠模式的行为 折迭双波长扫描 )一旦你确定了你的首选设置,只要通过钩子或缓冲区本地变量自动打开它,并看着你的代码折叠起来:)(见下面,注意点击 + 在空白处)。

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

        2
  •  11
  •   rryan    15 年前

    你应该调查一下塞德。它可以很好地进行代码折叠,如果您从IDE切换到Emacs,那么您可能会寻找许多其他有趣的特性。

    http://cedet.sourceforge.net/

    具体来说,寻找“全局语义标签折叠模式”

        3
  •  8
  •   Hamza Yerlikaya    15 年前

    您不需要任何额外的功能,只需为要折叠的文件类型启用大纲次要模式。

        4
  •  3
  •   imz -- Ivan Zakharyaschev    7 年前

    但事实上,emacs有多种解决方案;我在 http://en.wikipedia.org/w/index.php?title=Code_folding&oldid=375300945#cite_note-2 .

    尽管如此,我还是缺少了一些东西:在某些情况下,我想结合几种机制:例如,对于标记,我想使用基于大纲的折叠(用于节)和基于缩进的折叠(用于引号、代码块等),以便不必麻烦实现一个完整的语法分析器价格下跌。

    它们在这里:

    emacs中基于令牌的折叠

    Emacs中基于令牌的折叠由 folding minor mode .

    emacs中基于缩进的折叠

    可以使用 set-selective-display 函数根据缩进级别隐藏行,如 Universal code folding 注意事项。

    emacs中与语法相关的折叠

    Emacs中的语法相关折叠受以下支持:

    几个折叠机制由 fold-dwim 接口。

    也见 http://www.emacswiki.org/emacs/CategoryHideStuff .

    emacs中用户选择区域的折叠

    在emacs中,用户选择区域的折叠由 hide-region-hide 命令。

        5
  •  1
  •   hpavc    15 年前

    我一直在用 folding-mode 一段时间了。有了自动插入模板和abrevs,它对我来说非常适合一些漂亮的代码块。

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

        6
  •  -1
  •   animesh pathak    9 年前

    是的,在Emacs中最后有代码折叠。试试看melpa.org软件包库中的yafolding。

    推荐文章