用于编辑文件的Emacs模式,其中缩进意味着结构

MJD*_*MJD 9 emacs indentation

我想在Emacs中编辑一个很大的毛茸茸的YAML文件.压缩隐含文件结构:如果行A缩进十个空格,则A开始一个包含每个后续行的段,该行由十个以上的空格缩进.这是一个相当常见的约定,远远超出YAML.

我真正想要的是一个emacs模式,它具有尊重这种结构的定义.例如:

  • 我想forward-sexp跳过一个性别,其中通过缩进而不是通过匹配括号来暗示性别.同样,我希望有其他导航命令移动到当前部分结束后的行,到当前部分的下一个兄弟部分,依此类推.
  • 我希望有一个命令来折叠当前部分,或除了当前部分之外的所有部分,类似于outline-mode可以折叠当前轮廓部分的方式,但是缩进定义了部分.
  • 我希望模式行能够显示有关我所在部分的有用信息,如缩进所暗示的那样.
  • 我希望有一个选项可以自动突出显示当前行的祖先所有行.
  • 其他我没有想过的事情.

我看过了yaml-mode,但它没有做任何有用的事情.有几个人建议我尝试Python模式,但它不能很好地用于此目的.

一般的缩进行模式似乎是很久以前有人会写的东西,但如果它存在,我找不到它.或者也许有一些方法来破解outline-mode我想要的方式?

谢谢你的任何建议.

MJD*_*MJD 3

使用outline-mode并设置outline-regexp为并" *"不能完全满足我的需求,但它确实得到了相当多的东西。例如,默认情况下hide-subtree绑定到的C-c C-d似乎会按照我上面描述的方式折叠当前部分。outline-forward-same-level,必然C-c C-f,也做我想要的。

\n\n

有些事情仍然不太正常。如果我发现任何其他有用的方法来调整,我将修改这个答案outline-mode

\n\n

这是对 Jos\xc3\xa9 Antonio Ortega Ruiz 的建议的轻微修改。

\n