diff options
Diffstat (limited to 'emmet-mode.el')
-rw-r--r-- | emmet-mode.el | 53 |
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)) |