diff options
Diffstat (limited to 'zencoding-mode.el')
-rw-r--r-- | zencoding-mode.el | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/zencoding-mode.el b/zencoding-mode.el index 7e851b0..98c9cee 100644 --- a/zencoding-mode.el +++ b/zencoding-mode.el @@ -1499,7 +1499,12 @@ tbl)) 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))) @@ -1659,7 +1664,7 @@ tbl)) (nthcdr ,idx-max ,args) " ")))) ,body))))))) -(defun zencoding-css-transform (exprs) +(defun zencoding-css-transform-exprs (exprs) (zencoding-join-string (mapcar #'(lambda (expr) @@ -1690,7 +1695,11 @@ tbl)) (cdr expr)) " ") ";"))) exprs) - "\n"));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + "\n")) + + +(defun zencoding-css-transform (input) + (zencoding-css-transform-exprs (zencoding-css-expr input)));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Zencoding minor mode (defgroup zencoding nil @@ -1719,6 +1728,11 @@ tbl)) (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. @@ -1749,11 +1763,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.") @@ -1792,19 +1807,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) @@ -1964,12 +1979,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)) |