aboutsummaryrefslogtreecommitdiffstats
path: root/emmet-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'emmet-mode.el')
-rw-r--r--emmet-mode.el53
1 files changed, 24 insertions, 29 deletions
diff --git a/emmet-mode.el b/emmet-mode.el
index b6a471b..90a0425 100644
--- a/emmet-mode.el
+++ b/emmet-mode.el
@@ -3067,12 +3067,13 @@ tbl))
(sib2 (emmet-transform-ast (caddr ast) tag-maker)))
(concat sib1 "\n" sib2))))))
+;; Indents text rigidly by inserting spaces
+;; Only matters if emmet-indent-after-insert is set to nil
(defun emmet-indent (text)
"Indent the text"
(if text
- (replace-regexp-in-string "\n" "\n " (concat "\n" text))
+ (replace-regexp-in-string "\n" (concat "\n" (make-string emmet-indentation ?\ )) (concat "\n" text))
nil))
-
(defvar emmet-lorem-words
'("lorem" "ipsum" "dolor" "sit" "amet," "consectetur" "adipiscing" "elit" "ut" "aliquam," "purus" "sit" "amet" "luctus" "venenatis,"
"lectus" "magna" "fringilla" "urna," "porttitor" "rhoncus" "dolor" "purus" "non" "enim" "praesent" "elementum" "facilisis" "leo,"
@@ -3499,16 +3500,10 @@ tbl))
: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.")
@@ -3559,17 +3554,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.")
@@ -3680,11 +3672,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)
@@ -3757,6 +3750,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)
@@ -3839,7 +3834,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))