diff options
author | Jesús <heckyel@hyperbola.info> | 2020-01-10 13:58:14 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2020-01-10 13:58:14 -0500 |
commit | dc471a600b7c9219e46c95900919ec0ac88106d0 (patch) | |
tree | 5a73ca7bfdd335baf8972ceeafa1fc2723e56b59 /src/css-abbrev.el | |
parent | d7424d40aa963e47d3224b81ccf41c4f8669617d (diff) | |
download | emmet-mode-dc471a600b7c9219e46c95900919ec0ac88106d0.tar.lz emmet-mode-dc471a600b7c9219e46c95900919ec0ac88106d0.tar.xz emmet-mode-dc471a600b7c9219e46c95900919ec0ac88106d0.zip |
improve syntax
Diffstat (limited to 'src/css-abbrev.el')
-rw-r--r-- | src/css-abbrev.el | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/src/css-abbrev.el b/src/css-abbrev.el index 37fb091..8b7b907 100644 --- a/src/css-abbrev.el +++ b/src/css-abbrev.el @@ -33,7 +33,7 @@ 4 "css color argument" (let ((color (let* ((n (elt it 1)) - (l (length n))) + (l (length n))) (substring (cond ((= l 1) (concat (make-list 6 (string-to-char n)))) ((= l 2) (concat n n n)) @@ -73,11 +73,11 @@ (defun emmet-css-parse-arg (input) (emmet-run emmet-css-arg-number it - (emmet-run emmet-css-arg-color it - (emmet-run emmet-css-arg-something it - (if (equal input "") - it - (cons input "")))))) + (emmet-run emmet-css-arg-color it + (emmet-run emmet-css-arg-something it + (if (equal input "") + it + (cons input "")))))) (defun emmet-css-important-p (input) (let ((len (length input))) @@ -113,12 +113,12 @@ (defun emmet-css-subexpr (exp) (let* ((importantp (emmet-css-important-p exp))) (destructuring-bind (exp vp) - (emmet-css-split-vendor-prefixes exp) - (destructuring-bind (key args) - (emmet-css-split-args (if importantp (subseq exp 0 -1) exp)) - `(,key ,vp - ,importantp - ,@(emmet-css-parse-args args)))))) + (emmet-css-split-vendor-prefixes exp) + (destructuring-bind (key args) + (emmet-css-split-args (if importantp (subseq exp 0 -1) exp)) + `(,key ,vp + ,importantp + ,@(emmet-css-parse-args args)))))) (defun emmet-css-toknize (str) (let* ((i (split-string str "+")) @@ -161,41 +161,41 @@ (defun emmet-css-instantiate-lambda (str) (cl-flet ((insert-space-between-name-and-body - (str) - (if (string-match "^\\([a-z-]+:\\)\\(.+\\)$" str) - (emmet-join-string - (mapcar (lambda (ref) (match-string ref str)) '(1 2)) " ") - str)) - (split-string-to-body - (str args-sym) - (let ((rt '(concat)) (idx-max 0)) - (loop for i from 0 to 255 do - (emmet-aif - (string-match "\\(?:|\\|${\\(?:\\([0-9]\\)\\|\\)\\(?::\\(.+?\\)\\|\\)}\\)" str) - (destructuring-bind (mat idx def) - (mapcar (lambda (ref) (match-string ref str)) '(0 1 2)) - (setf rt - `((or - (nth ,(let ((cur-idx (if idx (1- (string-to-number idx)) i))) - (setf idx-max (max cur-idx idx-max))) - ,args-sym) - ,(or def "")) - ,(substring str 0 it) ;; ordered to reverse - ,@rt)) - (setf str (substring str (+ it (length mat))))) - ;; don't use nreverse. cause bug in emacs-lisp. - (return (cons idx-max (reverse (cons str rt))))))))) + (str) + (if (string-match "^\\([a-z-]+:\\)\\(.+\\)$" str) + (emmet-join-string + (mapcar (lambda (ref) (match-string ref str)) '(1 2)) " ") + str)) + (split-string-to-body + (str args-sym) + (let ((rt '(concat)) (idx-max 0)) + (loop for i from 0 to 255 do + (emmet-aif + (string-match "\\(?:|\\|${\\(?:\\([0-9]\\)\\|\\)\\(?::\\(.+?\\)\\|\\)}\\)" str) + (destructuring-bind (mat idx def) + (mapcar (lambda (ref) (match-string ref str)) '(0 1 2)) + (setf rt + `((or + (nth ,(let ((cur-idx (if idx (1- (string-to-number idx)) i))) + (setf idx-max (max cur-idx idx-max))) + ,args-sym) + ,(or def "")) + ,(substring str 0 it) ;; ordered to reverse + ,@rt)) + (setf str (substring str (+ it (length mat))))) + ;; don't use nreverse. cause bug in emacs-lisp. + (return (cons idx-max (reverse (cons str rt))))))))) (let ((args (gensym)) (str (insert-space-between-name-and-body str))) (destructuring-bind (idx-max . body) (split-string-to-body str args) - (eval - `(lambda (&rest ,args) - (progn - (when (nthcdr ,idx-max ,args) - (setf (nthcdr ,idx-max ,args) - (list (emmet-join-string - (nthcdr ,idx-max ,args) " ")))) - ,body))))))) + (eval + `(lambda (&rest ,args) + (progn + (when (nthcdr ,idx-max ,args) + (setf (nthcdr ,idx-max ,args) + (list (emmet-join-string + (nthcdr ,idx-max ,args) " ")))) + ,body))))))) (emmet-defparameter emmet-vendor-prefixes-properties @@ -225,47 +225,47 @@ (mapcar #'(lambda (expr) (let* - ((hash-map (if emmet-use-sass-syntax emmet-sass-snippets emmet-css-snippets)) - (basement - (emmet-aif - (or (gethash (car expr) hash-map) (gethash (car expr) emmet-css-snippets)) - (let ((set it) (fn nil) (unitlessp nil)) - (if (stringp set) - (progn - ;; new pattern - ;; creating print function - (setf fn (emmet-css-instantiate-lambda set)) - ;; get unitless or no - (setf unitlessp - (not (null (string-match - emmet-css-unitless-properties-regex set)))) - ;; caching - (puthash (car expr) (cons fn unitlessp) hash-map)) - (progn - ;; cache hit. - (setf fn (car set)) - (setf unitlessp (cdr set)))) - (apply fn - (mapcar - #'(lambda (arg) - (if (listp arg) - (if unitlessp (car arg) - (apply #'concat arg)) - arg)) - (cdddr expr)))) - (concat (car expr) ": " - (emmet-join-string - (mapcar #'(lambda (arg) - (if (listp arg) (apply #'concat arg) arg)) - (cdddr expr)) " ") - ";")))) + ((hash-map (if emmet-use-sass-syntax emmet-sass-snippets emmet-css-snippets)) + (basement + (emmet-aif + (or (gethash (car expr) hash-map) (gethash (car expr) emmet-css-snippets)) + (let ((set it) (fn nil) (unitlessp nil)) + (if (stringp set) + (progn + ;; new pattern + ;; creating print function + (setf fn (emmet-css-instantiate-lambda set)) + ;; get unitless or no + (setf unitlessp + (not (null (string-match + emmet-css-unitless-properties-regex set)))) + ;; caching + (puthash (car expr) (cons fn unitlessp) hash-map)) + (progn + ;; cache hit. + (setf fn (car set)) + (setf unitlessp (cdr set)))) + (apply fn + (mapcar + #'(lambda (arg) + (if (listp arg) + (if unitlessp (car arg) + (apply #'concat arg)) + arg)) + (cdddr expr)))) + (concat (car expr) ": " + (emmet-join-string + (mapcar #'(lambda (arg) + (if (listp arg) (apply #'concat arg) arg)) + (cdddr expr)) " ") + ";")))) (let ((line (if (caddr expr) (concat (subseq basement 0 -1) " !important;") basement))) - ;; remove trailing semicolon while editing Sass files - (if (and emmet-use-sass-syntax (equal ";" (subseq line -1))) - (setq line (subseq line 0 -1))) + ;; remove trailing semicolon while editing Sass files + (if (and emmet-use-sass-syntax (equal ";" (subseq line -1))) + (setq line (subseq line 0 -1))) (emmet-aif (cadr expr) (emmet-css-transform-vendor-prefixes line it) |