aboutsummaryrefslogtreecommitdiffstats
path: root/zencoding-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'zencoding-mode.el')
-rw-r--r--zencoding-mode.el47
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))