emacs是否为html模式提供隐藏显示

时间:2014-01-24 20:42:03

标签: html emacs elisp

emacs是否具有html的隐藏显示代码折叠功能?当我使用org模式时,我有它,但似乎无法在nXML / html端找到它。

1 个答案:

答案 0 :(得分:0)

我为mhtml-mode编写了此代码,它工作得很好,它可以按标签折叠HTML以及嵌入式CSS和JS。只需将其添加到您的emacs配置文件中,即可开始使用。

;; When called this automatically detects the submode at the current location.
;; It will then either forward to end of tag(HTML) or end of code block(JS/CSS).
;; This will be passed to hs-minor-mode to properly navigate and fold the code.
(defun mhtml-forward (arg)
  (interactive "P")
  (pcase (get-text-property (point) `mhtml-submode)
    (`nil (sgml-skip-tag-forward 1))
    (submode (forward-sexp))))

;; Adds the tag and curly-brace detection to hs-minor-mode for mhtml.
(add-to-list 'hs-special-modes-alist
             '(mhtml-mode
               "{\\|<[^/>]*?"
               "}\\|</[^/>]*[^/]>"
               "<!--"
               mhtml-forward
               nil))

正则表达式细目:

  • "{\\|<[^/>]*?":匹配{或任何打开的HTML标记。它与开头标签中的结尾>匹配,但不包括结尾<script>。这样就可以将<style>"}\\|</[^/>]*[^/]>"标签视为HTML标签,而不是JS或CSS。

  • }:匹配Popen或结束标记。