diff options
author | John Wiegley <johnw@newartisans.com> | 2017-02-16 12:03:59 -0800 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2017-02-16 12:03:59 -0800 |
commit | f1fa65d7733ece85490d037775d73e1a3a4dae69 (patch) | |
tree | d935103698562520967ce11fdf67839b195c0eee /lisp/use-package | |
parent | 87a8ff6d693f3cc79ea423ca8c8e0a60b0bc596c (diff) | |
download | emacs-f1fa65d7733ece85490d037775d73e1a3a4dae69.tar.gz emacs-f1fa65d7733ece85490d037775d73e1a3a4dae69.tar.bz2 emacs-f1fa65d7733ece85490d037775d73e1a3a4dae69.zip |
:mode and :interpreter can now accept (rx ...) forms
Fixes https://github.com/jwiegley/use-package/issues/204
Diffstat (limited to 'lisp/use-package')
-rw-r--r-- | lisp/use-package/use-package.el | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el index 733a6316647..c6387d7e1f1 100644 --- a/lisp/use-package/use-package.el +++ b/lisp/use-package/use-package.el @@ -427,6 +427,28 @@ This is in contrast to merely setting it to 0." ;;; Normalization functions ;; +(defun use-package-regex-p (re) + "Return t if RE is some regexp-like thing." + (cond + ((and (listp re) + (eq (car re) 'rx)) + t) + ((stringp re) + t) + (t + nil))) + +(defun use-package-normalize-regex (re) + "Given some regexp-like thing, resolve it down to a regular expression." + (cond + ((and (listp re) + (eq (car re) 'rx)) + (eval re)) + ((stringp re) + re) + (t + (error "Not recognized as regular expression: %s" re)))) + (defun use-package-normalize-plist (name input) "Given a pseudo-plist, normalize it to a regular plist." (unless (null input) @@ -877,7 +899,8 @@ deferred until the prefix key sequence is pressed." (defun use-package-normalize-mode (name keyword args) (use-package-as-one (symbol-name keyword) args (apply-partially #'use-package-normalize-pairs - #'stringp (lambda (m) (and (not (null m)) (symbolp m))) + #'use-package-regex-p + (lambda (m) (and (not (null m)) (symbolp m))) name))) (defalias 'use-package-normalize/:interpreter 'use-package-normalize-mode) @@ -886,6 +909,8 @@ deferred until the prefix key sequence is pressed." (let* (commands (form (mapcar #'(lambda (interpreter) (push (cdr interpreter) commands) + (setcar interpreter + (use-package-normalize-regex (car interpreter))) `(add-to-list 'interpreter-mode-alist ',interpreter)) arg))) (use-package-concat (use-package-process-keywords name @@ -905,6 +930,8 @@ deferred until the prefix key sequence is pressed." (let* (commands (form (mapcar #'(lambda (mode) (push (cdr mode) commands) + (setcar mode + (use-package-normalize-regex (car mode))) `(add-to-list 'auto-mode-alist ',mode)) arg))) (use-package-concat (use-package-process-keywords name |