changeset 44408:2177e8fca9b4

Remove xml-lite.el
author Mike Williams <mdub@bigfoot.com>
date Sat, 06 Apr 2002 04:03:23 +0000
parents 88ec9c417f0a
children 34da8d9e5ea2
files lisp/ChangeLog lisp/textmodes/xml-lite.el
diffstat 2 files changed, 4 insertions(+), 258 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 06 03:16:10 2002 +0000
+++ b/lisp/ChangeLog	Sat Apr 06 04:03:23 2002 +0000
@@ -1,3 +1,7 @@
+2002-04-06  Mike Williams  <mdub@bigfoot.com>
+
+	* textmodes/xml-lite.el: Remove.
+
 2002-04-05  Pavel Jan,Bm(Bk  <Pavel@Janik.cz>
 
 	* simple.el (play-sound): New function (uses play-sound-internal).
--- a/lisp/textmodes/xml-lite.el	Sat Apr 06 03:16:10 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-;;; xml-lite.el --- an indentation-engine for XML
-
-;; Copyright (C) 2002  Free Software Foundation, Inc.
-
-;; Author:     Mike Williams <mdub@bigfoot.com>
-;; Created:    February 2001
-;; Keywords:   xml
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2 of the License, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-;;
-;; This package provides a simple indentation engine for XML.  It is
-;; intended for use in situations where the full power of the popular PSGML
-;; package (DTD parsing, syntax checking) is not required.
-;;
-;; xml-lite is designed to be used in conjunction with the default GNU
-;; Emacs sgml-mode, to provide a lightweight XML-editing environment.
-
-;;; Thanks:
-;;
-;;    Jens Schmidt <Jens.Schmidt@oracle.com>
-;;        for his feedback and suggestions
-
-;; PLEASE NOTE!
-;;   xml-lite is on it's way out, as functionality is merged into
-;;   sgml-mode. 
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-(require 'sgml-mode)
-
-
-;; Syntax analysis
-
-(defsubst xml-lite-at-indentation-p ()
-  "Return true if point is at the first non-whitespace character on the line."
-  (save-excursion
-    (skip-chars-backward " \t")
-    (bolp)))
-
-
-;; Parsing
-
-(defstruct (xml-lite-tag
-            (:constructor xml-lite-make-tag (type start end name)))
-  type start end name)
-
-(defsubst xml-lite-parse-tag-name ()
-  "Skip past a tag-name, and return the name."
-  (buffer-substring-no-properties
-   (point) (progn (skip-syntax-forward "w_") (point))))
-
-(defsubst xml-lite-looking-back-at (s)
-  (let ((limit (max (- (point) (length s)) (point-min))))
-    (equal s (buffer-substring-no-properties limit (point)))))
-
-(defsubst xml-lite-looking-at (s)
-  (let ((limit (min (+ (point) (length s)))))
-    (equal s (buffer-substring-no-properties (point) limit))))
-
-(defun xml-lite-parse-tag-backward ()
-  "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)
-    (search-backward ">")
-    (setq tag-end (1+ (point)))
-    (cond
-     ((xml-lite-looking-back-at "--")   ; comment
-      (setq tag-type 'comment
-            tag-start (search-backward "<!--" nil t)))
-     ((xml-lite-looking-back-at "]]")   ; cdata
-      (setq tag-type 'cdata
-            tag-start (search-backward "<![CDATA[" nil t)))
-     (t
-      (setq tag-start
-            (with-syntax-table sgml-tag-syntax-table
-              (goto-char tag-end)
-              (backward-sexp)
-              (point)))
-      (goto-char (1+ tag-start))
-      (case (char-after)
-        (?!                             ; declaration
-         (setq tag-type 'decl))
-        (??                             ; processing-instruction
-         (setq tag-type 'pi))
-        (?/                             ; close-tag
-         (forward-char 1)
-         (setq tag-type 'close
-               name (xml-lite-parse-tag-name)))
-        ((?% ?#)                        ; JSP tags etc
-         (setq tag-type 'unknown))
-        (t                              ; open or empty tag
-         (setq tag-type 'open
-               name (xml-lite-parse-tag-name))
-         (if (or (eq ?/ (char-before (- tag-end 1)))
-                 (sgml-empty-tag-p name))
-             (setq tag-type 'empty))))))
-    (goto-char tag-start)
-    (xml-lite-make-tag tag-type tag-start tag-end name)))
-
-(defsubst xml-lite-inside-tag-p (tag-info &optional point)
-  "Return true if TAG-INFO contains the POINT."
-  (let ((end (xml-lite-tag-end tag-info))
-        (point (or point (point))))
-    (or (null end)
-        (> end point))))
-
-(defun xml-lite-get-context (&optional full)
-  "Determine the context of the current position.
-If FULL is `empty', return even if the context is empty (i.e.
-we just skipped over some element and got to a beginning of line).
-If FULL is non-nil, parse back to the beginning of the buffer, otherwise
-parse until we find a start-tag as the first thing on a line.
-
-The context is a list of tag-info structures.  The last one is the tag
-immediately enclosing the current position."
-  (let ((here (point))
-	(ignore nil)
-	(context nil)
-	tag-info)
-    ;; CONTEXT keeps track of the tag-stack
-    ;; IGNORE keeps track of the nesting level of point relative to the
-    ;;   first (outermost) tag on the context.  This is the list of
-    ;;   enclosing start-tags we'll have to ignore.
-    (skip-chars-backward " \t\n")      ; Make sure we're not at indentation.
-    (while
-	(and (or ignore 
-                 (not (if full (eq full 'empty) context))
-		 (not (xml-lite-at-indentation-p))
-		 (and context
-		      (/= (point) (xml-lite-tag-start (car context)))
-                      (sgml-unclosed-tag-p (xml-lite-tag-name (car context)))))
-	     (setq tag-info (ignore-errors (xml-lite-parse-tag-backward))))
-      
-      ;; This tag may enclose things we thought were tags.  If so,
-      ;; discard them.
-      (while (and context
-                  (> (xml-lite-tag-end tag-info)
-                     (xml-lite-tag-end (car context))))
-        (setq context (cdr context)))
-           
-      (cond
-
-       ;; inside a tag ...
-       ((xml-lite-inside-tag-p tag-info here)
-	(push tag-info context))
-
-       ;; start-tag
-       ((eq (xml-lite-tag-type tag-info) 'open)
-	(cond
-	 ((null ignore)
-	  (if (and context
-                   (sgml-unclosed-tag-p (xml-lite-tag-name tag-info))
-		   (eq t (compare-strings
-			  (xml-lite-tag-name tag-info) nil nil
-			  (xml-lite-tag-name (car context)) nil nil t)))
-	      ;; There was an implicit end-tag.
-	      nil
-	    (push tag-info context)))
-	 ((eq t (compare-strings (xml-lite-tag-name tag-info) nil nil
-				 (car ignore) nil nil t))
-	  (setq ignore (cdr ignore)))
-	 (t
-	  ;; The open and close tags don't match.
-	  (if (not sgml-xml-mode)
-	      ;; Assume the open tag is simply not closed.
-	      (unless (sgml-unclosed-tag-p (xml-lite-tag-name tag-info))
-		(message "Unclosed tag <%s>" (xml-lite-tag-name tag-info)))
-	    (message "Unmatched tags <%s> and </%s>"
-		     (xml-lite-tag-name tag-info) (pop ignore))))))
-
-       ;; end-tag
-       ((eq (xml-lite-tag-type tag-info) 'close)
-	(if (sgml-empty-tag-p (xml-lite-tag-name tag-info))
-	    (message "Spurious </%s>: empty tag" (xml-lite-tag-name tag-info))
-	  (push (xml-lite-tag-name tag-info) ignore)))
-       ))
-
-    ;; return context
-    context))
-
-(defun xml-lite-show-context (&optional full)
-  "Display the current context.
-If FULL is non-nil, parse back to the beginning of the buffer."
-  (interactive "P")
-  (with-output-to-temp-buffer "*XML Context*"
-    (pp (save-excursion (xml-lite-get-context full)))))
-
-
-;; Editing shortcuts
-
-(defun xml-lite-insert-end-tag ()
-  "Insert an end-tag for the current element."
-  (interactive)
-  (let* ((context (save-excursion (xml-lite-get-context)))
-         (tag-info (car (last context)))
-         (type (and tag-info (xml-lite-tag-type tag-info))))
-
-    (cond
-
-     ((null context)
-      (error "Nothing to close"))
-
-     ;; inside a tag
-     ((xml-lite-inside-tag-p tag-info)
-      (insert (cond
-	       ((eq type 'open) 	" />")
-	       ((eq type 'comment)	" -->")
-	       ((eq type 'cdata)	"]]>")
-	       ((eq type 'jsp) 		"%>")
-	       ((eq type 'pi) 		"?>")
-	       (t 			">"))))
-
-     ;; inside an element
-     ((eq type 'open)
-      (insert "</" (xml-lite-tag-name tag-info) ">")
-      (indent-according-to-mode))
-
-     (t
-      (error "Nothing to close")))))
-
-(defun xml-lite-slash (arg)
-  "Insert ARG slash characters.
-Behaves electrically if `xml-lite-electric-slash' is non-nil."
-  (interactive "p")
-  (cond
-   ((not (and (eq (char-before) ?<) (= arg 1)))
-    (insert-char ?/ arg))
-   ((eq xml-lite-electric-slash 'indent)
-    (insert-char ?/ 1)
-    (indent-according-to-mode))
-   ((eq xml-lite-electric-slash 'close)
-    (delete-backward-char 1)
-    (xml-lite-insert-end-tag))
-   (t
-    (insert-char ?/ arg))))
-
-(provide 'xml-lite)
-
-;;; xml-lite.el ends here