Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么emacs中没有代码折叠?_Emacs_Folding - Fatal编程技术网

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

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

关于如何在emacs中进行代码折叠,而不必在注释中添加任何特殊字符,例如“markers”,还有几个问题。有人说“没有完美的解决方案”。
似乎可以通过解析正在编写的程序的源代码并查找匹配的括号或括号来完成,或者根据缩进来完成。您还可以使用使用不同方法的脚本组合。

那么,为什么人们普遍认为在emac中没有“完美”和简单的方法来实现代码折叠呢?emacs或其体系结构中是否存在使编程变得困难的东西?如果这很容易,那么经过这么多年的聪明人使用emacs,你会认为有人会写它。

你应该看看CEDET。它可以很好地进行代码折叠,如果您要从IDE切换到Emacs,则可能需要许多其他奇特的特性


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

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

您应该使用Hideshow()和。它完全按照您的建议执行--查找匹配的大括号/括号,并且可以设置为返回缩进

对于大多数常见语言,都有一个强大的折叠解决方案,如果没有,所有的折叠包都是高度可定制的。事实上,唯一的缺点是折叠方法的激增(
folddwim
在这方面帮助很大);我曾经认为,因为没有人能给我一个确定的解决方案,折叠是困难的或不可能的——事实上,事实恰恰相反。你只需要做一点实验,看看什么最适合你

我使用了
folding.el
(例如,在我的
.emacs
中对内容进行分组),
大纲次要模式
,现在隐藏。它们中的任何一个都可能无法完全按照您希望的方式立即运行(例如,您可能需要设置一个大纲正则表达式,或者为
folding.el
)定义折叠标记),但事实证明这很容易。默认的键绑定可能有点巴洛克风格,但这可以通过
折叠dwim
和/或
隐藏组织
进行修正(强烈建议使用隐藏组织,请参阅Emacswiki隐藏页面;您还可以使用一些快速且肮脏的elisp和
折叠dwim>模拟其他折叠模式下的
隐藏组织的行为)。一旦您确定了首选设置,只需通过挂钩或缓冲区局部变量自动打开它,并观察代码折叠:)(请参见下面,注意页边空白处的可单击的
+

我已经用了很长时间了。有了自动插入模板和abrevs,我可以很好地使用一些代码块


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

但事实上,Emacs有多种解决方案;我在网站上列出了其中一些(我碰巧遇到的)

尽管如此,我还是缺少一些东西:在某些情况下,我希望结合几种机制:例如,对于标记,我希望使用基于大纲的折叠(对于部分)和基于缩进的折叠(对于引用、代码块等)——这样就不用为实现完整的标记解析器而烦恼了

这是:

Emacs中基于令牌的折叠 Emacs中基于令牌的折叠由

Emacs中基于压痕的折叠 可以使用Emacs中的
set selective display
功能根据缩进级别隐藏行,如注释所示

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

  • 模型与模式 对于专门的“大纲”-语法

  • 对于某些编程语言,采用次要模式

  • 而且

    • 通过小调模式和 指挥 ,
    • 以及对于JavaDoc或Doxygen注释
    • 指挥部
    • 图书馆 在相应的语言特定模式中,也可能在特定语法的其他模式中
多个折叠机构由 接口

另见

在Emacs中折叠用户选择的区域
Emacs中用户选择区域的折叠由命令实现。

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

我知道这有点旧,但对我来说,它在开箱即用的情况下工作得非常好。

因为“真正的程序员”不需要代码折叠!事实上,这很容易,每个人都写自己的。@fuzzy“真正的程序员”使用磁化的针和稳定的手。()口齿不清诅咒的一个很好的例子。()@JarrodRoberson-当然“真正的程序员”应该使用
窄到区域
;)我本以为大纲小调模式是可以接受的答案,而不是cedet,因为它内置了emacs。)很酷-我不知道这件事。我一直在寻找一种在markdown模式下折叠标题的方法,ala org-mode.Outline模式用于标题,这不一定适合代码编辑:通常,代码块是打开和关闭的,块之间可能有一些东西。这不是基于标题的解决方案可以实现的。我喜欢将此与
outshone.el
包结合使用。尽管到目前为止我只在
.emacs
中使用过它,但由于某些原因,即使对于python和lua等流行语言,也没有完美的hs-minor模式设置。此外,与其他编辑器(如vim)相比,缩进(=选择性显示)的回退有点过于原始。我是emacs用户多年,一直在使用您的所有建议,但我同意原始海报。也值得一看。