emacs-diffs
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]