changeset 44460:45c30120001e

(sgml-lexical-context): Use sgml-parse-tag-backward to find start point. (sgml-looking-back-at): Doc fix.
author Mike Williams <mdub@bigfoot.com>
date Tue, 09 Apr 2002 12:26:44 +0000
parents 25c3c51b0375
children 91b326cb58d1
files lisp/textmodes/sgml-mode.el
diffstat 1 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/sgml-mode.el	Tue Apr 09 12:02:20 2002 +0000
+++ b/lisp/textmodes/sgml-mode.el	Tue Apr 09 12:26:44 2002 +0000
@@ -863,17 +863,16 @@
 START is the location of the start of the lexical element.
 TYPE is one of `string', `comment', `tag', `cdata', or `text'.
 
-If non-nil LIMIT is a nearby position before point outside of any tag."
-  ;; As usual, it's difficult to get a reliable answer without parsing the
-  ;; whole buffer.  We'll assume that a tag at indentation is outside of
-  ;; any string or tag or comment or ...
+Optional argument LIMIT is the position to start parsing from.
+If nil, start from a preceding tag at indentation."
   (save-excursion
     (let ((pos (point))
 	  text-start state)
-      (if limit (goto-char limit)
-	;; Hopefully this regexp will match something that's not inside
-	;; a tag and also hopefully the match is nearby.
-	(re-search-backward "^[ \t]*<[_:[:alpha:]/%!?#]" nil 'move))
+      (if limit
+          (goto-char limit)
+        ;; Skip tags backwards until we find one at indentation
+        (while (and (ignore-errors (sgml-parse-tag-backward))
+                    (not (sgml-at-indentation-p)))))
       (with-syntax-table sgml-tag-syntax-table
 	(while (< (point) pos)
 	  ;; When entering this loop we're inside text.
@@ -966,10 +965,11 @@
   (buffer-substring-no-properties
    (point) (progn (skip-syntax-forward "w_") (point))))
 
-(defsubst sgml-looking-back-at (s)
-  (let ((start (- (point) (length s))))
+(defsubst sgml-looking-back-at (str)
+  "Return t if the test before point matches STR."
+  (let ((start (- (point) (length str))))
     (and (>= start (point-min))
-         (equal s (buffer-substring-no-properties start (point))))))
+         (equal str (buffer-substring-no-properties start (point))))))
 
 (defun sgml-parse-tag-backward ()
   "Parse an SGML tag backward, and return information about the tag.