]> git.eshelyaron.com Git - emacs.git/commitdiff
Make hideshow.el work with Mhtml mode
authorThien-Thi Nguyen <ttn@gnu.org>
Sat, 31 Oct 2020 02:40:11 +0000 (22:40 -0400)
committerThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 31 Oct 2020 02:40:11 +0000 (22:40 -0400)
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’.

lisp/progmodes/hideshow.el
lisp/textmodes/mhtml-mode.el

index 625e08e4d797387c4516b2df21f2e1c89c073f05..2ad66ccc5e0a13a3c66ee2073de4fcec47fab183 100644 (file)
@@ -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).
index 54e20779bdc45b0e3663f2925f76e967957b1957..329f3e7241d6df92306737bf6a1135adeab7cfba 100644 (file)
@@ -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)))