【问题标题】:Emacs: fold a single block of code at any indentation level, without relying on bracketsEmacs:在任何缩进级别折叠单个代码块,而不依赖于括号
【发布时间】:2019-06-13 04:50:29
【问题描述】:

(这个问题适用于任何语言——Python 和 Haskell 就是例子——它们可以让你通过缩进而不是括号来组织代码。这样的语言更具可读性并且编写时间更少,至少像我这样的人是这样认为的。 )

我正在阅读的代码有一些大的缩进段落,不适合一个屏幕,有时甚至十个屏幕(我使用大字体),如果我可以更容易看到发生了什么可以转到某行并按键盘快捷键隐藏后面的所有内容,直到下一行从相同位置开始或更左。

我为 Emacs 找到了许多代码折叠包,但似乎都遇到了至少一个问题:

  • 它们的功能很少,而且似乎维护不善
  • 他们依靠明确的括号(例如{{{ ... }}})来知道在哪里
  • 它们允许您折叠顶级代码,但不允许您从任意内部级别折叠
  • 它们允许您折叠内部层,但只能平行折叠 - 也就是说,如果您折叠 1 级块中的 2 级项目之一,您还必须折叠其余部分。

【问题讨论】:

标签: emacs accessibility indentation readability folding


【解决方案1】:

对于 Python,请使用 elpy - Emacs Python 开发环境。它有一个用于code folding 的内置模块:

Elpy 通过增强内置折叠次要模式提供代码折叠 隐藏。

当打开一个 python 缓冲区时,Elpy 会用 左边缘的箭头。单击箭头将折叠 对应的代码块。折叠的代码块可以通过 点击行尾的…按钮。

如果你不想使用鼠标,你可以达到同样的效果 用函数

C-c @ C-c (elpy-folding-toggle-at-point)

    Toggle folding for the thing at point, it can be a docstring, 
    a comment or a code block.

【讨论】:

  • 我是否记错了elpy 仅允许您在某些级别折叠,例如函数或类方法定义的顶部?当我写这个问题时,我希望能够以任何语言在任何级别折叠和展开代码,就像 JEdit 让你做的那样。
猜你喜欢
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多