aboutsummaryrefslogtreecommitdiffstats
path: root/src/mode-def.el
diff options
context:
space:
mode:
Diffstat (limited to 'src/mode-def.el')
-rw-r--r--src/mode-def.el56
1 files changed, 21 insertions, 35 deletions
diff --git a/src/mode-def.el b/src/mode-def.el
index 82c74fd..3324cba 100644
--- a/src/mode-def.el
+++ b/src/mode-def.el
@@ -5,14 +5,6 @@
"Customization group for emmet-mode."
:group 'convenience)
-(defun emmet-check-for-markup (bound)
- (save-excursion
- (save-match-data
- (goto-char (line-beginning-position))
- (if (re-search-forward "\\(\\([ \t]+\\)?<[^>]*?>\\)+" bound t)
- t
- nil))))
-
(defun emmet-expr-on-line ()
"Extract a emmet expression and the corresponding bounds
for the current line."
@@ -39,16 +31,10 @@
:type '(number :tag "Spaces")
:group 'emmet)
-(defun emmet-prettify (markup indent)
- (destructuring-bind (first-col tab)
- (if indent-tabs-mode
- (list (apply #'concat (loop for i from 1 to (/ indent tab-width) collect "\t")) "\t")
- (list (format (format "%%%ds" indent) "")
- (format (format "%%%ds" emmet-indentation) "")))
- (let ((internal-indent-1 " "))
- (concat first-col
- (replace-regexp-in-string "\n" (concat "\n" first-col)
- (replace-regexp-in-string internal-indent-1 tab markup))))))
+(defcustom emmet-indent-after-insert t
+ "Indent region after insert?"
+ :type 'boolean
+ :group 'emmet)
(defvar emmet-use-css-transform nil
"When true, transform Emmet snippets into CSS, instead of the usual HTML.")
@@ -99,17 +85,14 @@ For more information see `emmet-mode'."
(if expr
(let ((markup (emmet-transform (first expr))))
(when markup
- (let ((pretty (if (emmet-check-for-markup here)
- markup
- (emmet-prettify markup (current-indentation)))))
- (when pretty
- (delete-region (second expr) (third expr))
- (emmet-insert-and-flash pretty)
- (when (and emmet-move-cursor-after-expanding (emmet-html-text-p markup))
- (let ((p (point)))
- (goto-char
- (+ (- p (length pretty))
- (emmet-html-next-insert-point pretty))))))))))))))
+ (delete-region (second expr) (third expr))
+ (emmet-insert-and-flash markup)
+ (let ((output-markup (buffer-substring-no-properties (second expr) (point))))
+ (when (and emmet-move-cursor-after-expanding (emmet-html-text-p markup))
+ (let ((p (point)))
+ (goto-char
+ (+ (- p (length output-markup))
+ (emmet-html-next-insert-point output-markup)))))))))))))
(defvar emmet-mode-keymap nil
"Keymap for emmet minor mode.")
@@ -220,11 +203,12 @@ See also `emmet-expand-line'."
(when markup
(delete-region (line-beginning-position) (overlay-end ovli))
(emmet-insert-and-flash markup)
- (when (and emmet-move-cursor-after-expanding (emmet-html-text-p markup))
- (let ((p (point)))
- (goto-char
- (+ (- p (length markup))
- (emmet-html-next-insert-point markup)))))))))
+ (let ((output-markup (buffer-substring-no-properties (line-beginning-position) (point))))
+ (when (and emmet-move-cursor-after-expanding (emmet-html-text-p markup))
+ (let ((p (point)))
+ (goto-char
+ (+ (- p (length output-markup))
+ (emmet-html-next-insert-point output-markup))))))))))
(emmet-preview-abort))
(defun emmet-html-next-insert-point (str)
@@ -297,6 +281,8 @@ cursor position will be moved to after the first quote."
(emmet-remove-flash-ovl (current-buffer))
(let ((here (point)))
(insert markup)
+ (if emmet-indent-after-insert
+ (indent-region here (point)))
(setq emmet-flash-ovl (make-overlay here (point)))
(overlay-put emmet-flash-ovl 'face 'emmet-preview-output)
(when (< 0 emmet-insert-flash-time)
@@ -379,7 +365,7 @@ accept it or skip it."
(overlay-end emmet-preview-input))))
(let ((output (emmet-transform string)))
(when output
- (emmet-prettify output indent)))))
+ output))))
(defun emmet-update-preview (indent)
(let* ((pretty (emmet-preview-transformed indent))