changeset: 5488:1e544fd7be12
tag: tip
user: Didier Verna <didier(a)lrde.epita.fr>
date: Sat Apr 30 17:38:35 2011 +0200
files: lisp/ChangeLog lisp/subr.el
description:
Import looking-back from GNU Emacs.
-------------------- ChangeLog entries follow: --------------------
lisp/ChangeLog addition:
2011-04-30 Didier Verna <didier(a)xemacs.org>
* subr.el (looking-back): New function.
diff -r dc37764a105b -r 1e544fd7be12 lisp/ChangeLog
--- a/lisp/ChangeLog Sat Apr 30 17:29:47 2011 +0200
+++ b/lisp/ChangeLog Sat Apr 30 17:38:35 2011 +0200
@@ -1,3 +1,7 @@
+2011-04-30 Didier Verna <didier(a)xemacs.org>
+
+ * subr.el (looking-back): New function.
+
2011-04-30 Didier Verna <didier(a)xemacs.org>
* special-mode.el: New file.
diff -r dc37764a105b -r 1e544fd7be12 lisp/subr.el
--- a/lisp/subr.el Sat Apr 30 17:29:47 2011 +0200
+++ b/lisp/subr.el Sat Apr 30 17:38:35 2011 +0200
@@ -731,6 +731,38 @@
result)
(buffer-substring-no-properties (match-beginning num)
(match-end num)))))
+
+;; Imported from GNU Emacs 23.3.1 -- dvl
+(defun looking-back (regexp &optional limit greedy)
+ "Return non-nil if text before point matches regular expression REGEXP.
+Like `looking-at' except matches before point, and is slower.
+LIMIT if non-nil speeds up the search by specifying a minimum
+starting position, to avoid checking matches that would start
+before LIMIT.
+
+If GREEDY is non-nil, extend the match backwards as far as
+possible, stopping when a single additional previous character
+cannot be part of a match for REGEXP. When the match is
+extended, its starting position is allowed to occur before
+LIMIT."
+ (let ((start (point))
+ (pos
+ (save-excursion
+ (and (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit
t)
+ (point)))))
+ (if (and greedy pos)
+ (save-restriction
+ (narrow-to-region (point-min) start)
+ (while (and (> pos (point-min))
+ (save-excursion
+ (goto-char pos)
+ (backward-char 1)
+ (looking-at (concat "\\(?:" regexp "\\)\\'"))))
+ (setq pos (1- pos)))
+ (save-excursion
+ (goto-char pos)
+ (looking-at (concat "\\(?:" regexp "\\)\\'")))))
+ (not (null pos))))
(defconst split-string-default-separators "[ \f\t\n\r\v]+"
"The default value of separators for `split-string'.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches