Emacs: 隐藏显示模式(HideShow)是否适用于 XML 模式(sgml-mode)?

8

我在cc-mode缓冲区中使用hideshow.el来折叠我不需要查看的文件部分。

如果能在XML文档中也能做到这一点就太好了。我使用emacs 22.2.1和内置的sgml-mode进行xml编辑。但是我没有成功地将hideshow与XML一起使用。我的意思是,我打开了次要模式,但按键没有效果。哦,除了一个XML注释可以折叠之外,其他元素都不行。

有人成功地做到了吗?
有什么推荐吗?


编辑:我敢打赌,如果我将sgml-mode元素添加到hs-special-modes-alist中,它应该可以工作。我需要一个start-block的正则表达式。有人做过这个吗?


我还没有转移到nxml-mode。我应该吗?它是否支持“折叠”或隐藏?

1个回答

12

回答自己的问题...我正在使用类似这样的东西。看起来有效。

;; Fix XML folding
(add-to-list 'hs-special-modes-alist
             (list 'nxml-mode
                   "<!--\\|<[^/>]*[^/]>"
                   "-->\\|</[^/>]*[^/]>"
                   "<!--"
                   'nxml-forward-element
                   nil))

;; Fix HTML folding
(dolist (mode '(sgml-mode
                html-mode
                html-erb-mode))
  (add-to-list 'hs-special-modes-alist
               (list mode
                     "<!--\\|<[^/>]*[^/]>"
                     "-->\\|</[^/>]*[^/]>"
                     "<!--"
                     'sgml-skip-tag-forward
                     nil)))

非常好:你能否将此合并到下一个Emacs发行版中? - MarcH
/ 是 XML 属性值的有效字符。因此,START 正则表达式可能会破坏一些 XML,例如如果属性包含 base64 数据 ((. - gavenkoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接