diff options
author | flyingleafe <flyingleafe@gmail.com> | 2014-08-23 01:20:57 +0600 |
---|---|---|
committer | flyingleafe <flyingleafe@gmail.com> | 2014-08-23 01:20:57 +0600 |
commit | c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c (patch) | |
tree | e8e163a16ba59f0f441b3c4c2535b9b516976679 | |
parent | 7722c7703404b36fb9d931246ca2a9106ad004a9 (diff) | |
download | emmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.tar.lz emmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.tar.xz emmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.zip |
Fixed cursor positioning in css snippets
-rw-r--r-- | emmet-mode.el | 13 | ||||
-rw-r--r-- | src/mode-def.el | 13 |
2 files changed, 20 insertions, 6 deletions
diff --git a/emmet-mode.el b/emmet-mode.el index e49c9e2..c3bfc0b 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -3583,11 +3583,14 @@ For more information see `emmet-mode'." (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))) + (when emmet-move-cursor-after-expanding + (let ((p (point)) + (new-pos (if (emmet-html-text-p output-markup) + (emmet-html-next-insert-point output-markup) + (emmet-css-next-insert-point output-markup)))) (goto-char (+ (- p (length output-markup)) - (emmet-html-next-insert-point output-markup))))))))))))) + new-pos)))))))))))) (defvar emmet-mode-keymap (let @@ -3717,6 +3720,10 @@ See also `emmet-expand-line'." (emmet-aif (re-search-forward ".+</" nil t) (- it 3)) ; try to place cursor after tag contents (length str)))) ; ok, just go to the end +(defun emmet-css-next-insert-point (str) + (string-match ": *\\(;\\)$" str) + (or (match-beginning 1) (length str))) + (defvar emmet-flash-ovl nil) (make-variable-buffer-local 'emmet-flash-ovl) diff --git a/src/mode-def.el b/src/mode-def.el index 3094498..ddd580e 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -94,11 +94,14 @@ For more information see `emmet-mode'." (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))) + (when emmet-move-cursor-after-expanding + (let ((p (point)) + (new-pos (if (emmet-html-text-p output-markup) + (emmet-html-next-insert-point output-markup) + (emmet-css-next-insert-point output-markup)))) (goto-char (+ (- p (length output-markup)) - (emmet-html-next-insert-point output-markup))))))))))))) + new-pos)))))))))))) (defvar emmet-mode-keymap (let @@ -228,6 +231,10 @@ See also `emmet-expand-line'." (emmet-aif (re-search-forward ".+</" nil t) (- it 3)) ; try to place cursor after tag contents (length str)))) ; ok, just go to the end +(defun emmet-css-next-insert-point (str) + (string-match ": *\\(;\\)$" str) + (or (match-beginning 1) (length str))) + (defvar emmet-flash-ovl nil) (make-variable-buffer-local 'emmet-flash-ovl) |