aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflyingleafe <flyingleafe@gmail.com>2014-08-23 01:20:57 +0600
committerDave Mayo <pobocks@gmail.com>2014-08-24 17:07:31 -0400
commitb07898b62050eb08141c00fd1e8975f5ada0a197 (patch)
tree6d0241bbf74d844d251ffcc376198d6edaf27331
parentec316a8ea021614b3750e87a4dd9bff4a1f27191 (diff)
downloademmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.tar.lz
emmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.tar.xz
emmet-mode-b07898b62050eb08141c00fd1e8975f5ada0a197.zip
Fixed cursor positioning in css snippets
-rw-r--r--emmet-mode.el13
-rw-r--r--src/mode-def.el13
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)