Subject: [patch] lexical binding broke part of sgml-mode.el
From: Stephen Berman <[email-masked]>
To: [email-masked]
Date: Thu, 25 Jun 2015 12:42:35 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

The following change broke some functionality in sgml-mode.el:

   commit 84e0b7dad6f1a8e53261f9b96f5a9080fea681a4
   Author: Stefan Monnier <[email-masked]>
   Date:   Mon Apr 13 15:51:15 2015 -0400
   [...]
       * lisp/textmodes/sgml-mode.el: Use lexical-binding.

To see the bug, visit an (X)HTML file and insert a tag (`C-c C-t') that
takes an attribute, such `p' or `a'.

The following patch fixes the problems I have encountered, but I'm not
sure if further adjustments are needed, so I'll defer to whoever knows
the code better about whether to commit it as is.

2015-06-25  Stephen Berman  <[email-masked]>

	* sgml-mode.el (sgml-attributes, sgml-value): Make them work with
	lexical binding.

diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 2ffe9c1..dbb9662 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -759,9 +759,9 @@ If QUIET, do not print a message when there are no attributes for TAG."
 	    (insert ?\s)
 	    (insert (funcall skeleton-transformation-function
 			     (setq attribute
-				   (skeleton-read '(completing-read
+				   (skeleton-read `(completing-read
 						    "Attribute: "
-						    alist)))))
+						    ',alist)))))
 	    (if (string= "" attribute)
 		(setq i 0)
 	      (sgml-value (assoc (downcase attribute) alist))
@@ -1177,13 +1177,13 @@ See `sgml-tag-alist' for info about attribute rules."
     (if (and (eq (car alist) t) (not sgml-xml-mode))
 	(when (cdr alist)
 	  (insert "=\"")
-	  (setq alist (skeleton-read '(completing-read "Value: " (cdr alist))))
+	  (setq alist (skeleton-read `(completing-read "Value: " (cdr ',alist))))
 	  (if (string< "" alist)
 	      (insert alist ?\")
 	    (delete-char -2)))
       (insert "=\"")
       (if (cdr alist)
-          (insert (skeleton-read '(completing-read "Value: " alist)))
+          (insert (skeleton-read `(completing-read "Value: " ',alist)))
         (when (null alist)
           (insert (skeleton-read '(read-string "Value: ")))))
       (insert ?\"))))