From 264e63ea70c69fd18b33f13e1837f12b36bcf8a7 Mon Sep 17 00:00:00 2001 From: flyingleafe Date: Wed, 1 Oct 2014 22:37:41 +0400 Subject: Fixed stack overflow error while checking for style tag and attr --- src/init.el | 8 ++++++++ src/mode-def.el | 33 +++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/init.el b/src/init.el index 8e1d7f9..c6095f1 100644 --- a/src/init.el +++ b/src/init.el @@ -65,6 +65,14 @@ ,then-form) ,@else-forms))) +(defmacro emmet-find (direction regexp &optional limit-of-search repeat-count) + "Regexp-search in given direction, returning the position (or nil) +and leaving the point in place." + `(save-excursion + (if (,(intern (concat "re-search-" direction)) + ,regexp ,limit-of-search t ,repeat-count) + (match-beginning 0)))) + (defun emmet-regex (regexp string refs) "Return a list of (`ref') matches for a `regex' on a `string' or nil." (if (string-match (concat "^" regexp "\\([^\n]*\\)$") string) diff --git a/src/mode-def.el b/src/mode-def.el index e0a22b9..533e98c 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -47,6 +47,12 @@ :type 'boolean :group 'emmet) +(defcustom emmet-use-style-tag-and-attr-detection t + "When true, enables detection of style tags and attributes in HTML +to provide proper CSS abbreviations completion." + :type 'boolean + :group 'emmet) + (defvar emmet-use-css-transform nil "When true, transform Emmet snippets into CSS, instead of the usual HTML.") (make-variable-buffer-local 'emmet-use-css-transform) @@ -56,6 +62,7 @@ e. g. without semicolons") (make-variable-buffer-local 'emmet-use-sass-syntax) + (defvar emmet-css-major-modes '(css-mode scss-mode @@ -81,14 +88,24 @@ e. g. without semicolons") new-pos)))))) (defun emmet-detect-style-tag-and-attr () - (let* ((qt "[\"']") - (not-qt "[^\"']") - (everything "\\(.\\|\n\\)*")) - (or - (and (looking-at (format "%s*%s" not-qt qt)) - (looking-back (format "style=%s%s*" qt not-qt))) ; style attr - (and (looking-at (format "%s" everything)) - (looking-back (format "") + (style-tag-begin "