diff options
author | flyingleafe <flyingleafe@gmail.com> | 2014-08-23 01:20:57 +0600 |
---|---|---|
committer | Dave Mayo <pobocks@gmail.com> | 2014-08-24 17:07:31 -0400 |
commit | b07898b62050eb08141c00fd1e8975f5ada0a197 (patch) | |
tree | 6d0241bbf74d844d251ffcc376198d6edaf27331 | |
parent | ec316a8ea021614b3750e87a4dd9bff4a1f27191 (diff) | |
download | emmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.tar.lz emmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.tar.xz emmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.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 b6d3edf..60bd0c6 100644 --- a/emmet-mode.el +++ b/emmet-mode.el @@ -3584,11 +3584,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 @@ -3718,6 +3721,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 8b60374..f2f8b2c 100644 --- a/src/mode-def.el +++ b/src/mode-def.el @@ -95,11 +95,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 @@ -229,6 +232,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) |