diff lisp/emacs-lisp/re-builder.el @ 56611:8b14a3e64595

(reb-re-syntax): Add `rx' syntax. (reb-lisp-mode): Require `rx' feature when `re-reb-syntax' is `rx'. (reb-lisp-syntax-p, reb-change-syntax): `rx' is a Lisp syntax. (reb-cook-regexp): Call `rx-to-string' when `re-reb-syntax' is `rx'.
author John Paul Wallington <jpw@pobox.com>
date Sat, 07 Aug 2004 12:02:43 +0000
parents a4c0ce40be3d
children 7dbbaf3dc171 3fd4a5c21153
line wrap: on
line diff
--- a/lisp/emacs-lisp/re-builder.el	Sat Aug 07 02:32:11 2004 +0000
+++ b/lisp/emacs-lisp/re-builder.el	Sat Aug 07 12:02:43 2004 +0000
@@ -135,6 +135,7 @@
 		 (const :tag "String syntax" string)
 		 (const :tag "`sregex' syntax" sregex)
 		 (const :tag "`lisp-re' syntax" lisp-re)
+		 (const :tag "`rx' syntax" rx)
 		 (value: string)))
 
 (defcustom reb-auto-match-limit 200
@@ -261,7 +262,9 @@
   (cond ((eq reb-re-syntax 'lisp-re)	; Pull in packages
 	 (require 'lisp-re))		; as needed
 	((eq reb-re-syntax 'sregex)	; sregex is not autoloaded
-	 (require 'sregex)))		; right now..
+	 (require 'sregex))		; right now..
+	((eq reb-re-syntax 'rx)		; rx-to-string is autoloaded
+	 (require 'rx)))		; require rx anyway
   (reb-mode-common))
 
 ;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from
@@ -320,7 +323,7 @@
 
 (defsubst reb-lisp-syntax-p ()
   "Return non-nil if RE Builder uses a Lisp syntax."
-  (memq reb-re-syntax '(lisp-re sregex)))
+  (memq reb-re-syntax '(lisp-re sregex rx)))
 
 (defmacro reb-target-binding (symbol)
   "Return binding for SYMBOL in the RE Builder target buffer."
@@ -466,10 +469,10 @@
    (list (intern
 	  (completing-read "Select syntax: "
 			   (mapcar (lambda (el) (cons (symbol-name el) 1))
-				   '(read string lisp-re sregex))
+				   '(read string lisp-re sregex rx))
 			   nil t (symbol-name reb-re-syntax)))))
 
-  (if (memq syntax '(read string lisp-re sregex))
+  (if (memq syntax '(read string lisp-re sregex rx))
       (let ((buffer (get-buffer reb-buffer)))
 	(setq reb-re-syntax syntax)
 	(if buffer
@@ -604,6 +607,8 @@
 	 (lre-compile-string (eval (car (read-from-string re)))))
 	((eq reb-re-syntax 'sregex)
 	 (apply 'sregex (eval (car (read-from-string re)))))
+	((eq reb-re-syntax 'rx)
+	 (rx-to-string (eval (car (read-from-string re)))))
 	(t re)))
 
 (defun reb-update-regexp ()
@@ -670,7 +675,7 @@
 		  (overlay-put overlay 'priority i)))
 	    (setq i (1+ i))))))
     (let ((count (if subexp submatches matches)))
-      (message"%s %smatch%s%s"
+      (message "%s %smatch%s%s"
 	       (if (= 0 count) "No" (int-to-string count))
 	       (if subexp "subexpression " "")
 	       (if (= 1 count) "" "es")