[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master f9e4dd5 376/433: Fix #26
From: |
Dmitry Gutov |
Subject: |
[elpa] master f9e4dd5 376/433: Fix #26 |
Date: |
Thu, 15 Mar 2018 19:44:39 -0400 (EDT) |
branch: master
commit f9e4dd544024a5172ee9c74ff6fa9d01fb8e83d8
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Fix #26
---
mmm-erb.el | 19 ++++++++++++++-----
mmm-region.el | 12 +++++++++++-
tests/html-erb.el | 3 +--
3 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/mmm-erb.el b/mmm-erb.el
index fbde445..e1a4e3d 100644
--- a/mmm-erb.el
+++ b/mmm-erb.el
@@ -79,15 +79,24 @@
(?= ejs-expression nil @ "<%=" @ " " _ " " @ "%>" @))
:creation-hook mmm-erb-mark-as-special)))
-;;;###autoload
-(define-derived-mode html-erb-mode html-mode "ERB-HTML"
- (setq sgml-unclosed-tags nil) ; Simplifies indentation logic.
- (set (make-local-variable 'mmm-indent-line-function) 'mmm-erb-indent-line))
-
(defun mmm-erb-mark-as-special ()
"Hook function to run in ERB and EJS tag regions."
(overlay-put mmm-current-overlay 'mmm-special-tag t))
+;;;###autoload
+(define-derived-mode html-erb-mode html-mode "ERB-HTML"
+ (setq sgml-unclosed-tags nil) ; Simplifies indentation logic.
+ (set (make-local-variable 'mmm-indent-line-function) 'mmm-erb-indent-line)
+ (add-hook 'mmm-after-syntax-propertize-functions
+ 'html-erb-after-syntax-propertize nil t))
+
+(defun html-erb-after-syntax-propertize (overlay mode beg end)
+ (when overlay
+ (with-silent-modifications
+ (funcall
+ (syntax-propertize-rules ("<\\|>" (0 ".")))
+ beg end))))
+
(defun mmm-erb-indent-line ()
"Indent the current line intelligently."
(interactive)
diff --git a/mmm-region.el b/mmm-region.el
index baef051..4239f9b 100644
--- a/mmm-region.el
+++ b/mmm-region.el
@@ -803,7 +803,15 @@ of the REGIONS covers START to STOP."
(if func (progn (funcall func) (point)) (point-min))
(point-min)))))
+(defvar mmm-after-syntax-propertize-functions nil
+ "List of functions to call after applying `syntax-table' text
+properties to a submode region. It is passed four arguments: the
+region overlay, the submode and the bounds of the region.")
+
(defun mmm-syntax-propertize-function (start stop)
+ "Composite function that applies `syntax-table' text properties.
+It iterates over all submode regions between START and STOP and
+calls each respective submode's `syntax-propertize-function'."
(let ((saved-mode mmm-current-submode)
(saved-ovl mmm-current-overlay))
(mmm-save-changed-local-variables
@@ -828,7 +836,9 @@ of the REGIONS covers START to STOP."
(funcall func beg end))
(font-lock-syntactic-keywords
(let ((syntax-propertize-function nil))
- (font-lock-fontify-syntactic-keywords-region beg
end)))))))
+ (font-lock-fontify-syntactic-keywords-region beg
end))))
+ (run-hook-with-args
'mmm-after-syntax-propertize-functions
+ mmm-current-overlay mode beg end))))
(mmm-regions-in start stop))
(mmm-set-current-pair saved-mode saved-ovl)
(mmm-set-local-variables (or saved-mode mmm-primary-mode) saved-ovl))))
diff --git a/tests/html-erb.el b/tests/html-erb.el
index eb7ec7c..ff974cc 100644
--- a/tests/html-erb.el
+++ b/tests/html-erb.el
@@ -71,13 +71,12 @@
(mmm-erb-assert-non-string-syntax))
(mmm-erb-deftest gt-inside-subregion-doesnt-change-nesting
- :expected-result (if mmm-erb-edge-emacs :failed :passed)
(insert "<% if 2 > 1 %><div class=\"foo\"/><% end %>")
(mmm-apply-all)
(mmm-erb-assert-string-syntax))
(mmm-erb-deftest lt-inside-subregion-doesnt-change-nesting
- :expected-result :failed
+ :expected-result (if mmm-erb-edge-emacs :passed :failed)
(insert "<% if 2 < 1 %><p>\"foo bar\"</p><% end %>")
(mmm-apply-all)
(mmm-erb-assert-non-string-syntax))
- [elpa] master 6e50485 268/433: Added html-php submode class., (continued)
- [elpa] master 6e50485 268/433: Added html-php submode class., Dmitry Gutov, 2018/03/15
- [elpa] master c6a30e3 251/433: Trimmed ancient docstring., Dmitry Gutov, 2018/03/15
- [elpa] master 30811bc 249/433: Added new files to be byte-compiled (Joe Kelsey), Dmitry Gutov, 2018/03/15
- [elpa] master 7b783ee 308/433: Don't confuse script tags with EJS tags, Dmitry Gutov, 2018/03/15
- [elpa] master 00c99c7 278/433: (lisp_LISP): Added mmm-myghty.el., Dmitry Gutov, 2018/03/15
- [elpa] master ad24c9d 275/433: * mmm-noweb.el (mmm-syntax-region-list), Dmitry Gutov, 2018/03/15
- [elpa] master a27d7af 329/433: Allow toggling whitespace-mode after initialization, Dmitry Gutov, 2018/03/15
- [elpa] master ce3cb79 367/433: * mmm-update-mode-info: bind `buffer-file-truename' to nil, Dmitry Gutov, 2018/03/15
- [elpa] master 37f6dea 396/433: mmm-indent-line: Use primary mode if submode ends right here, Dmitry Gutov, 2018/03/15
- [elpa] master 1b9406d 361/433: Released 0.5.0, Dmitry Gutov, 2018/03/15
- [elpa] master f9e4dd5 376/433: Fix #26,
Dmitry Gutov <=
- [elpa] master f5ea03a 399/433: Don't try to enable jit-lock in temp buffers, Dmitry Gutov, 2018/03/15
- [elpa] master 18bb050 392/433: Released 0.5.2, Dmitry Gutov, 2018/03/15
- [elpa] master 0cc4df5 410/433: Document mode transition hooks, Dmitry Gutov, 2018/03/15
- [elpa] master 8dcb066 414/433: Reword docstring & fix indentation, Dmitry Gutov, 2018/03/15
- [elpa] master c9a857a 407/433: Save font-lock-syntactic-face-function per major mode, Dmitry Gutov, 2018/03/15
- [elpa] master 545b85d 327/433: added more cc-mode variables to mmm-save-local-variables, Dmitry Gutov, 2018/03/15
- [elpa] master d58aacc 365/433: Fix mmm-add-to-major-mode-preferences docstring, Dmitry Gutov, 2018/03/15
- [elpa] master 3d83b62 383/433: Add mmm-defaults.el (#36), Dmitry Gutov, 2018/03/15
- [elpa] master 278ba52 386/433: Fix #37, Dmitry Gutov, 2018/03/15
- [elpa] master ed9e32c 242/433: * FAQ: Updated comments about other emacs variants., Dmitry Gutov, 2018/03/15