自定义emacs nxml缩进

时间:2012-06-21 15:22:27

标签: emacs indentation

在过去的3年中,我的工作需要以xml格式编写和编辑配置文件。 xml标签中的内容已经发展得非常多,现在它已经变得像编程语言。不幸的是,emacs会将标签内的所有内容缩进到同一级别。像这样:

current emacs indentation in nxml mode

但是,如果我能够像下面那样缩进内容,那就太邪恶了:

how I wish emacs would ident it

我已经阅读了几个与自定义缩进相关的线程,但我仍然没有任何线索如何去做。

我尝试创建自定义主模式,但这样做会杀死所有语法颜色和缩进规则。理想情况下,我想做的只是修改nxml mayor模式缩进规则?不过,我不知道这个规则在哪里。

如果我可以为一些关键词添加颜色,例如“if”或“set”,那将是一个奖励。

我知道我所要求的是一份很重要的工作,所以我不是在这里要求一个明确的答案。我只是想找点帮助指出正确的方向。

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法可能是为标记内的语言编写新的主要模式,然后使用a multiple major modes package允许多个主要模式在同一文件中处于活动状态,因此包含的语言可以有自己的主要模式。

答案 1 :(得分:1)

您可能需要查看此示例。

(defun nxml-extra-space-indent ()
  (nxml-indent-line)
  (when (zerop (current-indentation))
    (indent-line-to 4)))
(setq indent-line-function 'nxml-extra-space-indent)

我根据现有的主要模式进行缩进,然后在行匹配某些条件时自定义缩进 我认为这是自定义缩进的最简单方法,因为您从现有的东西开始,并且您不需要知道如何实现特定模式的缩进逻辑。