# HG changeset patch # User Mike Williams # Date 1018562303 0 # Node ID 4067d1e7f884ce27e1b7b8ef3909c7f82ad733bd # Parent 5fa7b088231f8cfd26bf2ec6c602a6e1c76c0871 (sgml-guess-indent): New function. diff -r 5fa7b088231f -r 4067d1e7f884 lisp/textmodes/sgml-mode.el --- a/lisp/textmodes/sgml-mode.el Thu Apr 11 18:37:25 2002 +0000 +++ b/lisp/textmodes/sgml-mode.el Thu Apr 11 21:58:23 2002 +0000 @@ -889,7 +889,7 @@ (unless (search-forward "]]>" pos 'move) (list 0 nil nil 'cdata nil nil nil nil cdata-start)))) (t - ;; We've reached a tag. Parse it. + ;; We've reached a tag. Parse it. ;; FIXME: Handle net-enabling start-tags (parse-partial-sexp (point) pos 0)))))) (cond @@ -1031,7 +1031,7 @@ ;; enclosing start-tags we'll have to ignore. (skip-chars-backward " \t\n") ; Make sure we're not at indentation. (while - (and (or ignore + (and (or ignore (not (if full (eq full 'empty) context)) (not (sgml-at-indentation-p)) (and context @@ -1104,7 +1104,7 @@ (text (let ((context (save-excursion (sgml-get-context)))) (if context - (progn + (progn (insert "") (indent-according-to-mode))))) (otherwise @@ -1227,6 +1227,21 @@ (save-excursion (indent-line-to indent-col)) (indent-line-to indent-col)))) +(defun sgml-guess-indent () + "Guess an appropriate value for `sgml-basic-offset'. +Base the guessed identation level on the first indented tag in the buffer. +Add this to `sgml-mode-hook' for convenience." + (interactive) + (save-excursion + (goto-char (point-min)) + (if (re-search-forward "^\\([ \t]+\\)<" 100 'noerror) + (progn + (set (make-local-variable 'sgml-basic-offset) + (length (match-string 1))) + (message "Guessed sgml-basic-offset = %d" + sgml-basic-offset) + )))) + (defun sgml-parse-dtd () "Simplistic parse of the current buffer as a DTD. Currently just returns (EMPTY-TAGS UNCLOSED-TAGS)."