diff options
author | smihica <smihica@gmail.com> | 2013-03-24 04:25:40 +0900 |
---|---|---|
committer | smihica <smihica@gmail.com> | 2013-03-24 04:37:10 +0900 |
commit | e353327def110e43716be349c9cf79420a985ca5 (patch) | |
tree | 5304e4cabf3525b06dc13be79f8b7ccc8a5df323 /src | |
parent | 62dd4214c839aa9124f9b5d13d8dff2bdb2fe180 (diff) | |
download | emmet-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.el | 8 | ||||
-rw-r--r-- | src/html-abbrev.el | 7 | ||||
-rw-r--r-- | src/mode-def.el | 32 | ||||
-rw-r--r-- | src/test.el | 4 |
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 |