From d7896a6f773dc4ae4e1b56c34b6708fe2bc5610a Mon Sep 17 00:00:00 2001
From: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Sat, 16 Jan 2016 14:03:29 -0500
Subject: * lisp/nxml: Use standard completion; it also works for company-mode

* lisp/nxml/nxml-mode.el (nxml-complete): Obsolete.
(nxml-completion-at-point-function): Remove.
(nxml-mode): Don't set completion-at-point-functions.
* lisp/nxml/rng-nxml.el (rng-nxml-mode-init): Set it here instead.
(rng-completion-at-point): Rename from rng-complete and mark it
non-interactive.  It is now to be used as completion-at-point-function.
(rng-complete-tag, rng-complete-end-tag, rng-complete-attribute-name)
(rng-complete-attribute-value): Don't perform completion, but return
completion data instead.
(rng-complete-qname-function, rng-generate-qname-list): Add a few
arguments, previously passed via dynamic coping.
(rng-strings-to-completion-table): Rename from
rng-strings-to-completion-alist.  Don't return an alist.  Don't both
sorting and uniquifying.

* lisp/nxml/rng-util.el (rng-complete-before-point): Delete function.
(rng-completion-exact-p, rng-quote-string): Delete functions.

* lisp/nxml/rng-valid.el (rng-recover-start-tag-open)
(rng-missing-attributes-message, rng-missing-element-message)
(rng-mark-missing-end-tags): Use explicit ".." in formats rather than
calling rng-quote-string everywhere.
---
 lisp/nxml/rng-valid.el | 35 +++++++++++++++--------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

(limited to 'lisp/nxml/rng-valid.el')

diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el
index 9b0b4df67f8..946bf791ff8 100644
--- a/lisp/nxml/rng-valid.el
+++ b/lisp/nxml/rng-valid.el
@@ -1138,9 +1138,8 @@ as empty-element."
 		(rng-match-start-tag-open required)
 		(rng-match-after)
 		(rng-match-start-tag-open name))
-	   (rng-mark-invalid (concat "Missing element "
-				     (rng-quote-string
-				      (rng-name-to-string required)))
+	   (rng-mark-invalid (format "Missing element \"%s\""
+                                     (rng-name-to-string required))
 			     xmltok-start
 			     (1+ xmltok-start)))
 	  ((and (rng-match-optionalize-elements)
@@ -1177,16 +1176,14 @@ as empty-element."
     (cond ((not required-attributes)
 	   "Required attributes missing")
 	  ((not (cdr required-attributes))
-	   (concat "Missing attribute "
-		   (rng-quote-string
-		    (rng-name-to-string (car required-attributes) t))))
+	   (format "Missing attribute \"%s\""
+                   (rng-name-to-string (car required-attributes) t)))
 	  (t
-	   (concat "Missing attributes "
+	   (format "Missing attributes \"%s\""
 		   (mapconcat (lambda (nm)
-				(rng-quote-string
-				 (rng-name-to-string nm t)))
+				 (rng-name-to-string nm t))
 			      required-attributes
-			      ", "))))))
+			      "\", \""))))))
 
 (defun rng-process-end-tag (&optional partial)
   (cond ((not rng-open-elements)
@@ -1229,8 +1226,7 @@ as empty-element."
 (defun rng-missing-element-message ()
   (let ((element (rng-match-required-element-name)))
     (if element
-	(concat "Missing element "
-		(rng-quote-string (rng-name-to-string element)))
+	(format "Missing element \"%s\"" (rng-name-to-string element))
       "Required child elements missing")))
 
 (defun rng-recover-mismatched-end-tag ()
@@ -1258,17 +1254,16 @@ as empty-element."
 
 (defun rng-mark-missing-end-tags (missing)
   (rng-mark-not-well-formed
-   (format "Missing end-tag%s %s"
+   (format "Missing end-tag%s \"%s\""
 	   (if (null (cdr missing)) "" "s")
 	   (mapconcat (lambda (name)
-			(rng-quote-string
-			 (if (car name)
-			     (concat (car name)
-				     ":"
-				     (cdr name))
-			   (cdr name))))
+                        (if (car name)
+                            (concat (car name)
+                                    ":"
+                                    (cdr name))
+                          (cdr name)))
 		      missing
-		      ", "))
+		      "\", \""))
    xmltok-start
    (+ xmltok-start 2)))
 
-- 
cgit v1.2.3