-;;; nxml-util.el --- utility functions for nxml-*.el
+;;; nxml-util.el --- utility functions for nxml-*.el -*- lexical-binding:t -*-
-;; Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc.
;; Author: James Clark
-;; Keywords: XML
+;; Keywords: wp, hypermedia, languages, XML
;; This file is part of GNU Emacs.
`(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.
(nxml-make-namespace "http://www.w3.org/2000/xmlns/"))
(defmacro nxml-with-degradation-on-error (context &rest body)
+ (declare (indent 1) (debug t))
(if (not nxml-debug)
(let ((error-symbol (make-symbol "err")))
`(condition-case ,error-symbol
(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
-modifications to the buffer."
- (let ((modified (make-symbol "modified")))
- `(let ((,modified (buffer-modified-p))
- (inhibit-read-only t)
- (inhibit-modification-hooks t)
- (buffer-undo-list t)
- (deactivate-mark nil)
- ;; Apparently these avoid file locking problems.
- (buffer-file-name nil)
- (buffer-file-truename nil))
- (unwind-protect
- (progn ,@body)
- (unless ,modified
- (restore-buffer-modified-p nil))))))
-
-(put 'nxml-with-unmodifying-text-property-changes 'lisp-indent-function 0)
-(def-edebug-spec nxml-with-unmodifying-text-property-changes t)
-
(defmacro nxml-with-invisible-motion (&rest body)
"Evaluate body without calling any point motion hooks."
+ (declare (indent 0) (debug t))
`(let ((inhibit-point-motion-hooks t))
,@body))
-(put 'nxml-with-invisible-motion 'lisp-indent-function 0)
-(def-edebug-spec nxml-with-invisible-motion t)
-
(defun nxml-display-file-parse-error (err)
(let* ((filename (nth 1 err))
(buffer (find-file-noselect filename))
(signal (or error-symbol 'nxml-file-parse-error)
(list file pos message)))
-(put 'nxml-file-parse-error
- 'error-conditions
- '(error nxml-file-parse-error))
-
-(put 'nxml-parse-file-error
- 'error-message
- "Error parsing file")
+(define-error 'nxml-error nil)
+(define-error 'nxml-file-parse-error "Error parsing file" 'nxml-error)
(provide 'nxml-util)