]> git.eshelyaron.com Git - emacs.git/commitdiff
tildify.el: Better support for XML
authorMichal Nazarewicz <mina86@mina86.com>
Thu, 5 Jun 2014 14:41:01 +0000 (16:41 +0200)
committerMichal Nazarewicz <mina86@mina86.com>
Thu, 5 Jun 2014 14:41:01 +0000 (16:41 +0200)
* lisp/textmodes/tildify.el  (tildify-string-alist)
(tildify-ignored-environments-alist): Add `nxml-mode' to the list of
supported modes since `xml-mode' is no longer a thing but just an
alias to the former.  Also include comments and insides of tags in
`tildify-ignored-environments-alist' for XML modes.  Finally, since
XML does not define “&nbsp;”[1], use a numeric reference for
a no-break space (namely “&#160;”)

[1] XML specification defines only a handful of predefined entities.
    The list is at <http://www.w3.org/TR/REC-xml/#sec-predefined-ent>
    and includes only &lt;, &gt;, &amp;, &apos; and &quot; (meaning <,
    >, &, ' and " respectively).  This is in contrast to HTML and even
    XHTML which defined a whole bunch of entities including “&nbsp;”.

* automated/tildify-tests.el (tildify-test--example-html): Add support
for generating XML code, so that…
(tildify-test-xml) …test can be added to check handling of XML
documents.

lisp/ChangeLog
lisp/textmodes/tildify.el
test/ChangeLog
test/automated/tildify-tests.el

index f7f3d13d7008fc460557934bebfd6bb5a46264de..f8ed1dced82e0fb82f4cd63262d3f22584739db8 100644 (file)
@@ -1,5 +1,19 @@
 2014-06-05  Michal Nazarewicz  <mina86@mina86.com>
 
+       * textmodes/tildify.el (tildify-string-alist)
+       (tildify-ignored-environments-alist): Add `nxml-mode' to the list
+       of supported modes since `xml-mode' is no longer a thing but just
+       an alias to the former.  Also include comments and insides of tags
+       in `tildify-ignored-environments-alist' for XML modes.  Finally,
+       since XML does not define “&nbsp;”[1], use a numeric reference for
+       a no-break space (namely “&#160;”)
+
+       [1] XML specification defines only a handful of predefined entities.
+           The list is at <http://www.w3.org/TR/REC-xml/#sec-predefined-ent>
+           and includes only &lt;, &gt;, &amp;, &apos; and &quot; (meaning <,
+           >, &, ' and " respectively).  This is in contrast to HTML and even
+           XHTML which defined a whole bunch of entities including “&nbsp;”.
+
        * textmodes/tildify.el (tildify-pattern-alist)
        (tildify-string-alist, tildify-ignored-environments-alist):
        Improve defcustom's types by adding more tags explaining what each
index d61998a56d1a6f2809542246142e6a820cf10025..6dd471d49add7eeef088e3fa2e0a9a2cbee9ca68 100644 (file)
@@ -90,8 +90,9 @@ mode, the item for the mode SYMBOL is looked up in the alist instead."
     (tex-mode . latex-mode)
     (plain-tex-mode . latex-mode)
     (sgml-mode . "&nbsp;")
-    (xml-mode . sgml-mode)
     (html-mode . sgml-mode)
+    (xml-mode . "&#160;") ; XML does not define &nbsp; use numeric reference
+    (nxml-mode . xml-mode)
     (t . " "))
   "Alist specifying what is a hard space in the current major mode.
 
@@ -149,6 +150,10 @@ mode, the item for the mode SYMBOL is looked up in the alist instead."
      ("<! *--" . "-- *>")
      ("<" . ">"))
     (sgml-mode . html-mode)
+    (xml-mode
+     ("<! *--" . "-- *>")
+     ("<" . ">"))
+    (nxml-mode . xml-mode)
     (t nil))
   "Alist specifying ignored structured text environments.
 Parts of text defined in this alist are skipped without performing hard space
index 93ef0980c9ae57dd713ad782c092b61e29c62d43..38a4feb528f11124350b70d2e538318340940711 100644 (file)
@@ -1,5 +1,10 @@
 2014-06-05  Michal Nazarewicz  <mina86@mina86.com>
 
+       * automated/tildify-tests.el (tildify-test--example-html): Add support
+       for generating XML code, so that…
+       (tildify-test-xml) …test can be added to check handling of XML
+       documents.
+
        * automated/tildify-tests.el (tildify-test-find-env-group-index-bug):
        New test checking end-regex building when multiple environment pairs
        use integers to refer to capture groups.
index 6fee28b386277e2cd34b83945b52fd837d11678d..dd404fcac22cb3093c5224b19e6c12cf6f4faa3d 100644 (file)
           "consectetur adipiscing elit."))
 
 
-(defun tildify-test--example-html (sentence &optional with-nbsp)
+(defun tildify-test--example-html (sentence &optional with-nbsp is-xml)
   "Return an example HTML code.
 SENTENCE is placed where spaces should not be replaced with hard spaces, and
 WITH-NBSP is placed where spaces should be replaced with hard spaces.  If the
-latter is missing, SENTENCE will be used in all placeholder positions."
+latter is missing, SENTENCE will be used in all placeholder positions.
+If IS-XML is non-nil, <pre> tag is not treated specially."
   (let ((with-nbsp (or with-nbsp sentence)))
     (concat "<p>" with-nbsp "</p>\n"
-            "<pre>" sentence "</pre>\n"
+            "<pre>" (if is-xml with-nbsp sentence) "</pre>\n"
             "<! -- " sentence " -- >\n"
             "<p>" with-nbsp "</p>\n"
             "<" sentence ">\n")))
@@ -77,6 +78,14 @@ after `tildify-buffer' is run."
                         (tildify-test--example-html sentence sentence)
                         (tildify-test--example-html sentence with-nbsp))))
 
+(ert-deftest tildify-test-xml ()
+  "Tests tildification in an XML document"
+  (let* ((sentence (tildify-test--example-sentence " "))
+         (with-nbsp (tildify-test--example-sentence "&#160;")))
+    (tildify-test--test '(nxml-mode)
+                        (tildify-test--example-html sentence sentence t)
+                        (tildify-test--example-html sentence with-nbsp t))))
+
 
 (defun tildify-test--example-tex (sentence &optional with-nbsp)
   "Return an example (La)Tex code.