diff options
-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 | ||||
-rw-r--r-- | zencoding-mode.el | 47 |
5 files changed, 62 insertions, 36 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 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)) |