diff options
author | Thien-Thi Nguyen <ttn@gnu.org> | 2020-10-30 22:40:11 -0400 |
---|---|---|
committer | Thien-Thi Nguyen <ttn@gnuvola.org> | 2020-10-30 22:40:11 -0400 |
commit | 73bc7b543bfad54d50eb15943800dce12834efd6 (patch) | |
tree | ca3f9dd04d2d4d85390b5821aba1b7e6f6d1df63 | |
parent | 74c45a62e1e48d7c52dc513b6911e65dcc38aa23 (diff) | |
download | emacs-73bc7b543bfad54d50eb15943800dce12834efd6.tar.gz |
Make hideshow.el work with Mhtml mode
Suggested by Ian Williams <norbekian9@gmail.com>.
* lisp/textmodes/mhtml-mode.el: Require ‘pcase’ when compiling.
(mhtml-forward): New func.
* lisp/progmodes/hideshow.el (hs-special-modes-alist):
Add entry for ‘mhtml-mode’.
-rw-r--r-- | lisp/progmodes/hideshow.el | 5 | ||||
-rw-r--r-- | lisp/textmodes/mhtml-mode.el | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 625e08e4d79..2ad66ccc5e0 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el @@ -264,7 +264,10 @@ This has effect only if `search-invisible' is set to `open'." (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) - (js-mode "{" "}" "/[*/]" nil))) + (js-mode "{" "}" "/[*/]" nil) + (mhtml-mode "{\\|<[^/>]*?" "}\\|</[^/>]*[^/]>" "<!--" mhtml-forward nil) + ;; Add more support here. + )) "Alist for initializing the hideshow variables for different modes. Each element has the form (MODE START END COMMENT-START FORWARD-SEXP-FUNC ADJUST-BEG-FUNC). diff --git a/lisp/textmodes/mhtml-mode.el b/lisp/textmodes/mhtml-mode.el index 54e20779bdc..329f3e7241d 100644 --- a/lisp/textmodes/mhtml-mode.el +++ b/lisp/textmodes/mhtml-mode.el @@ -22,6 +22,7 @@ ;;; Code: (eval-when-compile (require 'cl-lib)) +(eval-when-compile (require 'pcase)) (require 'sgml-mode) (require 'js) (require 'css-mode) @@ -303,6 +304,17 @@ This is used by `mhtml--pre-command'.") (flyspell-generic-progmode-verify) t))) +;; Support for hideshow.el (see `hs-special-modes-alist'). +(defun mhtml-forward (arg) + "Move point forward past a structured expression. +If point is on a tag, move to the end of the tag. +Otherwise, this calls `forward-sexp'. +Prefix arg specifies how many times to move (default 1)." + (interactive "P") + (pcase (get-text-property (point) 'mhtml-submode) + ('nil (sgml-skip-tag-forward arg)) + (submode (forward-sexp arg)))) + ;;;###autoload (define-derived-mode mhtml-mode html-mode '((sgml-xml-mode "XHTML+" "HTML+") (:eval (mhtml--submode-lighter))) |