Browse Source

Factor out function for substituting posix class in regular expression

* org-macs.el (org-substitute-posix-classes): New function. Substitute
posix classes in regular expression.
(org-re): Use new function.
David Maus 13 years ago
parent
commit
19c6b14644
1 changed files with 15 additions and 13 deletions
  1. 15 13
      lisp/org-macs.el

+ 15 - 13
lisp/org-macs.el

@@ -93,21 +93,23 @@ Also, do not record undo information."
 	    before-change-functions after-change-functions)
 	,@body))))
 
+(defun org-substitute-posix-classes (re)
+  "Substitute posix classes in regular expression RE."
+  (let ((ss re))
+    (save-match-data
+      (while (string-match "\\[:alnum:\\]" ss)
+	(setq ss (replace-match "a-zA-Z0-9" t t ss)))
+      (while (string-match "\\[:word:\\]" ss)
+	(setq ss (replace-match "a-zA-Z0-9" t t ss)))
+      (while (string-match "\\[:alpha:\\]" ss)
+	(setq ss (replace-match "a-zA-Z" t t ss)))
+      (while (string-match "\\[:punct:\\]" ss)
+	(setq ss (replace-match "\001-@[-`{-~" t t ss)))
+      ss)))
+
 (defmacro org-re (s)
   "Replace posix classes in regular expression."
-  (if (featurep 'xemacs)
-      (let ((ss s))
-	(save-match-data
-	  (while (string-match "\\[:alnum:\\]" ss)
-	    (setq ss (replace-match "a-zA-Z0-9" t t ss)))
-	  (while (string-match "\\[:word:\\]" ss)
-	    (setq ss (replace-match "a-zA-Z0-9" t t ss)))
-	  (while (string-match "\\[:alpha:\\]" ss)
-	    (setq ss (replace-match "a-zA-Z" t t ss)))
-	  (while (string-match "\\[:punct:\\]" ss)
-	    (setq ss (replace-match "\001-@[-`{-~" t t ss)))
-	  ss))
-    s))
+  (if (featurep 'xemacs) `(org-substitute-posix-classes ,s) s))
 
 (defmacro org-preserve-lc (&rest body)
   (org-with-gensyms (line col)