Mercurial > emacs
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.