aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflyingleafe <flyingleafe@gmail.com>2014-08-23 01:20:57 +0600
committerflyingleafe <flyingleafe@gmail.com>2014-08-23 01:20:57 +0600
commitc7d0c079d603c1bc23e506bcc3ea1e3a6c62656c (patch)
treee8e163a16ba59f0f441b3c4c2535b9b516976679
parent7722c7703404b36fb9d931246ca2a9106ad004a9 (diff)
downloademmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.tar.lz
emmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.tar.xz
emmet-mode-c7d0c079d603c1bc23e506bcc3ea1e3a6c62656c.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 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)