# HG changeset patch # User Stefan Monnier # Date 1100097580 0 # Node ID 1e9ea828c37aaf19a97f2a2340fe24bc0551383b # Parent 9d53304eb0afcc78ef444a4390b6dd5af95534ea (sgml-tag-text-p): New fun. (sgml-parse-tag-backward): Use it to skip spurious < or >. diff -r 9d53304eb0af -r 1e9ea828c37a lisp/ChangeLog --- a/lisp/ChangeLog Wed Nov 10 10:51:01 2004 +0000 +++ b/lisp/ChangeLog Wed Nov 10 14:39:40 2004 +0000 @@ -1,3 +1,8 @@ +2004-11-10 Stefan Monnier + + * textmodes/sgml-mode.el (sgml-tag-text-p): New fun. + (sgml-parse-tag-backward): Use it to skip spurious < or >. + 2004-11-10 Thien-Thi Nguyen * ebuff-menu.el: Doc fixes throughout. @@ -15,6 +20,10 @@ * files.el (auto-mode-alist, magic-mode-alist): Use it. +2004-11-09 Stefan Monnier + + * international/iso-cvt.el (iso-cvt-define-menu): Clean up namespace. + 2004-11-09 Jay Belanger * calc/calc-ext.el (calc-init-extensions): Remove old code. @@ -37,8 +46,8 @@ * calc/calc-poly.el (math-expand-form): Use declared variable math-mt-many. - * calc/calc-rewr.el (math-rewrite, math-rewrite-phase): Use - declared variable math-mt-many. + * calc/calc-rewr.el (math-rewrite, math-rewrite-phase): + Use declared variable math-mt-many. (math-rewrite): Use declared variable math-mt-func. * calc/calc-vec.el (math-read-brackets, math-read-vector) @@ -104,8 +113,6 @@ 2004-11-08 Stefan Monnier - * international/mule.el: Fix some warnings. - * international/mule-cmds.el: Change coding-system to utf-8. (select-safe-coding-system-interactively): New function extracted from select-safe-coding-system. diff -r 9d53304eb0af -r 1e9ea828c37a lisp/textmodes/sgml-mode.el --- a/lisp/textmodes/sgml-mode.el Wed Nov 10 10:51:01 2004 +0000 +++ b/lisp/textmodes/sgml-mode.el Wed Nov 10 14:39:40 2004 +0000 @@ -1,6 +1,7 @@ ;;; sgml-mode.el --- SGML- and HTML-editing modes -;; Copyright (C) 1992,95,96,98,2001,2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1995, 1996, 1998, 2001, 2002, 2003, 2004 +;; Free Software Foundation, Inc. ;; Author: James Clark ;; Maintainer: FSF @@ -1053,53 +1054,79 @@ (and (>= start (point-min)) (equal str (buffer-substring-no-properties start (point)))))) +(defun sgml-tag-text-p (start end) + "Return non-nil if text between START and END is a tag. +Checks among other things that the tag does not contain spurious +unquoted < or > chars inside, which would indicate that it +really isn't a tag after all." + (save-excursion + (with-syntax-table sgml-tag-syntax-table + (let ((pps (parse-partial-sexp start end 2))) + (and (= (nth 0 pps) 0)))))) + (defun sgml-parse-tag-backward (&optional limit) "Parse an SGML tag backward, and return information about the tag. Assume that parsing starts from within a textual context. Leave point at the beginning of the tag." - (let (tag-type tag-start tag-end name) - (or (re-search-backward "[<>]" limit 'move) - (error "No tag found")) - (when (eq (char-after) ?<) - ;; Oops!! Looks like we were not in a textual context after all!. - ;; Let's try to recover. - (with-syntax-table sgml-tag-syntax-table - (forward-sexp) - (forward-char -1))) - (setq tag-end (1+ (point))) - (cond - ((sgml-looking-back-at "--") ; comment - (setq tag-type 'comment - tag-start (search-backward "