From: Stefan Monnier Date: Fri, 10 Aug 2012 21:03:10 +0000 (-0400) Subject: * lisp/emacs-lisp/rx.el (rx-constituents): Don't define as constant. X-Git-Tag: emacs-24.2.90~729 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=daa9f1a6076ee5e54c8b56b321bc1d2d991a15c6;p=emacs.git * lisp/emacs-lisp/rx.el (rx-constituents): Don't define as constant. (rx-form): Simplify. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c715059c135..c2e45204026 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-08-10 Stefan Monnier + + * emacs-lisp/rx.el (rx-constituents): Don't define as constant. + (rx-form): Simplify. + 2012-08-09 Dmitry Gutov Merge stuff from upsteam ruby-mode, part 1 (bug#12169). diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index a0fb15ae39f..774c6cd2c38 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -107,7 +107,9 @@ ;;; Code: -(defconst rx-constituents +;; FIXME: support macros. + +(defvar rx-constituents ;Not `const' because some modes extend it. '((and . (rx-and 1 nil)) (seq . and) ; SRE (: . and) ; SRE @@ -831,27 +833,28 @@ If FORM is '(minimal-match FORM1)', non-greedy versions of `*', FORM is a regular expression in sexp form. RX-PARENT shows which type of expression calls and controls putting of shy groups around the result and some more in other functions." - (if (stringp form) - (rx-group-if (regexp-quote form) - (if (and (eq rx-parent '*) (< 1 (length form))) - rx-parent)) - (cond ((integerp form) - (regexp-quote (char-to-string form))) - ((symbolp form) - (let ((info (rx-info form nil))) - (cond ((stringp info) - info) - ((null info) - (error "Unknown rx form `%s'" form)) - (t - (funcall (nth 0 info) form))))) - ((consp form) - (let ((info (rx-info (car form) 'head))) - (unless (consp info) - (error "Unknown rx form `%s'" (car form))) - (funcall (nth 0 info) form))) - (t - (error "rx syntax error at `%s'" form))))) + (cond + ((stringp form) + (rx-group-if (regexp-quote form) + (if (and (eq rx-parent '*) (< 1 (length form))) + rx-parent))) + ((integerp form) + (regexp-quote (char-to-string form))) + ((symbolp form) + (let ((info (rx-info form nil))) + (cond ((stringp info) + info) + ((null info) + (error "Unknown rx form `%s'" form)) + (t + (funcall (nth 0 info) form))))) + ((consp form) + (let ((info (rx-info (car form) 'head))) + (unless (consp info) + (error "Unknown rx form `%s'" (car form))) + (funcall (nth 0 info) form))) + (t + (error "rx syntax error at `%s'" form)))) ;;;###autoload