emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 73bc7b5: Make hideshow.el work with Mhtml mode


From: Thien-Thi Nguyen
Subject: master 73bc7b5: Make hideshow.el work with Mhtml mode
Date: Fri, 30 Oct 2020 22:43:42 -0400 (EDT)

branch: master
commit 73bc7b543bfad54d50eb15943800dce12834efd6
Author: Thien-Thi Nguyen <ttn@gnu.org>
Commit: Thien-Thi Nguyen <ttn@gnuvola.org>

    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’.
---
 lisp/progmodes/hideshow.el   |  5 ++++-
 lisp/textmodes/mhtml-mode.el | 12 ++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index 625e08e..2ad66cc 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 54e2077..329f3e7 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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]