[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/regexp-opt.el [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/regexp-opt.el [lexbind] |
Date: |
Wed, 08 Dec 2004 19:35:36 -0500 |
Index: emacs/lisp/emacs-lisp/regexp-opt.el
diff -c emacs/lisp/emacs-lisp/regexp-opt.el:1.20.4.2
emacs/lisp/emacs-lisp/regexp-opt.el:1.20.4.3
*** emacs/lisp/emacs-lisp/regexp-opt.el:1.20.4.2 Tue Oct 14 23:32:21 2003
--- emacs/lisp/emacs-lisp/regexp-opt.el Wed Dec 8 23:36:31 2004
***************
*** 1,6 ****
;;; regexp-opt.el --- generate efficient regexps to match strings
! ;; Copyright (C) 1994,95,96,97,98,99,2000 Free Software Foundation, Inc.
;; Author: Simon Marshall <address@hidden>
;; Maintainer: FSF
--- 1,7 ----
;;; regexp-opt.el --- generate efficient regexps to match strings
! ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2004
! ;; Free Software Foundation, Inc.
;; Author: Simon Marshall <address@hidden>
;; Maintainer: FSF
***************
*** 106,149 ****
(completion-regexp-list nil)
(words (eq paren 'words))
(open (cond ((stringp paren) paren) (paren "\\(")))
! (sorted-strings (sort (copy-sequence strings) 'string-lessp))
(re (regexp-opt-group sorted-strings open)))
(if words (concat "\\<" re "\\>") re))))
- (defconst regexp-opt-not-groupie*-re
- (let* ((harmless-ch "[^\\\\[]")
- (esc-pair-not-lp "\\\\[^(]")
- (class-harmless-ch "[^][]")
- (class-lb-harmless "[^]:]")
- (class-lb-colon-maybe-charclass ":\\([a-z]+:]\\)?")
- (class-lb (concat "\\[\\(" class-lb-harmless
- "\\|" class-lb-colon-maybe-charclass "\\)"))
- (class
- (concat "\\[^?]?"
- "\\(" class-harmless-ch
- "\\|" class-lb "\\)*"
- "\\[?]")) ; special handling for bare [ at end of re
- (shy-lp "\\\\(\\?:"))
- (concat "\\(" harmless-ch "\\|" esc-pair-not-lp
- "\\|" class "\\|" shy-lp "\\)*"))
- "Matches any part of a regular expression EXCEPT for non-shy \"\\\\(\"s")
-
;;;###autoload
(defun regexp-opt-depth (regexp)
"Return the depth of REGEXP.
! This means the number of regexp grouping constructs (parenthesised
expressions)
! in REGEXP."
(save-match-data
;; Hack to signal an error if REGEXP does not have balanced parentheses.
(string-match regexp "")
;; Count the number of open parentheses in REGEXP.
! (let ((count 0) start)
! (while
! (progn
! (string-match regexp-opt-not-groupie*-re regexp start)
! (setq start ( + (match-end 0) 2)) ; +2 for "\\(" after match-end.
! (<= start (length regexp)))
! (setq count (1+ count)))
count)))
;;; Workhorse functions.
--- 107,135 ----
(completion-regexp-list nil)
(words (eq paren 'words))
(open (cond ((stringp paren) paren) (paren "\\(")))
! (sorted-strings (delete-dups
! (sort (copy-sequence strings) 'string-lessp)))
(re (regexp-opt-group sorted-strings open)))
(if words (concat "\\<" re "\\>") re))))
;;;###autoload
(defun regexp-opt-depth (regexp)
"Return the depth of REGEXP.
! This means the number of non-shy regexp grouping constructs
! \(parenthesised expressions) in REGEXP."
(save-match-data
;; Hack to signal an error if REGEXP does not have balanced parentheses.
(string-match regexp "")
;; Count the number of open parentheses in REGEXP.
! (let ((count 0) start last)
! (while (string-match "\\\\(\\(\\?:\\)?" regexp start)
! (setq start (match-end 0)) ; Start of next search.
! (when (and (not (match-beginning 1))
! (subregexp-context-p regexp (match-beginning 0) last))
! ;; It's not a shy group and it's not inside brackets or after
! ;; a backslash: it's really a group-open marker.
! (setq last start) ; Speed up next regexp-opt-re-context-p.
! (setq count (1+ count))))
count)))
;;; Workhorse functions.
***************
*** 299,303 ****
(provide 'regexp-opt)
! ;;; arch-tag: 6c5a66f4-29af-4fd6-8c3b-4b554d5b4370
;;; regexp-opt.el ends here
--- 285,289 ----
(provide 'regexp-opt)
! ;; arch-tag: 6c5a66f4-29af-4fd6-8c3b-4b554d5b4370
;;; regexp-opt.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/regexp-opt.el [lexbind],
Miles Bader <=