aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsmihica <smihica@gmail.com>2013-03-24 04:25:40 +0900
committersmihica <smihica@gmail.com>2013-03-24 04:37:10 +0900
commite353327def110e43716be349c9cf79420a985ca5 (patch)
tree5304e4cabf3525b06dc13be79f8b7ccc8a5df323 /src
parent62dd4214c839aa9124f9b5d13d8dff2bdb2fe180 (diff)
downloademmet-mode-e353327def110e43716be349c9cf79420a985ca5.tar.lz
emmet-mode-e353327def110e43716be349c9cf79420a985ca5.tar.xz
emmet-mode-e353327def110e43716be349c9cf79420a985ca5.zip
Supported subset of emmet's CSS Abbreviations. You can test it in css-mode.
Diffstat (limited to 'src')
-rw-r--r--src/css-abbrev.el8
-rw-r--r--src/html-abbrev.el7
-rw-r--r--src/mode-def.el32
-rw-r--r--src/test.el4
4 files changed, 32 insertions, 19 deletions
diff --git a/src/css-abbrev.el b/src/css-abbrev.el
index 8530aa8..00c182f 100644
--- a/src/css-abbrev.el
+++ b/src/css-abbrev.el
@@ -123,7 +123,7 @@
(nthcdr ,idx-max ,args) " "))))
,body)))))))
-(defun zencoding-css-transform (exprs)
+(defun zencoding-css-transform-exprs (exprs)
(zencoding-join-string
(mapcar
#'(lambda (expr)
@@ -154,4 +154,8 @@
(cdr expr)) " ")
";")))
exprs)
- "\n")) \ No newline at end of file
+ "\n"))
+
+
+(defun zencoding-css-transform (input)
+ (zencoding-css-transform-exprs (zencoding-css-expr input))) \ No newline at end of file
diff --git a/src/html-abbrev.el b/src/html-abbrev.el
index 8f5cba9..db2e83e 100644
--- a/src/html-abbrev.el
+++ b/src/html-abbrev.el
@@ -557,7 +557,12 @@
input
(zencoding-process-filter (zencoding-default-filter) input))))))
-(defun zencoding-transform (ast-with-filters)
+(defun zencoding-html-transform (input)
+ (let ((ast (car (zencoding-expr input))))
+ (when (not (eq ast 'error))
+ (zencoding-transform-ast-with-filters ast))))
+
+(defun zencoding-transform-ast-with-filters (ast-with-filters)
"Transform AST (containing filter data) into string."
(let ((filters (cadr ast-with-filters))
(ast (caddr ast-with-filters)))
diff --git a/src/mode-def.el b/src/mode-def.el
index 7a832ae..1f7e396 100644
--- a/src/mode-def.el
+++ b/src/mode-def.el
@@ -27,6 +27,11 @@
(replace-regexp-in-string "\n" (concat "\n" first-col)
(replace-regexp-in-string " " tab markup)))))
+(defun zencoding-transform (input)
+ (if (eql major-mode 'css-mode)
+ (zencoding-css-transform input)
+ (zencoding-html-transform input)))
+
;;;###autoload
(defun zencoding-expand-line (arg)
"Replace the current line's zencode expression with the corresponding expansion.
@@ -57,11 +62,12 @@ For more information see `zencoding-mode'."
(zencoding-preview beg end))
(let ((expr (zencoding-expr-on-line)))
(if expr
- (let* ((markup (zencoding-transform (car (zencoding-expr (first expr)))))
- (pretty (zencoding-prettify markup (current-indentation))))
- (save-excursion
- (delete-region (second expr) (third expr))
- (zencoding-insert-and-flash pretty))))))))
+ (let ((markup (zencoding-transform (first expr))))
+ (when markup
+ (let ((pretty (zencoding-prettify markup (current-indentation))))
+ (save-excursion
+ (delete-region (second expr) (third expr))
+ (zencoding-insert-and-flash pretty))))))))))
(defvar zencoding-mode-keymap nil
"Keymap for zencode minor mode.")
@@ -100,19 +106,19 @@ See also `zencoding-expand-line'."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Zencoding yasnippet integration
-(defun zencoding-transform-yas (ast)
+(defun zencoding-transform-yas (input)
(let* ((leaf-count 0)
(zencoding-leaf-function
(lambda ()
(format "$%d" (incf leaf-count)))))
- (zencoding-transform ast)))
+ (zencoding-transform input)))
;;;###autoload
(defun zencoding-expand-yas ()
(interactive)
(let ((expr (zencoding-expr-on-line)))
(if expr
- (let* ((markup (zencoding-transform-yas (car (zencoding-expr (first expr)))))
+ (let* ((markup (zencoding-transform-yas (first expr)))
(filled (replace-regexp-in-string "><" ">\n<" markup)))
(delete-region (second expr) (third expr))
(insert filled)
@@ -272,12 +278,10 @@ accept it or skip it."
(defun zencoding-preview-transformed (indent)
(let* ((string (buffer-substring-no-properties
(overlay-start zencoding-preview-input)
- (overlay-end zencoding-preview-input)))
- (ast (car (zencoding-expr string))))
- (when (not (eq ast 'error))
- (let ((output (zencoding-transform ast)))
- (when output
- (zencoding-prettify output indent))))))
+ (overlay-end zencoding-preview-input))))
+ (let ((output (zencoding-transform string)))
+ (when output
+ (zencoding-prettify output indent)))))
(defun zencoding-update-preview (indent)
(let* ((pretty (zencoding-preview-transformed indent))
diff --git a/src/test.el b/src/test.el
index 70f41f3..c0d7e2b 100644
--- a/src/test.el
+++ b/src/test.el
@@ -49,7 +49,7 @@
(defmacro define-zencoding-transform-html-test-case (name &rest tests)
`(define-zencoding-transform-test-case ,name
- #'(lambda (c) (zencoding-transform (car (zencoding-expr c))))
+ 'zencoding-html-transform
,@tests))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -466,7 +466,7 @@
(defmacro define-zencoding-transform-css-test-case (name &rest tests)
`(define-zencoding-transform-test-case ,name
- #'(lambda (c) (zencoding-css-transform (zencoding-css-expr c)))
+ 'zencoding-css-transform
,@tests))
(define-zencoding-transform-css-test-case CSS-transform