[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/nxml/nxml-util.el,v
From: |
Michael W. Olson |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/nxml/nxml-util.el,v |
Date: |
Fri, 06 Jun 2008 16:14:50 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Michael W. Olson <mwolson> 08/06/06 16:14:49
Index: nxml-util.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/nxml/nxml-util.el,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- nxml-util.el 6 May 2008 04:25:56 -0000 1.5
+++ nxml-util.el 6 Jun 2008 16:14:49 -0000 1.6
@@ -24,6 +24,35 @@
;;; Code:
+(defconst nxml-debug nil
+ "enable nxml debugging. effective only at compile time")
+
+(eval-when-compile
+ (require 'cl))
+
+(defsubst nxml-debug (format &rest args)
+ (when nxml-debug
+ (apply #'message format args)))
+
+(defmacro nxml-debug-change (name start end)
+ (when nxml-debug
+ `(nxml-debug "%s: %S" ,name
+ (buffer-substring-no-properties ,start ,end))))
+
+(defmacro nxml-debug-set-inside (start end)
+ (when nxml-debug
+ `(let ((overlay (make-overlay ,start ,end)))
+ (overlay-put overlay 'face '(:background "red"))
+ (overlay-put overlay 'nxml-inside-debug t)
+ (nxml-debug-change "nxml-set-inside" ,start ,end))))
+
+(defmacro nxml-debug-clear-inside (start end)
+ (when nxml-debug
+ `(loop for overlay in (overlays-in ,start ,end)
+ if (overlay-get overlay 'nxml-inside-debug)
+ do (delete-overlay overlay)
+ finally (nxml-debug-change "nxml-clear-inside" ,start ,end))))
+
(defun nxml-make-namespace (str)
"Return a symbol for the namespace URI STR.
STR must be a string. If STR is the empty string, return nil.
@@ -43,6 +72,15 @@
(defconst nxml-xmlns-namespace-uri
(nxml-make-namespace "http://www.w3.org/2000/xmlns/"))
+(defmacro nxml-with-degradation-on-error (context &rest body)
+ (if (not nxml-debug)
+ (let ((error-symbol (make-symbol "err")))
+ `(condition-case ,error-symbol
+ (progn ,@body)
+ (error
+ (nxml-degrade ,context ,error-symbol))))
+ `(progn ,@body)))
+
(defmacro nxml-with-unmodifying-text-property-changes (&rest body)
"Evaluate BODY without any text property changes modifying the buffer.
Any text properties changes happen as usual but the changes are not treated as
- [Emacs-diffs] Changes to emacs/lisp/nxml/nxml-util.el,v,
Michael W. Olson <=