aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mode-def.el7
-rw-r--r--src/test.el23
2 files changed, 26 insertions, 4 deletions
diff --git a/src/mode-def.el b/src/mode-def.el
index b3c7541..418be9c 100644
--- a/src/mode-def.el
+++ b/src/mode-def.el
@@ -19,7 +19,6 @@
"Find the left bound of an emmet expr"
(save-excursion (save-match-data
(let ((char (char-before))
- (last-gt (point))
(in-style-attr (looking-back "style=[\"'][^\"']*")))
(while char
(cond ((and in-style-attr (member char '(?\" ?\')))
@@ -28,9 +27,9 @@
(with-syntax-table (standard-syntax-table)
(backward-sexp) (setq char (char-before))))
((eq char ?\>)
- (setq last-gt (point)) (backward-char) (setq char (char-before)))
- ((eq char ?\<)
- (goto-char last-gt) (setq char nil))
+ (if (looking-back "<[^>]+>" (line-beginning-position))
+ (setq char nil)
+ (progn (backward-char) (setq char (char-before)))))
((not (string-match-p "[[:space:]\n;]" (string char)))
(backward-char) (setq char (char-before)))
(t
diff --git a/src/test.el b/src/test.el
index 28b7db4..75398af 100644
--- a/src/test.el
+++ b/src/test.el
@@ -648,5 +648,28 @@
#'emmet-wrap-with-markup-test
'((("div>ul>li" "I am some\nmultiline\n text") . "<div>\n <ul>\n <li>I am some\n multiline\n text</li>\n </ul>\n</div>")))
+;; Regression test for #54 (broken emmet-find-left-bound behavior
+;; after tag with attributes)
+(defun emmet-regression-54-test (lis)
+ (let ((es (car lis))
+ (emmet-preview-default nil)
+ (emmet-indent-after-insert nil))
+ (with-temp-buffer
+ (emmet-mode 1)
+ (sgml-mode)
+ (insert "<div class=\"broken\">")
+ (insert es)
+ (emmet-expand-line nil)
+ (buffer-string))))
+
+(emmet-run-test-case "Regression 54 with span"
+ #'emmet-regression-54-test
+ '((("span") . "<div class=\"broken\"><span></span>")))
+
+(emmet-run-test-case "Regression 54 with complex span"
+ #'emmet-regression-54-test
+ '((("span.whut[thing=\"stuff\"]{Huh?}") . "<div class=\"broken\"><span class=\"whut\" thing=\"stuff\">Huh?</span>")))
+
+
;; start
(emmet-test-cases)